2016-04-05 31 views
0

çağrısında değil OnDataChanged. Ben telefona el neredeyse aynı kurulumu yaptık, tek fark ben mükemmel çalışan bir mesaj gönderdi ve şimdi bir DataMap başka bir yol göndermek istiyorum olmasıdır.WearableListenerService ı bir düğme tıklandığında el bir datamap göndermesi gerektiğini giyilebilir bir uygulama var telefonda

Telefonda wearableListenerService numaralı telefondan onDataChanged() numaralı telefonun doğru kurulumuna sahip olduğuma eminim. Önemli bir şeyi unuttum mu yoksa başka neyin yanlış olduğunu?

bir göz atın ve benim günü kurtarmak edin! :) İşte

giyilebilir gelen datamap gönderir iplik (en giyilebilir MainActivity çağrılabilir, googleClient var ve ben parçacığı başladım). Veri haritasının başarıyla gönderildiği hata ayıklama geri dönüşü.

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"); 
    } 


} 


} 

Ve burada, hiç çağrılmayan telefondaki dinleyici var. Niye ya? Esasen sadece burada bulunan android geliştirici öğreticiden kopyalandı: http://developer.android.com/training/wearables/data-layer/events.html#Listen. Kendi versiyonlarını da denedim ama problemin başka bir yerde olduğunu düşünüyorum.

public class ListenerServiceMobile extends WearableListenerService{ 



private static final String TAG = "DataLayerSample"; 
private static final String START_ACTIVITY_PATH = "/start-activity"; 
private static final String DATA_ITEM_RECEIVED_PATH = "/data-item-received"; 

@Override 
public void onDataChanged(DataEventBuffer dataEvents) { 

    Toast.makeText(getApplicationContext(), "Data changed!", Toast.LENGTH_LONG).show(); 


    if (Log.isLoggable(TAG, Log.DEBUG)) { 
     Log.d(TAG, "onDataChanged: " + dataEvents); 
    } 
    final List<DataEvent> events = FreezableUtils 
      .freezeIterable(dataEvents); 

    GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .build(); 

    ConnectionResult connectionResult = 
      googleApiClient.blockingConnect(30, TimeUnit.SECONDS); 

    if (!connectionResult.isSuccess()) { 
     Log.e(TAG, "Failed to connect to GoogleApiClient."); 
     return; 
    } 

    // Loop through the events and send a message 
    // to the node that created the data item. 
    for (DataEvent event : events) { 
     Uri uri = event.getDataItem().getUri(); 

     // Get the node id from the host value of the URI 
     String nodeId = uri.getHost(); 
     // Set the data of the message to be the bytes of the URI 
     byte[] payload = uri.toString().getBytes(); 

     // Send the RPC 
     Wearable.MessageApi.sendMessage(googleApiClient, nodeId, 
       DATA_ITEM_RECEIVED_PATH, payload); 
    } 
} 

mobil cihazların bildirim dosyası bu içerir:

<service android:name=".ListenerServiceMobile"> 
     <intent-filter> 
      <action android:name="com.google.android.gms.wearable.DATA_CHANGED"></action> 
      <data android:scheme="wear" android:host="*" android:pathPrefix="/prefix" /> 
     </intent-filter> 
    </service> 

yanıtlayan için teşekkür ederiz! :)

cevap

-1

Ben servis dinliyor verileri süzme beri android:pathPrefix kaldırarak başlayacaktı. Şu anda deneniyor onDataChange() görmelisiniz.

Verilerin karşısına geçtiğini gördükten sonra, geri dönebilir ve Giyilebilir öğenizdeki yolu ayarladığınız her şeyi pathPrefix olarak ayarlayabilirsiniz. (Tahmin ediyorum/data-item-received). PathPrefix, ana bilgisayardan sonra belirttiğiniz her şeyin başlangıcıyla eşleşir.

<service android:name=".ListenerServiceMobile"> 
    <intent-filter> 
     <action android:name="com.google.android.gms.wearable.DATA_CHANGED" /> 
     <data android:scheme="wear" android:host="*" 
       android:pathPrefix="/data-item-received"" /> 
    </intent-filter> 
</service> 
: Burada

Eğer durum buysa istediğim şey