When users set up a Wear OS device , they connect the Wear OS device to a particular mobile device. The user might later decide to get a new mobile device and connect their existing Wear OS device to this new mobile device. Some data related to a Wear OS device is stored on the currently-connected mobile device.
Начиная с Wear OS 4, при подключении нового мобильного устройства пользователи могут передавать данные Wear OS на это устройство. Синхронизация данных происходит автоматически при передаче.
When the user requests a transfer, the Wearable Data Layer delivers DataItem objects, originally stored on one mobile device, to the other mobile device. This allows a seamless experience for users of your app.
В этом документе описано, как настроить приложение Wear OS и сопутствующее мобильное приложение для поддержки этого сценария.
Подготовка
В процессе передачи данных объекты DataItem обрабатываются по-разному в зависимости от того, какому приложению принадлежат данные:
- Объекты, принадлежащие приложению Wear OS.
- Эти объекты сохраняются на устройстве Wear OS.
- Объекты, принадлежащие мобильному приложению
These objects are archived on the old device. The system then packages the archived data into a
DataItemBufferobject and delivers this data to the mobile app that's installed on the new mobile device.Сразу после доставки архива слой данных Wearable Data Layer вызывает слушатель
onNodeMigrated(), аналогично тому, как ваше приложение получает уведомления о записи данных устройством Wear OS.
Сохранение переданных данных
Сохранение переданных объектов DataItem задача вашего приложения. Вскоре после доставки данных на новое мобильное устройство архив удаляется со старого устройства.
Убедитесь, что каждое из следующих условий выполняется:
- Ваше приложение установлено на обоих мобильных устройствах, участвующих в передаче данных.
- Мобильные приложения, установленные на каждом мобильном устройстве, имеют совпадающие цифровые подписи пакетов.
В противном случае заархивированные объекты DataItem не доставляются и вместо этого удаляются.
Получение данных со старого мобильного устройства
To receive data on the new mobile device that was archived on the old mobile device, your mobile app must implement the onNodeMigrated() callback, part of the WearableListenerService class. To do so, complete the following steps:
В файле сборки вашего мобильного приложения укажите зависимость от последней версии библиотеки для носимых устройств в сервисах Google Play:
dependencies { ... implementation 'com.google.android.gms:play-services-wearable:20.0.1' }Объявите и экспортируйте
WearableListenerServiceв файле манифеста вашего приложения:<service android:name=".snippets.datalayer.MyWearableListenerService" android:exported="true" tools:ignore="ExportedService"> <intent-filter> <action android:name="com.google.android.gms.wearable.NODE_MIGRATED" /> <data android:scheme="wear" android:host="*" /> </intent-filter> </service>
Создайте класс сервиса, который наследует
WearableListenerServiceи переопределяетonNodeMigrated().class MyWearableListenerService : WearableListenerService() { val dataClient: DataClient = Wearable.getDataClient(this) private fun shouldHandleDataItem(nodeId: String, dataItem: DataItem): Boolean { // Your logic here return dataItem.uri.path?.startsWith("/my_feature_path/") == true } private fun handleDataItem(nodeId: String, dataItem: DataItem) { val data = dataItem.data ?: return val path = dataItem.uri.path ?: return // Your logic here if (data.toString().startsWith("Please restore")) { dataClient.putDataItem(PutDataRequest.create(path).setData(data)) } } override fun onNodeMigrated(nodeId: String, archive: DataItemBuffer) { val dataItemsToHandle = mutableListOf<DataItem>() for (dataItem in archive) { if (shouldHandleDataItem(nodeId, dataItem)) { dataItemsToHandle.add(dataItem.freeze()) } } // Callback stops automatically after 20 seconds of data processing. // If you think you need more time, delegate to a coroutine or thread. runBlocking { for (dataItem in dataItemsToHandle) { handleDataItem(nodeId, dataItem) } } } }
Рекомендуем вам
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Интеграция модуля Wear OS
- Экономьте энергию и заряд батареи.