2016-04-02 7 views
-1

Ich erstelle eine Sensor Logger-App für ein Android Wearable. Die Protokollierung findet in einem Dienst statt, das Senden von Daten vom Wearable wird von einem Dienst ausgeführt. Nach dem Lesen des Android Developer Guide und einigen Tests scheint es jedoch so zu sein, dass der bevorzugte Weg zum Erhalt einer DataMap die Verwendung einer Aktivität ist. Ich lese über den WearableListenerService und habe ihn zwischen Telefon und Wearable verwendet, aber dann habe ich eine Nachricht gesendet und möchte jetzt eine DataMap senden, die, soweit ich das sehen kann, mit dem WearableListenerService nicht einfach zu implementieren ist.Kommunikation von Wearable Service zu Handheld Service [Android]

Die illustration (danke für die Genehmigung meiner Farbe Fähigkeiten) zeigt, welche Art von Setup ich möchte, mit Diensten. Ich möchte eine DataMap auf den Pfeil unten senden und einen Service für den Empfang der DataMap erstellen und die Daten an einen anderen Service senden, der in die Datei geschrieben werden soll.

Dies ist der Dienst die DataMap vom tragbaren Senden:

public class SendDataMapToHandheldDataLayer_Thread extends Thread { 

private String path; 
private DataMap dataMap; 
private GoogleApiClient googleClient; 

public SendDataMapToHandheldDataLayer_Thread(String cPath, DataMap cDataMap, GoogleApiClient cGoogleClient){ 
    path = cPath; 
    dataMap = cDataMap; 
    googleClient = cGoogleClient; 
} 

public void run(){ 
    PutDataMapRequest putDMR = PutDataMapRequest.create(path); 
    putDMR.getDataMap().putAll(dataMap); 
    PutDataRequest request = putDMR.asPutDataRequest(); 
    DataApi.DataItemResult result = Wearable.DataApi.putDataItem(googleClient, request).await(); 
    if(result.getStatus().isSuccess()){ 
     Log.v("dataMapSender_Wear", "DataMap successfully sent!"); 
    }else{ 
     Log.v("dataMapSender_Wear", "ERROR: Failed to send DataMap to data layer"); 
    } 
} 

}

Was wird der Empfänger aussehen?

Danke an alle wunderbaren Menschen, die antworten! :)

Antwort

0

Mit einer Service-basierten Architektur, wie Sie skizziert haben, wird Ihr Receiver WearableListenerService erweitern, wie hier gezeigt: http://developer.android.com/training/wearables/data-layer/events.html#Listen

+0

Danke für die Beantwortung. Ich habe diesen Artikel schon einmal gelesen, aber ich kann versuchen, es noch einmal zu verfolgen. Ich könnte zu dir zurückkommen und um mehr Hilfe bitten, wenn ich mehr Ärger bekomme. Danke nochmal @String! :) –

+0

Aus dem Beispiel in dem Artikel, mit dem Sie verlinkt haben, könnten Sie erklären, was diese Zeile macht? ConnectionResult connectionResult = client.blockingConnect (30, TimeUnit.SECONDS); –

+0

Das wartet 30 Sekunden, bis die Verbindung zum Google Play Services-Client abgeschlossen ist. Sie benötigen diese Verbindung, um die Daten-API zu verwenden. Wenn dieser Code nicht in einem Dienst verwendet wird, verwenden Sie stattdessen einen (nicht blockierenden) 'Verbindungs'-Aufruf, aber hier ist es in Ordnung, dass Ihr Code einfach auf die Verbindung wartet. – String