हमेशा चालू रहने वाले ऐप्लिकेशन और सिस्टम ऐंबियंट मोड

किसी उपयोगकर्ता के न होने पर, Wear OS किसी चालू ऐप्लिकेशन के लिए कम पावर वाले मोड में जाने का हैंडल अपने-आप ले लेता है लंबे समय तक इस्तेमाल करते हैं. इसे सिस्टम ऐंबियंट मोड कहते हैं. अगर उपयोगकर्ता तय समय में फिर से स्मार्टवॉच को अनलॉक करने के बाद, Wear OS उपयोगकर्ता को वापस उस ऐप्लिकेशन पर ले आता है जहां उन्होंने इसे छोड़ दिया.

कुछ खास मामलों में—उदाहरण के लिए, कोई उपयोगकर्ता इस दौरान धड़कन की दर और रफ़्तार देख सकता है दौड़ें—आप इस सुविधा से यह भी कंट्रोल किया जा सकता है कि कम पावर वाले ऐंबियंट मोड में क्या दिखे. चलने वाले Wear OS ऐप्लिकेशन ऐंबियंट मोड और इंटरैक्टिव, दोनों मोड में ही हमेशा चालू रहने वाले ऐप्लिकेशन कहते हैं.

किसी ऐप्लिकेशन को लगातार दिखने से, बैटरी लाइफ़ पर असर पड़ता है. इसलिए, जोड़ते समय ध्यान रखें कि इस सुविधा को आपके ऐप्लिकेशन पर लागू करना चाहिए.

अपना प्रोजेक्ट कॉन्फ़िगर करना

ऐंबियंट मोड पर काम करने के लिए, यह तरीका अपनाएं:

  1. इसके कॉन्फ़िगरेशन के आधार पर अपना प्रोजेक्ट बनाएं या अपडेट करें: बनाएं और पहने जाने वाले ऐप्लिकेशन पेज को चला सकते हैं.
  2. Android मेनिफ़ेस्ट फ़ाइल में WAKE_LOCK की अनुमति जोड़ें:
<uses-permission android:name="android.permission.WAKE_LOCK" />

हमेशा-चालू मोड को चालू करें

AmbientLifecycleObserver क्लास का इस्तेमाल करने के लिए, ये काम करें:

  1. AmbientLifecycleObserver.AmbientLifecycleCallback इंटरफ़ेस का इस्तेमाल करें, जैसा कि नीचे दिए गए उदाहरण में दिखाया गया है. इस चरण में, तरीके खाली हैं. हालांकि, बाद में गाइड में बताया गया है कि कौनसे बदलाव करने हैं आपको यह पक्का करना होगा कि ऐंबियंट मोड में जाने और उससे बाहर निकलने के लिए, विज़ुअलाइज़ेशन का इस्तेमाल किया जा रहा है.

    Kotlin

    val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback {
        override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) {
        // ... Called when moving from interactive mode into ambient mode.
        }
    
        override fun onExitAmbient() {
        // ... Called when leaving ambient mode, back into interactive mode.
        }
    
        override fun onUpdateAmbient() {
        // ... Called by the system in order to allow the app to periodically
        // update the display while in ambient mode. Typically the system will
        // call this every 60 seconds.
        }
    }
  2. AmbientLifecycleObserver बनाएं और ऑब्ज़र्वर रजिस्टर करें. आम तौर पर, यह Wear OS के लिए उपलब्ध विकल्प का इस्तेमाल करने पर, onCreate() या टॉप-लेवल कंपोज़ेबल में इस्तेमाल किया जाएगा गतिविधि के पूरे लाइफ़साइकल के दौरान, हमेशा चालू रहने वाली गतिविधि को चालू रखने की अनुमति देती है.

    Kotlin

    private val ambientObserver = AmbientLifecycleObserver(activity, callback)
    
    override fun onCreate(savedInstanceState: Bundle) {
      super.onCreate(savedInstanceState)
      lifecycle.addObserver(observer)
    
      // ...
    }
    
  3. हमेशा चालू रहने पर, removeObserver() पर कॉल करके ऑब्ज़र्वर को हटाएं अब व्यवहार की ज़रूरत नहीं है. उदाहरण के लिए, इस तरीके को का onDestroy() तरीका गतिविधि.

हमेशा चालू रहने वाले ऐप्लिकेशन, बैकग्राउंड में चल सकते हैं

Wear OS 5 और इसके बाद के वर्शन में, यह सिस्टम हमेशा चालू रहने वाले ऐप्लिकेशन को बैकग्राउंड में ट्रांसफ़र कर देगा वे कुछ समय तक ऐंबियंट मोड में दिखते हैं. उपयोगकर्ता यह कर सकते हैं सिस्टम की सेटिंग में जाकर, टाइम आउट को कॉन्फ़िगर करें.

अगर हमेशा चालू रहने वाला आपका ऐप्लिकेशन, उपयोगकर्ता के उस टास्क की जानकारी दिखाता है जो पहले से चल रहा है, जैसे कि संगीत चलाना या कसरत के सत्र पर जाना—तो शायद आप जारी गतिविधि को जारी रखना चाहें टास्क खत्म होने तक दिखेगा. ऐसा करने के लिए, पोस्ट करने के लिए Ongoing Activity API का इस्तेमाल करें एक चल रही सूचना, जो आपकी हमेशा चालू रहने वाली गतिविधि से जुड़ी होती है.

सिस्टम को मौजूदा गतिविधि की पहचान करने के लिए, नोटिफ़िकेशन का टच इंटेंट, हमेशा चालू रहने वाली आपकी गतिविधि की जानकारी देता हो, जैसा कि यहां दिया गया कोड स्निपेट जोड़ें:

// Create a pending intent that point to your always-on activity
val touchIntent =
    PendingIntent.getActivity(
        context,
        0,
        Intent(context, MyAlwaysOnActivity::class.java),
        PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )

val notificationBuilder =
    NotificationCompat.Builder(this, CHANNEL_ID)
    // ...
    .setOngoing(true)

val ongoingActivity =
    OngoingActivity.Builder(
        applicationContext, NOTIFICATION_ID, notificationBuilder
    )
    // ...
    .setTouchIntent(touchIntent)
    .build()

ongoingActivity.apply(applicationContext)

notificationManager.notify(
    NOTIFICATION_ID,
    notificationBuilder.build()
)

ऐंबियंट मोड में विज़ुअल दिखने के तरीके में बदलाव करें

डिफ़ॉल्ट रूप से, ऑलवेजऑन लागू करने पर स्क्रीन ऐंबियंट मोड में जाने पर. आप इसे संशोधित कर सकते हैं तरीकों को ओवरराइड करके व्यवहार AmbientLifecycleCallback.

ऊर्जा बचाने के लिए, नीचे दिए गए काम करें:

  • इससे कम पिक्सल चमकते हैं और स्क्रीन का ज़्यादातर हिस्सा काला हो जाता है. इन बातों पर ध्यान दें ऐंबियंट मोड में सिर्फ़ अहम जानकारी दिखाती है. साथ ही, ज़्यादा जानकारी देती है उपयोगकर्ता के इंटरैक्टिव मोड में जाने पर जानकारी.
  • कम बार अपडेट करने के लिए कोई भी कॉन्टेंट अडजस्ट करें. उदाहरण के लिए, टाइमर दिखाएं निकटतम सेकंड के बजाय निकटतम मिनट पर ले जाएं.
  • AmbientDetails में ऑब्जेक्ट onEnterAmbient() को पास किया गया:
    • अगर deviceHasLowBitAmbient सेट है, तो जहां भी हो सके एंटी-एलियासिंग को बंद करें.
    • अगर burnInProtectionRequired सेट है, तो विज़ुअलाइज़ेशन को आस-पास बदलें समय-समय पर, और गहरे सफ़ेद क्षेत्रों से बचें.

हमारा सुझाव है कि Wear OS के लिए Compose की सुविधा का इस्तेमाल करते समय, आप कॉलबैक के ये तरीके इस्तेमाल करें राज्य को अपडेट करने के लिए, इससे सिस्टम को यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करें.

यह कैसे किया जा सकता है, इसके उदाहरण के लिए, कंपोज़-आधारित GitHub पर कसरत का सैंपल, जो AmbientAware का इस्तेमाल करता है इसे हॉरोलॉजिस्ट लाइब्रेरी से कंपोज़ किया जा सकता है.