主机上的Android Wear Watchface设置
我目前开发了一款android wear watchface。不过,我现在想在主机应用程序上创建一个设置部分,允许用户自定义手表面板。我是android开发的新手,所以我对正确的方法很好奇主机上的Android Wear Watchface设置,android,wear-os,android-wear-data-api,Android,Wear Os,Android Wear Data Api,我目前开发了一款android wear watchface。不过,我现在想在主机应用程序上创建一个设置部分,允许用户自定义手表面板。我是android开发的新手,所以我对正确的方法很好奇 是否有方法更新主机上的SharedReference,然后将其推送或与设备上的SharedReference同步?或者,我应该以一种完全不同的方式来看待这个问题吗?移动和穿戴模块本身没有共享的首选项,但您可以发送消息和/或更新侦听器将检测到的资产。例如,每当您在手机上更改首选项时,您也可以使用message
是否有方法更新主机上的SharedReference,然后将其推送或与设备上的SharedReference同步?或者,我应该以一种完全不同的方式来看待这个问题吗?移动和穿戴模块本身没有共享的首选项,但您可以发送消息和/或更新侦听器将检测到的资产。例如,每当您在手机上更改首选项时,您也可以使用message API向手表发送消息。在watch上,您应该使用
onMessageReceived
方法实现WearableListenerService
,在该方法中,您可以解析消息并采取适当的操作,例如在watch上设置首选项
查看Android开发者培训指南:您可以使用
DataApi
或MessageApi
在手机和手表设备之间同步您的手表配置
请查看文档并选择更适合您需要的文档:下面是一个使用
DataApi
的示例
推送到DataApi
的所有内容都在设备之间共享,并且两者都可用。您可以在两侧更改此数据,并且会立即通知另一侧(当设备相互连接时)。您还可以随时读取此数据(例如,当用户在手表上选择您的手表面时,配置数据将已经在那里等待您)
在电话端:
每次你想将新的fconfiguration与Android Wear设备同步时,你必须通过WearableDataApi
:
private void syncConfiguration() {
if(mGoogleApiClient==null)
return;
final PutDataMapRequest putRequest = PutDataMapRequest.create("/CONFIG");
final DataMap map = putRequest.getDataMap();
map.putInt("mode", 1);
map.putInt("color", Color.RED);
map.putString("string_example", "MyWatchface");
Wearable.DataApi.putDataItem(mGoogleApiClient, putRequest.asPutDataRequest());
}
}
在手表方面: 您需要创建一个扩展可穿戴ListenerService的类:
public class DataLayerListenerService extends WearableListenerService {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
super.onDataChanged(dataEvents);
final List<DataEvent> events = FreezableUtils.freezeIterable(dataEvents);
for(DataEvent event : events) {
final Uri uri = event.getDataItem().getUri();
final String path = uri!=null ? uri.getPath() : null;
if("/CONFIG".equals(path)) {
final DataMap map = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
// read your values from map:
int mode = map.getInt("mode");
int color = map.getInt("color");
String stringExample = map.getString("string_example");
}
}
}
}
请注意,这只是一个用法示例。也许(与其注册一个
WearableListenerService
)的实例,不如直接在您的Watchface内创建一个MGoogleAppClient
的实例,并在那里添加一个DataListener
:
Wearable.DataApi.addListener(mGoogleApiClient, new DataListener() {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
// read config here and update the watchface
}
});
也许您不需要共享数据-然后您可以使用
MessageApi
进行通信,并仅在保存新配置或watch希望从手机读取当前配置时发送消息。Wow-感谢您的回复!我本以为一两句话就能让我从总体上思考问题,但你做得太过分了。我会做一些关于你提供的链接和信息阅读,看看我能得到什么!没问题。在研究了这些文档之后,想想这些解决方案中的哪一个更适合您的需求(因为每个案例都略有不同)。您可以随时使用这些代码片段作为支持:)谢谢您的建议。。。这会让我朝着正确的方向前进!
<service android:name=".DataLayerListenerService" >
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>
Wearable.DataApi.addListener(mGoogleApiClient, new DataListener() {
@Override
public void onDataChanged(DataEventBuffer dataEvents) {
// read config here and update the watchface
}
});