डॉकिंग की स्थिति तय करें और उसे मॉनिटर करें

Android पर चलने वाले डिवाइसों को अलग-अलग तरह के डॉक में डॉक किया जा सकता है. इनमें कार डॉक, होम डॉक, और डिजिटल या ऐनालॉग डॉक शामिल हैं. आम तौर पर डॉक की स्थिति, चार्जिंग की स्थिति से जुड़ी होती है. ऐसा इसलिए होता है, क्योंकि कई डॉक डॉक डिवाइसों को पावर देते हैं.

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

डॉक की स्थिति को स्टिकी Intent के तौर पर भी ब्रॉडकास्ट किया जाता है. इससे, आपको यह जानने में मदद मिलती है कि डिवाइस को डॉक किया गया है या नहीं और अगर ऐसा है, तो वह किस तरह के डॉक में है.

डॉक की मौजूदा स्थिति का पता लगाना

डॉक की स्थिति की जानकारी, ACTION_DOCK_EVENT कार्रवाई के स्टिकी ब्रॉडकास्ट में अतिरिक्त के तौर पर शामिल की जाती है. यह स्टिक होता है. इसलिए, ब्रॉडकास्ट रिसीवर के तौर पर null को पास करके, registerReceiver() को कॉल किया जा सकता है. नीचे दिए गए स्निपेट में इस प्रोसेस को पूरा करने का तरीका बताया गया है:

KotlinJava
val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter ->
    context
.registerReceiver(null, ifilter)
}
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

EXTRA_DOCK_STATE एक्सट्रा से, डॉकिंग की मौजूदा स्थिति निकाली जा सकती है:

KotlinJava
val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1
val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
int dockState -1;
if (dockStatus != null) {
  dockState
= dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1);
}
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

मौजूदा डॉक टाइप का पता लगाना

अगर कोई डिवाइस डॉक किया गया है, तो उसे इन चार अलग-अलग तरह के डॉक में से किसी भी एक में डॉक किया जा सकता है:

  • कार
  • डेस्क
  • लो-एंड (एनालॉग) डेस्क
  • हाई-एंड (डिजिटल) डेस्क

बाद के दो विकल्प सिर्फ़ Android API लेवल 11 में उपलब्ध कराए गए हैं. इसलिए, खास तौर पर डिजिटल या ऐनालॉग के बजाय, सिर्फ़ डॉक के टाइप में दिलचस्पी होने पर सभी तीन तरह के डेस्क को देखना अच्छा होता है:

KotlinJava
val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR
val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK
       
|| dockState == EXTRA_DOCK_STATE_LE_DESK
       
|| dockState == EXTRA_DOCK_STATE_HE_DESK
boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                 dockState
== EXTRA_DOCK_STATE_LE_DESK ||
                 dockState
== EXTRA_DOCK_STATE_HE_DESK;