0

使用以下代码,我可以列出连接到 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 键盘。你能帮我解决这个问题吗?

谢谢 :)

编辑

我想要这样的东西:

@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',...

4

1 回答 1

0

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

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

于 2013-02-05T08:21:19.993 回答