I did some fine tuning to the Sudoku Solver. The input grid is a subclass of EditText, and I override the onTouchEvent method to select a cell. After that I used to return false. I changed it to return super.onTouchEvent so that it brings up the soft keyboard when you tap anywhere on the grid.
I also changed the way I handle key events. Before I used getDisplayLabel() to determine the letter typed, which is incorrect since it only reflect the label on the keyboard, ignore key combinations. Now I use getNumber(), which confusingly also returns characters that are not numbers.