APP roda normalmente no Emulador mas não no Celular

Implementei dentro do método OnCreate da minha activity principal, um evento chamado setOnKeyListenner. Com isso, ao pressionar qualquer tecla, é realizado um cálculo que retorna a conversão de bases do valor informado e o retorno é o resultado deste cálculo para o edittext correspondente.

O problema é que no emulador, tudo funciona corretamente, porém no aparelho, quando digito qualquer valor independente de qual campo, funciona, e o cálculo é realizado normalmente, porém ao realizar a operação de apagar o valor informado, um por um, o cálculo não é atualizado e o valor de retorno nos outros edittext’s não aparece.

Exemplo:
No campo Binario, informo o seguinte valor: 1001
Com isso, os campos “Decimal, Octal e Hexadecimal” recebem o resultado da conversão.
PROBLEMA:
O problema está quando apago cada um dos valor informados no campo Binário(1001). Ou seja, não está sendo atualizado nos demais campos o novo valor.

Meu Código:

[code]public class MainActivity extends Activity {
private EditText cpBin;

protected void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    setContentView(R.layout.activity_main);  

            cpBin = (EditText) findViewById(R.id.editBin);  


    cpBin.setOnKeyListener(new View.OnKeyListener() {  

        @Override  
        public boolean onKey(View v, int keyCode, KeyEvent event) {  
            // TODO Auto-generated method stub  
            String dado = cpBin.getText().toString();  
            if (dado == null || dado.equals("")) {  
                limparCampos();  
            } else {  
                cpDec.setText(String.valueOf(objCalc.converteBinarioParaDecimal(dado)));  
                cpHex.setText(objCalc.converteBinarioParaHexadecimal(dado));  
                cpOct.setText(objCalc.converterBinarioParaOctal(dado));  
            }  
            return false;  
        }  
    });  

}
}[/code]

Tem certeza que o evento do key está sendo disparado até no BACKSPACE?