2012-05-30 26 views
0

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

    } 
}; 
+0

请不要重复您已发布的问题。 http://stackoverflow.com/questions/10794848/turn-on-off-caps-lock-and-shift-key-programatically-on-android –

回答

2

我发现它可能有助于某人的解决方案。我做错了什么,我调用KeyEvent.ACTION_DOWN,并忘记调用KeyEvent.ACTION_UP来处理ic.sendKeyEvent(...)中的操作,这就是为什么它没有释放shift键。