وقتی کاربران دستگاه Wear OS را راهاندازی میکنند، دستگاه Wear OS را به دستگاه همراه خاصی متصل میکنند. کاربر ممکن است بعداً تصمیم بگیرد دستگاه همراه جدیدی تهیه کند و دستگاه Wear OS موجودش را به این دستگاه همراه جدید متصل کند. برخیاز دادههای مرتبط با دستگاه Wear OS در دستگاه همراه متصل فعلی ذخیره میشود.
از Wear OS 4، وقتی کاربران به دستگاه همراه جدیدی متصل میشوند، میتوانند دادههای Wear OS را به دستگاه همراه جدید منتقل کنند. دادهها هنگام انتقال بهطور خودکار همگامسازی میشوند.
وقتی کاربر درخواست انتقال میدهد، لایه دادههای پوشیدنی
DataItem اشیایی را که دراصل در یک دستگاه همراه ذخیره شدهاند به دستگاه همراه دیگر منتقل میکند. این کار تجربه یکپارچهای را برای کاربران برنامهتان فراهم میکند.
این سند توضیح میدهد که چگونه میتوانید برنامه Wear OS و برنامه همراه تلفن همراه آن را برای پشتیبانی از این سناریو پیکربندی کنید.
آمادهسازی
فرایند انتقال داده DataItem شیء را بهشیوههای مختلفی مدیریت میکند، بسته به اینکه
کدام برنامه مالک دادهها است:
- اشیاء متعلق به برنامه Wear OS
- این اشیا در دستگاه Wear OS حفظ میشوند.
- اشیا متعلق به برنامه تلفن همراه
این اشیا در دستگاه قدیمی بایگانی میشوند. سپس سیستم دادههای بایگانیشده را در یک شیء
DataItemBufferبستهبندی میکند و این دادهها را به برنامه تلفن همراه نصبشده در دستگاه همراه جدید تحویل میدهد.بلافاصله پساز تحویل بایگانی، «لایه دادههای پوشیدنی» شنونده
onNodeMigrated()را فرا میخواند، به همان روشی که برنامه شما هنگام نوشتن دادهها توسط دستگاه Wear OS مطلع میشود.
حفظ دادههای منتقلشده
حفظ کردن DataItem شیء منتقلشده برعهده برنامه شما است.
کمی پساز اینکه دادهها به دستگاه همراه جدید تحویل داده شد، بایگانی از دستگاه قدیمی حذف میشود.
مطمئن شوید که هریک از شرایط زیر درست باشد:
- برنامه شما روی هر دو دستگاه همراهی که در انتقال نقش دارند نصب شده باشد.
- برنامههای تلفن همراه نصبشده در هر دستگاه همراه دارای امضاهای بسته مطابق باشند.
درغیراینصورت، DataItem شیء بایگانیشده تحویل داده نمیشود و بهجای آن
دور انداخته میشود.
دریافت دادهها از دستگاه همراه قدیمی
برای دریافت دادهها در دستگاه تلفن همراه جدید که در دستگاه تلفن همراه قدیمی بایگانی شده است، برنامه تلفن همراه شما باید
کاربرگ onNodeMigrated() را که بخشی از کلاس WearableListenerService است پیادهسازی کند. برای انجام این کار، مراحل زیر را تکمیل کنید:
در فایل ساخت برنامه تلفن همراهتان، وابستگی به جدیدترین نسخه کتابخانه پوشیدنی در «خدمات 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) } } } }
توصیهشده برای شما
- توجه: نوشتار پیوند وقتی جاوا اسکریپت خاموش است نمایش داده میشود
- ادغام کردن واحد Wear OS
- حفظ شارژ باتری و برق