Отправить сообщение на телефон из Android Wear Notification

Я новичок в программировании для Android Wear и учусь, разрабатывая это приложение.

Это будет просто медиаконтроллер, чтобы пользователь мог нажимать кнопку воспроизведения/паузы на часах, а телефон, который воспроизводит видео, принимает и обрабатывает его.

Что я сделал до сих пор:

Я настроил приложение Android Wear, чтобы получать уведомления из мобильного приложения.

Intent notificationIntent = new Intent(this, NotificationActivity.class);
                        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
                            .setSmallIcon(R.drawable.ic_launcher)
                            .extend(new NotificationCompat.WearableExtender()
                            .setContentIcon(R.drawable.ic_launcher)                                          .setCustomSizePreset(NotificationCompat.WearableExtender.SIZE_FULL_SCREEN)
                            .setDisplayIntent(pendingIntent)
                            .addAction(new NotificationCompat.Action.Builder(R.drawable.ic_launcher, "Hej", pendingIntent).build())
                                    .setContentAction(0));

((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
.notify(NOTIFICATION_ID, notificationBuilder.build());

Приведенный выше код — это то, что я использую для отображения моей удаленной карты на часах. Однако я хотел добиться того, чтобы при нажатии этой кнопки она должна была отправить сообщение НАЗАД на телефон.

Теперь мои проблемы:

  • Я могу только установить новое намерение как действие. Действительно ли это правильный способ отправить одно простое сообщение (например, строку или целое число) обратно на телефон? Как одно действие, которое только отправляет сообщение, а затем удаляет истории? И если да, то как мне получить API для этого действия, чтобы я мог отправить сообщение на телефон?
  • Как отправить это сообщение и получить его на телефон? Я ничего не нашел по этому поводу в руководствах ... Я видел указания на то, что я могу запустить активность на телефоне, когда устройство Wear отправляет сообщение, но это абсолютно не то, что я хочу делать, так как у меня там есть работающая активность. ..

Спасибо!


person Joakim    schedule 25.10.2014    source источник
comment
Вы пробовали API сообщений? Просто настройте ListenerService на своем КПК, который расширяет WearableListenerService, и заставьте его делать все, что вы хотите, чтобы КПК делал с учетом содержания сообщения. Вот документация для Message API: developer.android. com/reference/com/google/android/gms/wearable/   -  person Tony Malghem    schedule 27.10.2014


Ответы (1)


Итак, как я решил свою проблему:

В модуле Android Wear я использовал WearableListenerService. В моем мобильном модуле я просто использую Wearable DataAPI для отправки ему событий данных. Функция onDataChanged в WearableListenerService получает их, поэтому я просто создал подкласс и реализовал свой собственный.

В этом методе я использую предоставленную информацию для создания и отображения нового уведомления. Из действия уведомления я запрашиваю экземпляр моего класса ListenerService и использую его для отправки сообщения НАЗАД на мобильный телефон.

Затем действие на мобильном устройстве реализует MessageAPI.MessageListener, и связь работает.

Несколько уроков, которые я усвоил в пути:

  • Запрос PutDataRequest = putDataMapRequest.asPutDataRequest(); Wearable.DataApi.putDataItem (wearApiClient, запрос);

    Запрос должен меняться КАЖДЫЙ раз. Так что, даже если меня интересует только первый пост, этого не произошло, потому что я не менял данные. Поэтому, когда я использовал putString, мне пришлось добавить счетчик для строки и увеличить ее. Нравиться:

    putDataMapRequest.getDataMap().putString("путь", "привет" + (count++));

  • Служба прослушивателя должна использоваться, когда на устройстве еще не запущено действие. Так что если вы хотите начать мобильную деятельность с износа - сделайте сервисный класс в мобильном модуле. Если вы хотите, чтобы на носимом устройстве отображалось уведомление, когда что-то происходит на телефоне — используйте сервис lsitener в модуле износа. Если вам просто нужна связь между двумя работающими приложениями — используйте message или Data API.

person Joakim    schedule 27.10.2014