【发布时间】:2015-10-05 15:03:55
【问题描述】:
我有一个从 Unity3d 项目生成的 Android Studio 项目。
我想在 Google Glass 上运行我的项目,所以我遵循了本教程 (http://forum.unity3d.com/threads/how-to-build-for-google-glass.219558/)。
到目前为止一切正常,但我无法通过向下滑动关闭应用程序,即使我将其添加到 UnityPlayerActivity.java:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){ finish(); }
return true;
}
同样,其他一切都很好。
第一次更新:
我在平板电脑上试用了该应用程序 - 就像在 Glass 上一样,“返回”按钮不起作用。
然后我在 Unity 中实现了这个:
if(Input.GetKeyDown(KeyCode.Escape)){
Application.Quit();
}
现在它可以在平板电脑上使用,但 Glass 的情况没有改变。
第二次更新:
这也不起作用:this.finishAffinity();
第三次更新:
我尝试在Start()-方法中使用这个协程关闭我的 Unity 应用程序:
IEnumerator waitAndExit(int sec)
{
yield return new WaitForSeconds(sec);
Application.Quit();
}
这成功关闭了我的应用程序,所以问题似乎是这样的:
Unity 无法将在 Google Glass 上向下滑动识别为 Input 中的按键事件,并且UnityPlayer 对象似乎从 android 获取所有输入。
我怎样才能阻止它?
我不想用 java 处理触摸板事件,但我最初的想法 - 覆盖 onKeyDown - 没有奏效。
第四次更新:
我尝试识别this answer 中的手势并将其添加到我的onCreate():
mUnityPlayer.setFocusable(false);
//mUnityPlayer.requestFocus();
不幸的是,它没有帮助。
【问题讨论】:
-
您是否调试过该方法是否以您期望的参数调用?如果
finish()被调用,它会做什么? -
记录您的代码并检查那里发生了什么或者它是否真的到达那里。你确定滑动手势会调用“KEYCODE_BACK”吗?
-
@Thomas 我 100% 确定
finish()有效,因为我单独对其进行了测试,Toast.makeText(...).show()也不起作用。 -
@MarianoZorrilla 根据 GDK 文档,是的!而且我还尝试检测手势(我的问题的第四次更新)。它没有用。
标签: java android unity3d google-glass