Google 玻璃:设计 yes/no 选项菜单

Google Glass: Design yes/no option menu

我想设计一个带有选项 "yes" 和 "no" 的菜单。

它看起来像本地 Glassware 中的共享选项,当人们在菜单中触摸 "share" 时,Glass 会要求用户选择 "facebook" 或 "Google+"。

我想设计我的菜单,功能相同,记录用户的选择,作为其他功能的输入。

但我对 Android 还是个新手,所以我不太清楚该怎么做。

我 Googled 发现了一些类似的问题:

我认为这是某种嵌套菜单,但这个问题说不应该在 Glass 中嵌套。

Can you create more than one level of nested timeline cards on Glass?

还有另一个类似的解决方案

http://www.androidhive.info/2014/10/how-to-create-google-glass-options-menu/

但程序中使用了多个activity,适合比"yes"/"no"选择更复杂的操作。

所以我想我 运行 并以错误的方式搜索了嵌套菜单。谁能给我一个最终的答案,我是否可以执行此操作。如果可以,它的确切名称是什么,这样我就可以 Google 实现方法。

谢谢

请查看 Google 关于如何向 Glass 应用程序添加菜单的官方文档,它将指导您如何继续为 Glass 设计菜单选项,而无需遵循步骤很多:

  • 如果您想在 Glass 活动中添加 yes/no 选项,请创建菜单资源,然后在用户操作时显示它们,例如在 activity 获得焦点时点击。
  • 请注意,Glass 菜单不支持可勾选的项目。
  • 为每个菜单项提供一个 50 × 50 像素的菜单项图标。

这是 OK 选项的代码片段:

<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/Ok_menu_item"
    android:title="@string/Ok"                <!-- imperative verb -->
    android:icon="@drawable/ic_done_50" />   <!-- white in color on
                                                 transparent background
                                                 -->
   </menu>

菜单中的回调按以下方式处理:

  • onCreateOptionsMenu() 使 XML 菜单资源膨胀。
  • onPrepareOptionsMenu() 根据需要显示或隐藏菜单项。例如,您可以根据用户的操作显示不同的菜单项。
  • onOptionsItemSelected() 处理用户选择。

这里是 Java 代码的一小段代码:

    public class MyActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.stopwatch, menu);
        return true;
    }

    @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        // Implement if needed
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection. Menu items typically start another
        // activity, start a service, or broadcast another intent.
        switch (item.getItemId()) {
            case R.id.stop:
                startActivity(new Intent(this,
                StopStopWatchActivity.class));
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }
}

要显示菜单,请在需要时调用 openOptionsMenu(),例如在触摸板上点击。以下示例检测 activity 上的点击手势,然后调用 openOptionsMenu()。

    public class MainActivity extends Activity {
    // ...
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
          if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
              openOptionsMenu();
              return true;
          }
          return super.onKeyDown(keyCode, event);
    }
}

希望这会有所帮助!!

您应该尝试利用 Google Glass 的优势;在这种情况下,我建议您使用语音识别来获得像这样的简单的是或否用户响应 --

UI 图

(Live card)--> app launcher
|                      |
Share                  Stop
 | onGesture activate    |
 | voice recognition    terminate the app
 | to take user input
 onActivityResult()
   if it's "facebook" then go share on FB
   if it's "Google plus" then go share on G+

这里引用了 Google Glass 开发者网站 - Voice Recognition

该部分有关于如何实现语音识别的漂亮 easy-to-understand 教程。

下面是我的 Glass 应用程序的示例 UI 图。第一个菜单项接受语音命令并要求用户确认是否正确:例如,询问用户 "Did you say 'carrot'? " 并输入 'yes' 或 'no' 以确定以下内容动作。

最后,如果喜欢,请看一看my HelloWorld Glass sample project for some ideas on the implementation. The direct link to the project hosted on Google Code is here: https://code.google.com/p/hello-world-google-glass/source/browse/#git%2FHelloWorld