I am doing some research on string matching algorithms. One of the most usable I came across is the one my cellphone uses (android 2.3.4 on SE xPeria neo v).
This excellent information retrieval book has a detailed section on Levenstein distance, including weighted variations. The weights could then be taken to be the distance between keys on your keypad.
I pulled the Android source code and looked for spell checking. I found this directory which seems to contain the sources you are looking for:
packages/inputmethods/LatinIME/java/src/com/android/inputmethod/latin/
The file spellcheck/AndroidSpellCheckerService.java
looks like the one doing all the heavy work, but Suggest.java
also seems to be involved in some way.