ویژگیهایی که پس از راهاندازی دستگاه میتوانند مورد استفاده قرار گیرند عبارتند از:
ویژگی OtaSoftwareUpdateRequestor
این ویژگی رابطی برای نظارت بر بهروزرسانی نرمافزار OTA در دستگاه دوربین فراهم میکند. پس از راهاندازی، دوربین بهروزرسانی را آغاز کرده و وضعیت خود را به برنامه گزارش میدهد. به محض اینکه برنامه وضعیت تکمیل بهروزرسانی نرمافزار را دریافت کند، دوربین میتواند شروع به پخش زنده کند.
کد نمونه و توضیحات زیر نحوه استفاده از این ویژگی را نشان میدهد.
withTimeout(OTA_TIMEOUT_MS) {
device.type(OtaRequestorDevice)
.mapNotNull { it?.trait(OtaSoftwareUpdateRequestor) }
.distinctUntilChanged()
.transformWhile { trait ->
emit(trait)
!isTerminalState(trait.updateState)
}
.collect { trait ->
updateState = trait.updateState
updateStateProgress = trait.updateStateProgress
}
}
Timeout:
withTimeoutحداکثر مدت زمان (OTA_TIMEOUT_MS) را برای فرآیند نظارت اعمال میکند. اگر بهروزرسانی در این مدت زمان کامل نشود، timeout میشود.مشاهده تغییرات ویژگی: عملگر
.distinctUntilChanged()تضمین میکند که کد بعدی در زنجیره فقط زمانی واکنش نشان میدهد که وضعیت ویژگی واقعاً تغییر کند، که این امر باعث میشود این روش نسبت به نمونهبرداری مداوم کارآمدتر باشد.پردازش تا زمان تکمیل: عملگر
.transformWhileتا زمانی کهupdateStateOTA یک وضعیت پایانی (مانند موفقیت یا شکست) نباشد، به پردازش بهروزرسانیها ادامه میدهد.وضعیت جمعآوری: برای هر تغییر وضعیت، بلوک
.collectاجرا میشود تا متغیرهایupdateStateوupdateStateProgressبا آخرین مقادیر از trait بهروزرسانی شوند.
برای اطلاعات بیشتر، به مرجع ویژگی OtaSoftwareUpdateRequestor مراجعه کنید.
ویژگی ConfigurationDone
این ویژگی برای فعالسازی دوربین ضروری نیست، اما به برنامه اجازه میدهد تا با تنظیم ویژگی AppConfigurationComplete روی true ، زمانی که دستگاه کاملاً راهاندازی و قابل استفاده شد را ردیابی کند. این ویژگی باید پس از ویژگی OtaSoftwareUpdateRequestor استفاده شود.
device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }