我在 Play 商店有一个免费的应用程序:Circus Watch Faces,我正在尝试在配置活动中添加一个表盘选择器;我关注了 Android Dev Docs 并且没有问题,但是我如何从一个表盘切换到另一个?
我对android开发完全陌生,所以我试图从样本中理解并构建新的东西。目前我有一个只有一个按钮的配置活动,当我点击它时,我想改变当前的表盘!
我的代码在GitHub 上(尚未更新配置活动),如果可能会有所帮助。
我在 Play 商店有一个免费的应用程序:Circus Watch Faces,我正在尝试在配置活动中添加一个表盘选择器;我关注了 Android Dev Docs 并且没有问题,但是我如何从一个表盘切换到另一个?
我对android开发完全陌生,所以我试图从样本中理解并构建新的东西。目前我有一个只有一个按钮的配置活动,当我点击它时,我想改变当前的表盘!
我的代码在GitHub 上(尚未更新配置活动),如果可能会有所帮助。
无法以编程方式更改表盘。您可以做的最好的事情是发送广播WallpaperManager.ACTION_LIVE_WALLPAPER_CHOOSER
或(在新版本的 Android Wear 中)WallpaperManager. ACTION_CHANGE_LIVE_WALLPAPER
。他们将调用表盘选择器(表盘是专门的壁纸)。后一种意图还允许您将表盘设置为选择器中的选择建议。
不存在设置表盘的方法的原因是它很容易被应用程序滥用而违背用户的意愿。
但是,由于您正在尝试从配置活动中做某事,也许您想要实现完全不同的东西。也许您只想拥有一个WatchFaceService
,然后根据某些内部设置对其进行更改(以不同方式绘制)。这样,如果用户想要更改外观(甚至到表盘看起来完全不同,感觉就像一个新的表盘),您只需更改底层数据并让表盘重新绘制自己。
您可以做的最接近的是:
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,只需点击一下即可进行设置。