要解决在Android Wear设备上无法发送DataItem到手机的问题,你可以使用以下代码示例:
在Android Wear应用中,发送DataItem到手机:
private void sendDataItemToPhone() {
PutDataMapRequest dataMap = PutDataMapRequest.create("/data_item_path");
dataMap.getDataMap().putString("key", "value");
PutDataRequest request = dataMap.asPutDataRequest();
PendingResult pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, request);
pendingResult.setResultCallback(new ResultCallback() {
@Override
public void onResult(@NonNull DataApi.DataItemResult dataItemResult) {
if (dataItemResult.getStatus().isSuccess()) {
Log.d(TAG, "DataItem sent successfully");
} else {
Log.d(TAG, "Failed to send DataItem");
}
}
});
}
在手机应用中,接收来自Android Wear设备的DataItem:
public class MainActivity extends AppCompatActivity implements DataApi.DataListener, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
private static final String TAG = "MainActivity";
private GoogleApiClient mGoogleApiClient;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Wearable.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
if (mGoogleApiClient != null && mGoogleApiClient.isConnected()) {
Wearable.DataApi.removeListener(mGoogleApiClient, this);
mGoogleApiClient.disconnect();
}
super.onStop();
}
@Override
public void onConnected(@Nullable Bundle bundle) {
Wearable.DataApi.addListener(mGoogleApiClient, this);
}
@Override
public void onConnectionSuspended(int i) {
Wearable.DataApi.removeListener(mGoogleApiClient, this);
}
@Override
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.d(TAG, "onConnectionFailed: " + connectionResult.getErrorMessage());
}
@Override
public void onDataChanged(DataEventBuffer dataEventBuffer) {
for (DataEvent event : dataEventBuffer) {
if (event.getType() == DataEvent.TYPE_CHANGED && event.getDataItem().getUri().getPath().equals("/data_item_path")) {
DataMap dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap();
String value = dataMap.getString("key");
Log.d(TAG, "Received DataItem value: " + value);
}
}
}
}
这些代码示例演示了如何在Android Wear设备上发送DataItem,并在手机应用中接收。确保手机和Android Wear设备都已连接到同一个Google账号,并且已经添加了相应的权限和依赖项。