2

Я использую Tizen SDK для Wearable с сайта samsung-gear, чтобы связаться с приложением Android android с устройством Samsung Gear 2. Я могу отправлять уведомления на передачу, и как только я запускаю потребительское приложение на передаче 2, я могу передавать данные между часами и моим телефоном Android.Как проверить, совместим ли Samsung Gear 2 с Android-устройством?

То, что я пытаюсь сделать, это проверить в приложении Android, если телефон работает в паре с редуктором 2. Что-то столь же простое, как создание объекта связи, используя службу аксессуаров и вызова метода, как isPaired() ?:

Я думаю, что примеры SDK, такие как приложение comsumer/provider, которое они предоставляют на своем сайте, уже предполагают, что устройство сопряжено, поэтому они показывают, как передавать данные между телефоном и редуктором. Тем не менее, я ищу что-то такое же простое, как просить телефон, если он сопряжен с устройством передачи, что должно быть предпосылкой для передачи данных, что автоматически делается Samsung Gear Manager. Я верю прямо сейчас.

Примечание. В случае примера поставщиков/потребительских приложений можно просто проверить, доступно ли какое-либо соединение с использованием кода в них. Но подключение к передаче данных разрешено только тогда, когда я вручную запускаю потребительское приложение с устройства передачи, в противном случае он действует, как редуктор не сопряжен, даже если он есть.

ответ

3

Я считаю, что это не самая популярная тема в эти дни, поэтому я опубликую то, что я придумал, хотя я сомневаюсь, что кто-то понадобится, не будучи идеальным, это самый близкий путь, который я мог бы достичь своей цели, используя доступная документация.

Следует также упомянуть, что слайд this помог мне остаться на ходу.

В моем решении должно быть активное двухстороннее соединение между виджетами передачи (consumer/.wgt) и приложением стороны (поставщик/.apk), как в example application, предоставленном компанией Samsung (Hello Accessory) все время, по крайней мере, в то время, когда я хотел проверить условие сопряжения. Документация относится к нему как:

Привет механизм представляет собой простое приложение, которое состоит из:

  • хоста-приложений на стороне (провайдер): HelloAccessoryProvider.apk
  • носимой сторона Применения (потребитель) : HelloAccessoryConsumer.wgt (веб-приложение)

Смотрите, что обе стороны имеют некоторые конфигурации XML и Android требует специальных разрешений Wh ich подробно объясняются в документации Hello Gear.

Эта двухсторонняя связь обеспечивается платформой аксессуаров Samsung на сетевом уровне (через Samsung Accessory Protocol, SAP), учитывая, что обе стороны реализуют один и тот же профиль служебных услуг, снова настроенный через файлы xml на обоих концах (услуга имя, идентификатор канала и т. д.).

Architecture of the connection

Android сторона реализует протокол в качестве сервиса, расширяя SAAgent абстрактный класс. Затем виджет на стороне передачи (.wgt) может вызывать обратные вызовы SAAgent, а связь между провайдером/потребителем обрабатывается через SASocket объекты, заявленные на обоих концах по предопределенному каналу в файлах конфигурации xml.

SAAgent workflow

Пожалуйста, обратите внимание, что эта связь должна быть инициализирована на обоих концах, в моем случае я должен был открыть приложение виджет один раз Гир (я считаю, что должен быть способ, чтобы начать виджет передач через намерение или уведомление, каким-то образом, но пока не удалось найти) после того, как приложение Android запустилось, здесь началось означает, что служба SAAgent подключена и привязана к Activity, имея право на получение обратных вызовов и отправки сообщений состояния остальной части приложения через трансляций. Например, количество активных соединений или любая передача данных между гнездом передачи и приложениями Android могут быть выполнены таким образом.

Обратите внимание, что если вам не нужно передавать данные между виджетами передачи и приложением Android, вы можете быть в порядке с уведомлениями. Единственное требование для отправки уведомлений Gear из приложений Android, похоже, состоит в том, что Gear сопряжен с вашим телефоном и подключен через Bluetooth. Тогда вы можете просто отправить намерение, как объяснено более подробно here в разделе 6. Все, что вам нужно должно быть разрешение:

com.samsung.wmanager.ENABLE_NOTIFICATION 

и некоторые определения метаданных в файле ApplicationManifest.xml описано в том же разделе.

<meta-data 
android:name="master_app_packagename" 
android:value="com.example.gearMasterApp"/> 
<meta-data 
android:name="app_notification_maxbyte" 
android:value="300 "/> 

А вот пример код для умысла, для того, чтобы посылать уведомления Гира:

public static final String ALERT_NOTIFICATION = 
“com.samsung.accessory.intent.action.ALERT_NOTIFICATION_ITEM”; 
public static final int NOTIFICATION_SOURCE_API_SECOND = 3; 
Bitmap bitmapImg; 
// Put data to Intent 
Intent myIntent = new Intent(ALERT_NOTIFICATION); 
myIntent.putExtra("NOTIFICATION_PACKAGE_NAME", “com.example.gearApp”); 
myIntent.putExtra("NOTIFICATION_VERSION", NOTIFICATION_SOURCE_API_SECOND); 
myIntent.putExtra("NOTIFICATION_TIME", System.currentTimeMillis();); 
myIntent.putExtra("NOTIFICATION_MAIN_TEXT", “Title Text”); 
myIntent.putExtra("NOTIFICATION_TEXT_MESSAGE", ”Body text); 
byte [] byteArray = convertResizeBitmapToByte(bitmapImg); 
myIntent.putExtra("NOTIFICATION_APP_ICON", byteArray); 
myIntent.putExtra("NOTIFICATION_LAUNCH_INTENT", “com.example.gearMasterApp”); 
myIntent.putExtra("NOTIFICATION_LAUNCH_TOACC_INTENT", “com.example.gearSideApp”); 
sendBroadcast(myIntent); 

public byte[] convertResizeBitmapToByte(Bitmap bitmap){ 
Bitmap scBitmap = Bitmap.createScaledBitmap(bitmap, 75, 75, false); 
ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(); 
scBitmap.compress(Bitmap.CompressFormat.PNG, 50, byteArrayStream); 

return byteArrayStream.toByteArray(); 
} 

После уведомления считывает на стороне передачи, вы можете получить пристальные действия вместе с некоторые дополнительные параметры:

Намерение Действие: "com.samsung.accessory.intent.action.UPDATE_NOTIFICATION_ITEM"

Это может быть другой подход для проверки активной связи с Gear и вашим телефоном, но нет никакой гарантии, что уведомление будет прочитано, и мое дело потребовало, чтобы связь Gear была опциональной, чтобы позволить Android-приложению продолжить это задачи, даже если нет активной связи с Gear.

Об исходном вопросе, где я попросил способ определить, спарен ли Gear или нет, я попробовал перечислить сопряженные устройства Bluetooth, используя метод BluetoothAdapter от getBondedDevices(), но он показывает, что ваш Gear сопряжен, даже если ваш Gear отключил, чего было недостаточно для моих нужд, и я не счел это логичным. Это правда, как только ваше устройство снова включится.

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