Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中以编程方式关闭shift键_Android_Keyboard - Fatal编程技术网

在android中以编程方式关闭shift键

在android中以编程方式关闭shift键,android,keyboard,Android,Keyboard,我正在开发一个android应用程序(键盘驱动程序),首先我将蓝牙键盘与android设备连接,在成功连接Inputmethod服务后,我将收到按键并将其发送到当前打开的编辑器。问题是我无法理解如何在android中打开/关闭caps lock和shift key功能 private BroadcastReceiver key3Receiver = new BroadcastReceiver() { @Override public void onReceive(Con

我正在开发一个android应用程序(键盘驱动程序),首先我将蓝牙键盘与android设备连接,在成功连接Inputmethod服务后,我将收到按键并将其发送到当前打开的编辑器。问题是我无法理解如何在android中打开/关闭caps lock和shift key功能

    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));
        }

    }
};
private BroadcastReceiver key3Receiver=new BroadcastReceiver(){
@凌驾
公共void onReceive(上下文、意图){
int key=Integer.parseInt(intent
.getStringExtra(BluezService.COLONY_键按_键));
int action=intent.getIntExtra(BluezService.EVENT\u KEYPRESS\u action,
KeyEvent.ACTION_DOWN);
Log.d(“+++++键已接收”,Integer.toString(键));
InputConnection ic=getCurrentInputConnection();
long eventTime=SystemClock.uptimeMillis();
如果(键==2)
{
if(checkEnable==true){
ic.clearMetaKeyStates(KeyEvent.META\u SHIFT\u LEFT\u ON);
Log.d(“元钥匙”、“关闭”);
checkEnable=false;
返回;
}否则{
Log.d(“元钥匙”,“打开”);
checkEnable=true;
}
}
//*********黑客
如果(键==8)
{
键=127;
}
如果(键<130){
ic.sendKeyEvent(新的KeyEvent(eventTime、eventTime、action、COLONYKEYCODE[key],
0,KeyEvent.META_SHIFT_ON,0,0,KeyEvent.FLAG_软键盘);
}
}
};

我找到了解决方案,它可能会帮助别人。我做错了什么,我调用KeyEvent.ACTION\u向下,而忘记调用KeyEvent.ACTION\u在ic.sendKeyEvent(…)中执行操作,这就是为什么它没有释放shift键

请不要重复你已经发布的问题。