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