Android 如何以编程方式更改观察面

Android 如何以编程方式更改观察面,android,wear-os,watch-face-api,Android,Wear Os,Watch Face Api,我在Play Store上有一个免费的应用程序:我正在尝试在配置活动中添加一个watch faces选择器;我遵循了Android开发文档,没有问题,但是我如何从一个手表面切换到另一个手表面呢 我对android开发完全陌生,所以我试图从样本中理解并构建一些新的东西。 目前,我有一个配置活动,只有一个按钮,当我点击它,我想改变当前的手表脸 我的代码已打开(尚未使用配置活动更新),如果可能有帮助的话。无法通过编程更改手表表面。您最好发送一个广播wallpermanager.ACTION\u LIV

我在Play Store上有一个免费的应用程序:我正在尝试在配置活动中添加一个watch faces选择器;我遵循了Android开发文档,没有问题,但是我如何从一个手表面切换到另一个手表面呢

我对android开发完全陌生,所以我试图从样本中理解并构建一些新的东西。 目前,我有一个配置活动,只有一个按钮,当我点击它,我想改变当前的手表脸


我的代码已打开(尚未使用配置活动更新),如果可能有帮助的话。

无法通过编程更改手表表面。您最好发送一个广播
wallpermanager.ACTION\u LIVE\u wallper\u CHOOSER
或(在Android Wear的新版本中)
wallpermanager。操作\u更改\u活动\u壁纸
。它们将调用一个表面选择器(表面是专门的墙纸)。后一个目的还允许您将您的表面设置为在选择器中选择的建议

之所以不存在设置手表表面的方法,是因为它很容易被违背用户意愿的应用程序滥用


然而,由于您正试图从配置活动中做一些事情,因此您可能希望实现完全不同的目标。也许您只想拥有一个
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);
}

这将在用户面前打开手表表面选择器,只需点击一次即可设置。

我明白了,这确实是个好主意,我将尝试“重画”的方式,谢谢!!