Was ist der Uri für Wearable.DataApi.getDataItem () nach der Verwendung von PutDataMapRequest?

Ich teste den Wearable Data Layer Api wie im Android Tutorial beschrieben .

Es gibt eine Low-Level-API, die auf DataItem basiert, die nur ein Byte-Array als Payload haben kann, also empfiehlt das Training die Verwendung von PutDataMapRequest , die im Grunde mit einem Bundle (dh einer serialisierbaren Karte) bei der Verwendung von Intents gleich zu sein scheint. Sie erstellen grundsätzlich eine Instanz dieser Klasse, füllen dann die Werte und senden sie.

  • Blick in die Mitte des Layouts, wenn genügend Platz vorhanden ist
  • Wie man Text & Bilder in einem CompoundDrawable zentriert?
  • Fehler beim Importieren eines neuen Gradle-Projekts im Android-Studio
  • Recyclerview Adapter und Glide - gleiches Bild alle 4-5 Reihen
  • Meta Tag "apple-mobile-web-app-fähig" für Android?
  • Öffnen Sie einen Link in einer Webansicht anstelle des Standardbrowsers
  •  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(...); 

    Nun möchte ich überprüfen, ob diese Daten korrekt gespeichert wurden (zum Testen, auf dem Handheld selbst, ich bin nicht besorgt über die tragbaren jetzt). Die entsprechenden Methoden hierfür sind in der DataApi Klasse, also kann ich anrufen:

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

    und verwenden Sie dann DataMapItem.fromDataItem() innerhalb des Rückrufs, um den Wert zu erhalten.

    Das Problem ist: Was ist die eigentliche Uri, um die DataItemResult anzufordern?

    Die Daten werden gespeichert, denn wenn ich Wearable.DataApi.getDataItems(mGoogleApiClient) , um über alle gespeicherten Daten zu iterieren, ist es tatsächlich da und das Uri ist:

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

    Und mit diesem Uri mit DataApi.getDataItem() gibt das richtige Ergebnis zurück. Aber ich bin ahnungslos, wie man es generiert , da ich nur den /testdata Teil benutzt habe, um die PutDataRequest zu erstellen …

    Oder mache ich die Dinge falsch?

  • Ist es möglich, Uri.Builder zu benutzen und nicht den "//" Teil?
  • Wie bekomme ich Android Wifi Scan Ergebnisse in eine Liste?
  • FragmentTabHost - Kein Tab bekannt für Tag null
  • Hinzufügen von Berechtigungen in AndroidManifest.xml in Android Studio?
  • Android: ListView.getScrollY () - funktioniert es?
  • Android Messagebox
  • One Solution collect form web for “Was ist der Uri für Wearable.DataApi.getDataItem () nach der Verwendung von PutDataMapRequest?”

    Die uri-Autorität (die als <some guid here> in deinem Post bezeichnet wird) ist Node Id, die über Node API verfügbar ist. Zusammenfassend können Sie die Uri wie folgt konstruieren.

     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; } 
    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.