java - dispatchKeyEvent 不会在 Unity 中触发 - 本机 Android 插件
问题描述
我想在Android中触发onKeyUp或者dispatchKeyEvent,给keyPress的Unity3D发送消息
我制作了一个Java原生插件:
public class VolumeKeyClass extends Activity {
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Log.d("Unity","onKeyUp UP");
int action = event.getAction();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_DOWN) {
Log.d("test", "Volume UP pressed! " + event);
UnityPlayer.UnitySendMessage("MainController","logStatus","Volume up!!");
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
Log.d("test", "Volume DOWN pressed! " + event);
UnityPlayer.UnitySendMessage("MainController","logStatus","Volume Down!");
}
return true;
default:
return super.dispatchKeyEvent(event);
}
}
已经测试了Unity和插件之间的通信,可以正确登录消息,但是onKeyUp和dispatchKeyEvent都没有触发发送消息,Logcat也没有。(目标 API 15,冰淇淋三明治)
解决方案
您必须像这样使用OnKeyListener:
public class VolumeKeyClass extends Activity {
void InitializeKeyListener ()
{
OnKeyListener keyListener = new OnKeyListener() {
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Log.d("Unity","onKeyUp UP");
int action = event.getAction();
switch (keyCode) {
case KeyEvent.KEYCODE_VOLUME_UP:
if (action == KeyEvent.ACTION_DOWN) {
Log.d("test", "Volume UP pressed! " + event);
UnityPlayer.UnitySendMessage("MainController","logStatus","Volume up!!");
}
return true;
case KeyEvent.KEYCODE_VOLUME_DOWN:
if (action == KeyEvent.ACTION_DOWN) {
Log.d("test", "Volume DOWN pressed! " + event);
UnityPlayer.UnitySendMessage("MainController","logStatus","Volume Down!");
}
return true;
default:
return super.dispatchKeyEvent(event);
}
};
}
}
推荐阅读
- html - 弹出菜单的三角形指向箭头
- javascript - 如何在下一个输入元素中获取选择选项数据
- mysql - MySQL - 比较同一张表中的不同键和值
- firebase - 将 Chrome 扩展程序连接到 Firebase RTB 时出错:“firebase.database 不是函数”
- android - JADX 从混淆的应用程序中获取类名
- android - Android 构建停止使用 ClassNotFoundException
- typo3-9.x - 如何始终从 TYPO3 后端的图像中激活 alt 标签?
- python - 使用 Python 将多个 xml 文件/链接转换为 JSON?
- java - 需要从另一个VM访问API(https://localhost:8080/er/heartbeats)
- python - 如何编译单个python脚本(不是exe)?