我正在开发一个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));
}
}
};发布于 2012-06-01 01:29:44
我找到了解决方案,它可能会对某人有所帮助。我的错误之处在于,我调用了KeyEvent.ACTION_DOWN,却忘记了在ic.sendKeyEvent(...)中调用KeyEvent.ACTION_UP来执行操作,这就是为什么它没有释放Shift键。
https://stackoverflow.com/questions/10820959
复制相似问题