2016-09-18 4 views
0

Мое приложение работает нормально до тех пор, пока BIND_LISTENER не устанет, и я внесла необходимые изменения, но мое приложение не работает. Я успешно отправляю сообщение, но ничего не происходит на телефоне.Не удалось получить сообщение после того, как BIND_LISTENER устарел

Мой код на износ (отправитель):

private static final String WEARABLE_DATA_PATH = "/test/"; 

protected void sendMessageToHandheld(final String message) { 

    final PendingResult<NodeApi.GetConnectedNodesResult> nodes = Wearable.NodeApi.getConnectedNodes(googleApiClient); 
    nodes.setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() { 
     @Override 
     public void onResult(@NonNull NodeApi.GetConnectedNodesResult result) { 
      final List<Node> nodes = result.getNodes(); 
      if (nodes != null) { 
       for (int i = 0; i < nodes.size(); i++) { 
        final Node node = nodes.get(i); 
        Wearable.MessageApi.sendMessage(googleApiClient, node.getId(), WEARABLE_DATA_PATH, message.getBytes()).setResultCallback(
          new ResultCallback() { 
           @Override 
           public void onResult(@NonNull Result sendMessageResult) { 
            if (!sendMessageResult.getStatus().isSuccess()) { 
             Log.i(TAG, "Failed to send message"); 
            } else{ 
             Log.d(TAG, "sendind message to handled: " + node.getDisplayName() 
               + " - id: " + node.getId() 
               + " - path: " + WEARABLE_DATA_PATH 
               + " - message: " + message); 
            } 
           } 
          } 
        ); 
       } 
      } 
     } 
    }); 
} 

Служба слушателем на стороне телефона:

public class ListenerService extends WearableListenerService { 

private static final String TAG = "ListenerService"; 
private static final String WEARABLE_DATA_PATH = "/test/"; 

public void onMessageReceived(MessageEvent messageEvent) { 
    Log.v(TAG, "Test"); 
} 

public void onDataChanged(DataEventBuffer dataEvents) { 
    DataMap dataMap; 
    Log.v(TAG, "DataMap received from watch: "); 
    for (DataEvent event : dataEvents) { 

     // Check the data type 
     if (event.getType() == DataEvent.TYPE_CHANGED) { 
      // Check the data path 
      String path = event.getDataItem().getUri().getPath(); 
      if (path.equals(WEARABLE_DATA_PATH)) {} 
      dataMap = DataMapItem.fromDataItem(event.getDataItem()).getDataMap(); 
      Log.v(TAG, "DataMap received on watch: " + dataMap); 
     } 
    } 
} 

}

Мой телефон манифеста:

<service 
     android:name=".wear_communication.DataLayerListenerService" 
     android:enabled="true" 
     android:exported="true"> 
     <intent-filter> 

      <action android:name="com.google.android.gms.wearable.DATA_CHANGED" /> 
      <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" /> 
      <action android:name="com.google.android.gms.wearable.CAPABILITY_CHANGED" /> 
      <action android:name="com.google.android.gms.wearable.CHANNEL_EVENT" /> 

      <data 
       android:host="*" 
       android:pathPrefix="/test/" 
       android:scheme="wear" /> 
     </intent-filter> 
    </service> 

ответ

0

Sending and Syncing Data

API-интерфейс Wearable Data Layer, входящий в состав сервисов Google Play, обеспечивает канал связи для портативных и носимых приложений. API состоит из набора данных объектов, что система может передавать и синхронизировать через провод и слушателей, которые уведомляют свои приложения важных событий с уровнем данных:

  • Элементы данных
  • Сообщения
  • активов
  • WearableListenerService (услуги)
  • DataListener (для переднего плана деятельности)
  • канала

Дополнительную информацию о Data Layer events и в описании WearableListenerService и тегах в манифесту. Android Studio имеет guide с краткой информацией о том, как конвертировать в новый API. Образцы Android Wear также показывают лучшие практики использования WearableListenerService, такие как DataLayer и XYZTouristAttractions. Необходимые изменения очень малы и можно увидеть в этом git diff из одного из примеров здесь.

Вот соответствующие документы и учебники, которые могут помочь вам с носимыми и портативной связи устройства:

Эти документы могут помочь вы под как заменить BIND_LISTENER на новый API фильтра тонких зернистых объектов.

Надеюсь, это поможет!

+0

Я сделал все, что нужно (изменение градиента, код на износ, код на мобильном устройстве, изменение мобильного манифеста), но мобильный не имеет результата от износа. Износ показывает мне, что отправил сообщение, но ничего не происходит на мобильном телефоне. И все выглядит нормально, как в коде выше. Я попробовал put onCreate() в мобильном классе, и logcat показал мне, что класс вызывается. Вы знаете, что может случиться? Или чего не хватает? P.S: извините за мой английский, им бразильский –

 Смежные вопросы

  • Нет связанных вопросов^_^