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); } } } 
  • La aplicación de Android Wear no se instala a través del teléfono
  • Debug Android Wear Device sobre USB
  • API del sensor de ritmo cardíaco para Android
  • ¿Cómo agregar puntos de página para selectores 2D en Android Wear?
  • Emulador Android Wear y modo ambiente
  • WearableListView setEnableGestureNavigation no disponible
  • Android Studio módulos de proyecto "móviles" y "desgaste", ubicación de componentes compartidos
  • ¿Cómo hacer que las solicitudes HTTP a través de WiFi sean directamente de Android Wear?
  • Android Studio - No se pudo actualizar el proyecto Gradle - no se pudo encontrar el destino 4.4w
  • Android Wear: cómo compartir código entre los módulos portátiles y portátiles?
  • WearableListenerService sólo se inicia después de instalar la aplicación - entonces nunca más
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.