检测是否通过语音命令或触摸输入启动磨损应用

dha*_*val 5 android wear-os

在我的穿戴应用程序中,我想根据应用程序是通过语音命令还是通过触摸输入启动来显示不同的布局选项.但我在文档中找不到任何方法可以做到这一点.

我能想到的唯一可行方法是有两个发射器.但我正在寻找比创建多个发射器更直接的解决方案.

dha*_*val 3

检查了一下活动日志后,我发现了这一点:

当您单击 Android Wear 中的应用程序时,会记录以下内容:

I/ActivityManager(446): 在显示器 0 上从 uid 10002 开始 u0 {act=android.intent.action.MAIN flg=0x10000000 cmp=com.lge.wearable.compass/.MainActivity}

当您使用语音命令启动应用程序时,会记录以下内容:

I/ActivityManager(446): 启动 u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10008000 pkg=com.lge.wearable.compass cmp=com.lge.wearable。显示器 0 上来自 uid 10002 的 compass/.MainActivity}

差异在于包含作为值的cat或参数。categoryandroid.intent.category.LAUNCHER

onCreate函数中的以下代码将区分应用程序是通过语音启动还是通过用户点击启动。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ....

    Set<String> categories = getIntent().getCategories();
    if(categories != null && categories.contains(Intent.CATEGORY_LAUNCHER)) {
        Log.i(LOGTAG, "app started via voice");
    }else{
        Log.i(LOGTAG, "app started with user tap");
    }

    ....
}
Run Code Online (Sandbox Code Playgroud)

目前这适用于我的应用程序场景,并希望它也适用于其他应用程序场景。