如何以编程方式更改Watch Faces

时间:2015-04-20 10:39:11

标签: android wear-os watch-face-api

我在Play商店中提供了一个免费应用:Circus Watch Faces并且我试图在配置活动中添加一个表面选择器;我跟着Android Dev Docs关于它并没有问题,但我怎样才能从一个表盘转换到另一个表盘?

我对Android开发完全陌生,所以我试图从样本中解释并构建新的东西。 目前我只使用一个按钮进行配置活动,当我点击它时,我想改变当前的表盘!

我的代码在GitHub上(尚未更新配置活动),如果可能有所帮助。

2 个答案:

答案 0 :(得分:5)

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

设置表盘的方法不存在的原因是它可能很容易被用户的意愿滥用。

但是,由于您尝试从配置活动中执行某些操作,因此您可能希望实现完全不同的功能。也许你想只有一个WatchFaceService,然后根据一些内部设置改变它(以不同方式绘制)。这样,如果用户想要改变外观(甚至到表面看起来完全不同的点,感觉就像一个新的表盘),你只需更改底层数据并让表盘重绘自己。

答案 1 :(得分:0)

您最接近的是:

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的Watch Face Picker,只需点击一下即可进行设置。