¿Cuál es el Uri para Wearable.DataApi.getDataItem () después de usar PutDataMapRequest?

Estoy probando la capa de datos Wearable Api como se describe en el tutorial de Android .

Hay una API de bajo nivel basada en DataItem , que puede tener sólo una matriz de bytes como carga útil, por lo que la formación recomienda utilizar PutDataMapRequest , que parece ser básicamente equivalente a un Bundle (es decir, un mapa serializable) cuando se utiliza Intents. Básicamente, crear una instancia de esta clase, a continuación, rellenar los valores y enviarlo.

 private final static String DATA_PATH = "/testdata"; PutDataMapRequest dataMap = PutDataMapRequest.create(DATA_PATH); dataMap.getDataMap().putInt(...); PutDataRequest request = dataMap.asPutDataRequest(); PendingResult<DataApi.DataItemResult> pendingResult = Wearable.DataApi.putDataItem(mGoogleApiClient, request); pendingResult.setResultCallback(...); 

Ahora, quiero comprobar si estos datos fueron almacenados correctamente (para la prueba, en la computadora de mano sí mismo, no estoy preocupado por el wearable ahora). Los métodos apropiados para esto están en la clase DataApi , así que puedo llamar a:

 PendingResult<DataApi.DataItemResult> pending; pending = Wearable.DataApi.getDataItem(mGoogleApiClient, uri); pending.setResultCallback(...); 

Y luego utilizar DataMapItem.fromDataItem() dentro de la devolución de llamada para obtener el valor.

El problema es: ¿cuál es el Uri real para solicitar el DataItemResult?

Los datos se almacenan, porque si uso Wearable.DataApi.getDataItems(mGoogleApiClient) para iterar sobre todos los datos almacenados, de hecho está ahí, y el Uri es:

 "wear://<some guid here>/testdata" 

Y el uso de este Uri con DataApi.getDataItem() devuelve el resultado correcto. Pero no tengo ni idea de cómo generarlo , ya que solo usé la parte /testdata para crear el PutDataRequest

¿O estoy haciendo cosas incorrectamente?

La autoridad del uri (que se describe como <algunos guías aquí> en tu mensaje) es Id de nodo que está disponible a través de la API de nodo . En resumen, puede construir el Uri como sigue.

 private Uri getUriForDataItem() { // If you've put data on the local node String nodeId = getLocalNodeId(); // Or if you've put data on the remote node // String nodeId = getRemoteNodeId(); // Or If you already know the node id // String nodeId = "some_node_id"; return new Uri.Builder().scheme(PutDataRequest.WEAR_URI_SCHEME).authority(nodeId).path("/path_to_data").build(); } private String getLocalNodeId() { NodeApi.GetLocalNodeResult nodeResult = Wearable.NodeApi.getLocalNode(mGoogleApiClient).await(); return nodeResult.getNode().getId(); } private String getRemoteNodeId() { HashSet<String> results = new HashSet<String>(); NodeApi.GetConnectedNodesResult nodesResult = Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).await(); List<Node> nodes = nodesResult.getNodes(); if (nodes.size() > 0) { return nodes.get(0).getId(); } return null; } 
  • Cómo mostrar la notificación únicamente en el dispositivo Android Wear
  • ¿Puedo reproducir archivos de audio en Android Wear?
  • Android Wear: Programe la pantalla de despertador
  • ¿Se deben utilizar NotificationCompat y NotificationManagerCompat para que las notificaciones aparezcan en un portátil?
  • La aplicación aleatoria se bloquea en Android Wear 5.0.X
  • Cómo configurar la altura del elemento WearableListView
  • Android Wear: ¿Hay alguna razón para utilizar un objeto Time en lugar de un objeto Calendar?
  • Permisos para un WearableListenerService
  • Problemas para leer el sensor de frecuencia cardíaca de Moto 360 - Android Wear
  • ¿Cómo distribuyo mi Android Wear a usuarios alfa / beta en Google Play Store?
  • Emulador de emparejamiento de par con emulador de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.