asysbang
标题:
添加自定义的虚拟按键
[打印本页]
作者:
admin
时间:
2015-7-13 17:46
标题:
添加自定义的虚拟按键
默认的虚拟按键位置有“返回”,"HOME","最近使用"3个虚拟按键
一些厂商会添加“音量+/-”和“截屏”,“下载管理”
这个是在systemui.apk里面
navigation_bar.xml中添加一项KeyButtonView
可以通过systemui:keyCode="3" 这个属性来设置点击时发送的按键消息
KeyButtonView.java中可以看到
解析的mCode值是通过sendEvent
void sendEvent(int action, int flags, long when) {
final int repeatCount = (flags & KeyEvent.FLAG_LONG_PRESS) != 0 ? 1 : 0;
final KeyEvent ev = new KeyEvent(mDownTime, when, action, mCode, repeatCount,
0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
flags | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
InputDevice.SOURCE_KEYBOARD);
InputManager.getInstance().injectInputEvent(ev,
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
}
如果其他应用也想发送back或者home按键消息
可以在NavigationBarView.java中参考watchForDevicePolicyChanges函数添加一个自定义的receiver
然后
((KeyButtonView)getBackButton()).sendEvent(KeyEvent.ACTION_DOWN, 0);
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
((KeyButtonView)getBackButton()).sendEvent(KeyEvent.ACTION_UP, 0);
需要把sendEvent方法改成public
欢迎光临 asysbang (http://asysbang.com/)
Powered by Discuz! X2.5