如何在程序中编程更改手表表盘

4
我在Play商店上有一个免费应用程序:Circus Watch Faces,我正在尝试在配置活动中添加一个表盘选择器;我遵循了Android开发文档的步骤,没有问题,但是我该如何从一个表盘切换到另一个表盘呢?
由于我完全是新手,所以我正在尝试从示例中学习并构建新东西。目前,我只有一个带有按钮的配置活动,当我点击它时,我想更改当前的表盘!
如果需要的话,我的代码可以在GitHub上找到(尚未更新配置活动)。
2个回答

6

无法通过编程方式更改手表表盘。您所能做的最好的事情是发送广播WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER或(在新版Android Wear中)WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER。它们将调用一个手表表盘选择器(手表表盘是专门的壁纸)。后一种意图还允许您将自己的手表表面设置为选择器中的建议。

不存在设置手表表盘的方法,原因是这容易被应用程序滥用,违背用户意愿。

但是,由于您正在尝试从配置活动中进行某些操作,也许您想要实现完全不同的事情。也许您只想拥有一个WatchFaceService,然后根据一些内部设置来更改它(以不同的方式绘制)。这样,如果用户想要改变外观(甚至到达手表表盘看起来完全不同,感觉像是一个新的手表表盘),您只需更改基础数据,让手表表盘重新绘制即可。


我明白了,这确实是个好主意,我会尝试“重绘”的方法,谢谢! - Leonardo Gandini

1
最接近的做法如下:
public static void pickYourWatchFace(Context context) {
    ComponentName yourWatchFace = new ComponentName(context, YourWatchFace.class);
    Intent intent = new Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER)
            .putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, yourWatchFace)
            .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(intent);
}

这将打开“表盘选择器”,并在用户面前显示“YourWatchFace”,只需轻触一下即可设置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接