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

Posted

技术标签:

【中文标题】在android中以编程方式关闭shift键【英文标题】:turn off shift key programatically in android 【发布时间】:2012-06-04 23:08:19 【问题描述】:

我正在开发一个 android 应用程序(键盘驱动程序),首先我将蓝牙键盘与 android 设备连接,在我的 Inputmethod 服务中成功连接后,我正在接收按键并将其发送到当前打开的编辑器。问题是我无法弄清楚如何在 android 中打开/关闭大写锁定和 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));
        

    
;

【问题讨论】:

请不要重复您已经发布的问题。 ***.com/questions/10794848/… 【参考方案1】:

我找到了可能对某人有所帮助的解决方案。我做错了什么,我调用 KeyEvent.ACTION_DOWN 并忘记调用 KeyEvent.ACTION_UP 以在 ic.sendKeyEvent(...) 中执行操作,这就是它没有释放 shift 键的原因。

【讨论】:

以上是关于在android中以编程方式关闭shift键的主要内容,如果未能解决你的问题,请参考以下文章

应用程序运行时如何在android中以编程方式关闭通知?

如何在android中以编程方式关闭3G数据连接?

如何在 android Pie 和 UP 中以编程方式打开/关闭扬声器

当app运行时,如何在android中以编程方式关闭通知?

如何在android中以编程方式上传到服务器之前减小视频的大小[关闭]

在 Android 中以编程方式打开位置提供程序