Android从特定的inputDevice获取文本

时间:2013-01-03 20:26:36

标签: android

使用以下代码,我可以列出连接到Android设备的inputDevices。

public void onClick(View v) {
    if(v==mConnect){
        Toast.makeText(MainActivity.this, "TESTE", Toast.LENGTH_LONG).show();
        Log.d("INPUTDEVICES", "111111111111111111111");
        int[] teste;
        teste = new int[10];

        for(int i=0;i<5;i++){
        teste[i]=-1;
        }

        teste = InputDevice.getDeviceIds();
        for(int i=0;i<5;i++){
            Log.d("TESTE", Integer.toString(teste[i]));
            Log.d("TESTEE",InputDevice.getDevice(teste[i]).getName());
        }


    }
}

D/INPUTDEVICES( 6572): 111111111111111111111
D/TESTE   ( 6572): 1
D/TESTEE  ( 6572): Phone_key
D/TESTE   ( 6572): 3
D/TESTEE  ( 6572): ssd253x-ts
D/TESTE   ( 6572): 4
D/TESTEE  ( 6572): sun4i-keyboard
D/TESTE   ( 6572): 5
D/TESTEE  ( 6572): axp20-supplyer
D/TESTE   ( 6572): 8
D/TESTEE  ( 6572): Logitech USB Keyboard

现在我想等待来自特定输入设备的文本,在这种情况下是输入设备8 - Logitech USB Keyboard。 你能帮帮我吗?

谢谢:)

修改

我想要这样的东西:

@Override
public boolean dispatchKeyEvent(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
    Toast.makeText(UITestsActivity.this,
               "YOU CLICKED ENTER KEY",
                Toast.LENGTH_LONG).show();
        return true;
    }
    return super.dispatchKeyEvent(e);
};

但适用于所有键盘键,如'a','b','c',...

1 个答案:

答案 0 :(得分:0)

您可以使用KeyEvent类中的方法getDeviceId()来过滤所需的键盘:

http://developer.android.com/reference/android/view/KeyEvent.html#getDeviceId%28%29