gpt4 book ai didi

Android Wear 数据项

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:36:57 27 4
gpt4 key购买 nike

我正在尝试弄清楚如何将一些数据从手机同步到 Android Wear 设备,并且我已经阅读了 developer.android.com 上关于数据项的文章,但是我仍然不清楚究竟如何使用它们。具体来说,每个代码段(GoogleApiClient、Sync 和 Listen)应该在应用程序代码流中的位置以及在哪个设备、电话或穿戴设备或两者上实现。

Link到 developer.android.com 页面

最佳答案

您看过 API 20 的样本了吗?在位于此处的 DataLayer 示例中有一个很好的 DataApi 用法演示:

{android-sdk-root}\samples\android-20\wearable\DataLayer

此外,我还在 Android Wear Watchface Settings on host 的回答中发布了一个使用 DataApi 的示例
但可能由于该问题的标题,与 DataApi 没有简单的关系。所以也许这里是再次发布它的好地方——希望更多的用户会找到这个例子。请看下面的代码:


推送到 DataApi 的所有内容都在设备之间共享并且对它们都可用。您可以在双方更改此数据,另一方将立即收到有关此类更改的通知(当设备相互连接时)。您还可以随时读取保存的数据。以下是通过几个简单步骤实现 DataApi 的示例代码。

在手机端:

public class WatchfaceConfigActivity extends Activity {
private GoogleApiClient mGoogleApiClient;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(new ConnectionCallbacks() {
@Override
public void onConnected(Bundle connectionHint) {
}
@Override
public void onConnectionSuspended(int cause) {
}
})
.addOnConnectionFailedListener(new OnConnectionFailedListener() {
@Override
public void onConnectionFailed(ConnectionResult result) {
}
})
.addApi(Wearable.API)
.build();
mGoogleApiClient.connect();
}

并且每次您想要与 Android Wear 设备同步新的 fconfiguration 时,您必须通过 Wearable DataApi 放置一个 DataRequest:

    private void syncSampleDataItem() {
if(mGoogleApiClient==null)
return;

final PutDataMapRequest putRequest = PutDataMapRequest.create("/SAMPLE");
final DataMap map = putRequest.getDataMap();
map.putInt("color", Color.RED);
map.putString("string_example", "Sample String");
Wearable.DataApi.putDataItem(mGoogleApiClient, putRequest.asPutDataRequest());
}
}


在 watch 端:

您需要创建一个扩展 WearableListenerService 的类:

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("/SAMPLE".equals(path)) {
final DataMap map = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
// read your values from map:
int color = map.getInt("color");
String stringExample = map.getString("string_example");
}
}
}
}

并在您的 AndroidManifest 中声明它:

<service android:name=".DataLayerListenerService" >
<intent-filter>
<action android:name="com.google.android.gms.wearable.BIND_LISTENER" />
</intent-filter>
</service>

关于Android Wear 数据项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25196033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com