首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在android中编程关闭shift键

在android中编程关闭shift键
EN

Stack Overflow用户
提问于 2012-05-31 01:07:31
回答 1查看 1.4K关注 0票数 0

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

代码语言:javascript
复制
    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));
        }

    }
};
EN

回答 1

Stack Overflow用户

发布于 2012-06-01 01:29:44

我找到了解决方案,它可能会对某人有所帮助。我的错误之处在于,我调用了KeyEvent.ACTION_DOWN,却忘记了在ic.sendKeyEvent(...)中调用KeyEvent.ACTION_UP来执行操作,这就是为什么它没有释放Shift键。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10820959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档