【问题标题】:App won't close (Glass, Unity3d)应用程序不会关闭(Glass,Unity3d)
【发布时间】: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


【解决方案1】:

这并不是真正的解决方案,而是一种解决方法:

使用contextual voice commands 工作正常,即使UnityPlayer-object 阻止触摸板输入。

我现在通过“OK glass - quit”关闭我的应用程序


如果有人知道如何正确解决它 - 我会测试、验证并接受你的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-08
    • 2015-07-03
    • 2012-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多