You can easily see how Google implemented the keyboard by downloading the Google Wallet APK (or by rooting your phone and pulling the APK off) and unpacking/decompiling it with your tool of choice (e.g. Procyon, CFR, JD, etc.). I can only speculate, but I think they did this to minimize the possibility of a third-party keyboard app logging the input, and so that they can "shred" the PIN in memory as soon as it has been used.
The keypad is just a bunch of buttons laid out as a table/grid, and the buttons are customized to have the subscript effect (i.e. 2ABC
) using SpannableStrings.
After decompiling, you can find what you're interested in by looking at the com.google.android.apps.wallet.pin
package, specifically the PinButton
class. Also, look at the /res/layout/pin_view.xml
layout and its includes (pin_fields.xml
and pin_pad.xml
).