Kullanıcılar Wear OS cihazı kurarken Wear OS cihazı belirli bir mobil cihaza bağlar. Kullanıcı daha sonra yeni bir mobil cihaz almaya ve mevcut Wear OS cihazını bu yeni mobil cihaza bağlamaya karar verebilir. Wear OS cihazla ilgili bazı veriler, o anda bağlı olan mobil cihazda saklanır.
Wear OS 4'ten itibaren kullanıcılar yeni bir mobil cihaza bağlandıklarında Wear OS verilerini yeni mobil cihaza aktarabilirler. Veriler aktarılırken otomatik olarak senkronize edilir.
Kullanıcı aktarım isteğinde bulunduğunda Wearable Veri Katmanı, başlangıçta bir mobil cihazda depolanan DataItem nesnelerini diğer mobil cihaza aktarır. Bu sayede uygulamanızın kullanıcıları sorunsuz bir deneyim yaşar.
Bu dokümanda, Wear OS uygulamanızı ve tamamlayıcı mobil uygulamasını bu senaryoyu destekleyecek şekilde nasıl yapılandırabileceğiniz açıklanmaktadır.
Hazırlık
Veri aktarımı işlemi, verilerin hangi uygulamaya ait olduğuna bağlı olarak DataItem nesnelerini farklı şekilde işler:
- Wear OS uygulamasına ait nesneler
- Bu nesneler Wear OS cihazda korunur.
- Mobil uygulamaya ait nesneler
Bu nesneler eski cihazda arşivlenir. Ardından sistem, arşivlenen verileri bir
DataItemBuffernesnesinde paketler ve bu verileri yeni mobil cihaza yüklenen mobil uygulamaya gönderir.Arşiv teslim edildikten hemen sonra Wearable Data Layer, Wear OS cihaz tarafından veri yazıldığında uygulamanızın bildirim almasına benzer şekilde
onNodeMigrated()dinleyicisini çağırır.
Aktarılan verileri koruma
Aktarılan DataItem nesnelerini korumak uygulamanızın sorumluluğundadır.
Veriler yeni mobil cihaza aktarıldıktan kısa bir süre sonra arşiv eski cihazdan silinir.
Aşağıdaki koşulların her birinin karşılandığından emin olun:
- Uygulamanız, aktarımda yer alan her iki mobil cihaza da yüklenir.
- Her mobil cihaza yüklenen mobil uygulamaların paket imzaları eşleşir.
Aksi takdirde, arşivlenen DataItem nesneleri teslim edilmez ve silinir.
Eski mobil cihazdan veri alma
Eski mobil cihazda arşivlenen verileri yeni mobil cihazda almak için mobil uygulamanızın, WearableListenerService sınıfının bir parçası olan onNodeMigrated() geri çağırma işlevini uygulaması gerekir. Bunun için aşağıdaki adımları uygulayın:
Mobil uygulamanızın derleme dosyasına, Google Play Hizmetleri'ndeki giyilebilir cihaz kitaplığının en yeni sürümüne olan bağımlılığı ekleyin:
dependencies { ... implementation 'com.google.android.gms:play-services-wearable:20.0.1' }Uygulamanızın manifest dosyasında
WearableListenerServiceöğesini beyan edip dışa aktarın:<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>
WearableListenerServicesınıfını genişleten veonNodeMigrated()yöntemini geçersiz kılan bir hizmet sınıfı oluşturun.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) } } } }
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Wear OS modülü entegre etme
- Güç ve pil tasarrufu yapma