ویژگی‌های پس‌از راه‌اندازی برای آماده‌سازی دوربین

ویژگی‌هایی که پس‌از آماده‌سازی دستگاه می‌توان از آن‌ها استفاده کرد عبارت‌اند از:

ویژگی OtaSoftwareUpdateRequestor

   پیاده‌سازی‌شده در «برنامه نمونه برای Android»   

این مشخصه رابطی برای نظارت بر به‌روزرسانی نرم‌افزار ازطریق 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
    }
}
  • زمان اتمام: withTimeout حداکثر مدت (OTA_TIMEOUT_MS) برای فرایند پایش را اعمال می‌کند. اگر به‌روزرسانی در این مدت تکمیل نشود، زمان آن به‌پایان می‌رسد.

  • مشاهده تغییرات مشخصه: عامل .distinctUntilChanged() تضمین می‌کند که کد بعدی در زنجیره فقط زمانی واکنش نشان می‌دهد که وضعیت مشخصه واقعاً تغییر کند، که این امر آن را کارآمدتر از نظرسنجی مداوم می‌کند.

  • پردازش تا تکمیل: تا زمانی که .transformWhile عامل در وضعیت پایانی نباشد (مثل موفقیت یا شکست)، updateState عامل OTA به پردازش به‌روزرسانی‌ها ادامه می‌دهد.

  • وضعیت جمع‌آوری: برای هر تغییر وضعیت، بلوک .collect اجرا می‌شود تا متغیرهای updateState و updateStateProgress با جدیدترین مقادیر از مشخصه به‌روز شوند.

برای اطلاعات بیشتر، به مرجع مشخصه OtaSoftwareUpdateRequestor مراجعه کنید.

ویژگی ConfigurationDone

این مشخصه برای فعال‌سازی دوربین الزامی نیست، اما به برنامه اجازه می‌دهد با تنظیم کردن مشخصه AppConfigurationComplete روی true، زمان راه‌اندازی کامل و قابل‌استفاده بودن دستگاه را ردیابی کند. این مشخصه باید پس‌از مشخصه OtaSoftwareUpdateRequestor استفاده شود.

device.trait(ConfigurationDone).first().update { setAppConfigurationComplete(true) }