android - 添加缺少的按钮映射
问题描述
我正在为 android 创建一个 qml 应用程序,并在尝试捕获按钮按下时遇到以下问题:
当我按下volume up
,volume down
或home
按钮时。以下截图:0
这意味着关键事件是未知的(基于QKeyEvent 文档)
Keys.onPressed: {
console.log(event.key);
}
按下按钮时,我还在 logcat 中看到此警告home
:
Unhandled key code 3 !
或按下按钮时出现此警告volume up
:
Unhandled key code 252 !
我的问题:如何为这个键码添加处理程序/映射器?
示例我想将键码 3 映射到 Qt.Key_Home 以便接收正确的键事件Keys.onPressed
解决方案
我能够通过以下方式将设备使用的关键代码“重新映射”到 Qt 期望的关键代码:
- 复制
$QT/src/android/java/src/org/qtproject/qt5/android/binding/
到您的项目文件夹中。 - 更改
ANDROID_PACKAGE_SOURCE_DIR
您.pro
的指向此文件夹。 - 重命名新
android/binding/
文件夹中所有类的包名以适合 qml 应用程序的包名。 添加您的自定义映射代码
onKeyDown()
:@Override public boolean onKeyDown(int keyCode, KeyEvent event) { //do the remapping for the home button if(keyCode == 3) { keyCode = 122; } if (QtApplication.m_delegateObject != null && QtApplication.onKeyDown != null) return (Boolean) QtApplication.invokeDelegateMethod(QtApplication.onKeyDown, keyCode, event); else return super.onKeyDown(keyCode, event); }
推荐阅读
- azure-devops - 天蓝色管道中的组名称变量可以是动态的吗?
- java - Flink流 - 使用StreamingFileSink时更改部分文件名?
- fortran - C_FUNLOC 的结果是标量还是数组?
- javascript - 这是什么符号?someFunction([{key: value}, {key: value})
- vba - 不能使用 ADODB.Connect 删除 SQLite 数据库中的查询
- javascript - 如何更改 JavaScript 中按钮的颜色以应用于另一个函数?
- javascript - 将框架升级到 .net 4.6 后,javascript 停止工作
- c# - 尝试打开第二个工作簿返回 null
- vuejs2 - Vue good table 用边框显示单元格内的数据
- python-3.x - 如何将地理编码输出存储在原始数据框中?