如何使用 ADB 启动 Android Wear 表盘?

How do you start an Android Wear watch face using ADB?

出于测试目的,我想通过 ADB 停止并重新启动我的 Android Wear 表盘服务。停止它似乎正常工作:

adb shell am force-stop com.package.name

但再次启动服务让我感到难过。表盘 不是 活动,因此无法通过 am start 启动。我试图在包上使用 monkey 命令,但没有用。我尝试手动启动服务:

adb shell am startservice com.package.name/.watch_face_service

但这似乎不起作用;服务未启动,或服务已启动但不是当前壁纸。

这一定是可能的,因为当我 运行 或调试它时,Eclipse 设法启动表盘。但是怎么办?

经过多日的研究,我得出的结论是,这是不可能的。

所有 WallpaperServices 都需要 BIND_WALLPAPER 权限:

String: BIND_WALLPAPER: Must be required by a WallpaperService, to ensure that only the system can bind to it.

...也就是说只有系统服务才有能力启动壁纸。

Android 操作系统可能有一些硬编码的巫毒魔法,可以自动启动通过 Eclipse 或 Android Studio 安装的任何表盘——考虑到 IDE 都没有运行任何启动墙纸的 ADB 命令。

Android Studio Dolphin 版本现在可以通过 运行 配置启动表盘、复杂功能和磁贴。

对于表盘,运行执行以下命令。

$ adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation set-watchface --ecn component com.example.android.wearable.alpha/com.example.android.wearable.alpha.AnalogWatchFaceService
$ adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-watchface 
Broadcasting: Intent { act=com.google.android.wearable.app.DEBUG_SYSUI flg=0x400000 (has extras) }
Broadcast completed: result=1