0

最初に Bluetooth キーボードを Android デバイスに接続する Android アプリケーション (キーボード ドライバー) を開発しています。問題は、Android で Caps Lock と Shift キーの機能をオン/オフする方法を理解できないことです。

    private BroadcastReceiver key3Receiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        int key = Integer.parseInt(intent
                .getStringExtra(BluezService.COLONY_KEYPRESS_KEY));
        int action = intent.getIntExtra(BluezService.EVENT_KEYPRESS_ACTION,
                KeyEvent.ACTION_DOWN);
        Log.d("++++ key recieved   ", Integer.toString(key));

        InputConnection ic = getCurrentInputConnection();
        long eventTime = SystemClock.uptimeMillis();

        if(key==2)
        {
            if(checkEnable==true){
                ic.clearMetaKeyStates(KeyEvent.META_SHIFT_LEFT_ON);
                Log.d("metakey", "turn off");
                checkEnable=false;
                return;
            }else{
                Log.d("metakey", "turn on");
                checkEnable=true;
            }
        }
        // ********* Hacks
        if(key==8)
        {
            key=127;
        }



        if (key < 130) {

            ic.sendKeyEvent(new KeyEvent(eventTime, eventTime, action,COLONYKEYCODE[key],
                    0, KeyEvent.META_SHIFT_ON, 0, 0, KeyEvent.FLAG_SOFT_KEYBOARD));
        }

    }
};
4

1 に答える 1

2

誰かを助けるかもしれない解決策を見つけました。私が間違っていたこと、私は KeyEvent.ACTION_DOWN を呼び出し、 ic.sendKeyEvent(...) のアクションのために KeyEvent.ACTION_UP を呼び出すのを忘れました。それがシフトキーを解放していなかった理由です。

于 2012-05-31T17:29:44.293 に答える