Envío de datos al dispositivo de desgaste de Android

Estoy tratando de enviar una matriz de cadena de mi teléfono a mi desgaste, he creado un servicio en mi teléfono que se supone que enviar los datos con este código:

public class SendDataService extends Service { private static final String TAG = "SendDataService"; @Override public void onCreate(){ GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle connectionHint) { Log.d(TAG, "onConnected: " + connectionHint); // Now you can use the data layer API } @Override public void onConnectionSuspended(int cause) { Log.d(TAG, "onConnectionSuspended: " + cause); } }) .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { @Override public void onConnectionFailed(ConnectionResult result) { Log.d(TAG, "onConnectionFailed: " + result); } }) .addApi(Wearable.API) .build(); mGoogleApiClient.connect(); String[] eventStrings = Events.eventsString(Events.readCalendarEvent(this)); PutDataMapRequest dataMap = PutDataMapRequest.create("/events"); dataMap.getDataMap().putStringArray("events", eventStrings); PutDataRequest request = dataMap.asPutDataRequest(); PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi .putDataItem(mGoogleApiClient, request); mGoogleApiClient.disconnect(); } 

Y desde el reloj intento conseguirlo en mi actividad principal con este código:

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_agenda_wear); this.context = this; GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() { @Override public void onConnected(Bundle connectionHint) { Log.d(TAG, "onConnected: " + connectionHint); // Now you can use the data layer API } @Override public void onConnectionSuspended(int cause) { Log.d(TAG, "onConnectionSuspended: " + cause); } }) .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() { @Override public void onConnectionFailed(ConnectionResult result) { Log.d(TAG, "onConnectionFailed: " + result); } }) .addApi(Wearable.API) .build(); mGoogleApiClient.connect(); PendingResult<DataItemBuffer> results = Wearable.DataApi.getDataItems(mGoogleApiClient); results.setResultCallback(new ResultCallback<DataItemBuffer>() { @Override public void onResult(DataItemBuffer dataItems) { if (dataItems.getCount() != 0) { DataMapItem dataMapItem = DataMapItem.fromDataItem(dataItems.get(0)); // This should read the correct value. AgendaWear.this.eventString = dataMapItem.getDataMap().getStringArray("events"); } dataItems.release(); } }); mGoogleApiClient.disconnect(); final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { @Override public void onLayoutInflated(WatchViewStub stub) { if (AgendaWear.this.eventString == null){ Toast.makeText(AgendaWear.this, "No data",Toast.LENGTH_LONG).show(); AgendaWear.this.eventString = new String[0]; } AgendaWear.listItems = eventArray(AgendaWear.this.eventString); mListView = (WearableListView) stub.findViewById(R.id.listView); mListView.setAdapter(new MyAdapter(AgendaWear.this)); mListView.setClickListener(AgendaWear.this); } }); } 

Pero por desgracia, siempre tengo la tostada "no data" y estoy un poco atascado aquí, tengo la línea <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> tanto en la parte de desgaste como en la móvil de mi aplicación, pero parece que no obtengo ningún dato. Gracias de antemano por su ayuda

Tal vez pueda ayudar.

Este código funciona para mí, envía una matriz de cadenas del dispositivo que se recibirá en el usable:

Código del dispositivo:

 @Override public void onCreate() { googleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(Wearable.API) .build(); googleApiClient.connect(); } @Override public void onConnected(Bundle bundle) { String [] myData = new String[]{"data1", "data2", "data3"}; new DataTask (getActivity(), myData, myListener).execute(); } class DataTask extends AsyncTask<Node, Void, Void> { private final String[] contents; private MyListener myListener; Context c; public DataTask (Context c, String [] contents, MyListener myListener) { this.c = c; this.contents = contents; this.myListener = myListener; } @Override protected Void doInBackground(Node... nodes) { PutDataMapRequest dataMap = PutDataMapRequest.create ("/myapp/myevent"); dataMap.getDataMap().putStringArray("contents", contents); PutDataRequest request = dataMap.asPutDataRequest(); DataApi.DataItemResult dataItemResult = Wearable.DataApi .putDataItem(googleApiClient, request).await(); Log.d ("[DEBUG] SendDataCoolTask - doInBackground", "/myapp/myevent" status, "+getStatus()); return null; } } 

Código usable:

 @Override public void onConnected(Bundle bundle) { Wearable.DataApi.addListener(googleApiClient, this); } @Override public void onDataChanged(DataEventBuffer dataEvents) { for (DataEvent event: dataEvents) { Log.d("[DEBUG] DeviceService - onDataChanged", "Event received: " + event.getDataItem().getUri()); String eventUri = event.getDataItem().getUri().toString(); if (eventUri.contains ("/myapp/myevent")) { DataMapItem dataItem = DataMapItem.fromDataItem (event.getDataItem()); String[] data = dataItem.getDataMap().getStringArray("contents"); Log.d("[DEBUG] DeviceService - onDataChanged", "Sending timeline to the listener"); myListener.onDataReceived(data); } } } 
  • ¿Por qué Android Wear DataMap no tiene un método putIntArray?
  • Android Wear Error ConnectionResult {statusCode = SERVICE_VERSION_UPDATE_REQUIRED, resolution = null}
  • Android Wear BLE Función central
  • Proyecto de desgaste - attr 'android: windowSwipeToDismiss'
  • Cuadro de diálogo Timepicker en Android Wear: ¿El material timepicker es demasiado grande?
  • Cómo mostrar la notificación únicamente en el dispositivo Android Wear
  • Android Wear envía datos al teléfono Android, pero parece que el teléfono nunca lo recibe
  • No se muestra la notificación de Android Wear si se utiliza FLAG_NO_CLEAR
  • ¿Cómo puedo especificar que no se muestre una acción de notificación en Android Wear?
  • Desinstala la aplicación de Android Wear desde un dispositivo real
  • Registro de pantalla Android Wear
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.