वाई-फ़ाई की जगह की जानकारी: आरटीटी की सुविधा

आप उपलब्ध कराई गई वाई-फ़ाई जगह की जानकारी की सुविधा का इस्तेमाल कर सकते हैं वाई-फ़ाई आरटीटी (दोतरफ़ा यात्रा का समय) एपीआई आस-पास के आरटीटी की सुविधा वाले वाई-फ़ाई ऐक्सेस पॉइंट और मिलते-जुलते ऐप्लिकेशन की दूरी मापने के लिए वाई-फ़ाई अवेयर डिवाइस.

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

इस सटीक जानकारी के साथ, आप सटीक स्थान-आधारित सेवाएं विकसित कर सकते हैं, जैसे के रूप में, साफ़ तौर पर आवाज़ से कंट्रोल करने की सुविधा का इस्तेमाल करें (उदाहरण के लिए, "इसे चालू करें" Light") और जगह के आधार पर जानकारी (उदाहरण के लिए, "क्या कोई खास ऑफ़र है" ?")

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

वाई-फ़ाई आरटीटी और फ़ाइन-टाइम-मेज़रमेंट (एफ़टीएम) से जुड़ी सुविधाएं आईईईई 802.11-2016 मानक के मुताबिक तय किए गए हैं. वाई-फ़ाई आरटीटी के लिए, सटीक समय ज़रूरी है FTM से मिली माप, क्योंकि यह दो के बीच की दूरी की गणना करती है इसके बीच, डिवाइसों के बीच आने-जाने में पैकेट के लिए लगने वाले समय को मापता है और उस समय को प्रकाश की गति से गुणा कर रहा है.

Android 15 (एपीआई लेवल 35) में, IEEE 802.11az नॉन-ट्रिगर आधारित (NTB) रेंजिंग के लिए सहायता शुरू की गई है.

Android वर्शन के हिसाब से, लागू करने के तरीके में अंतर

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

Android 10 (एपीआई लेवल 29) और उसके बाद के वर्शन वाले डिवाइसों पर, एपी लोकेशन डेटा इस रूप में दिखाया जाता है ResponderLocation ऑब्जेक्ट, जिनमें अक्षांश, देशांतर, और ऊंचाई शामिल हैं. उन वाई-फ़ाई आरटीटी एपी के लिए जो सहायता स्थान कॉन्फ़िगरेशन जानकारी/स्थान नागरिक रिपोर्ट (LCI/LCR डेटा), प्रोटोकॉल इस दौरान एक ResponderLocation ऑब्जेक्ट दिखाएगा रेंज की प्रोसेस.

इस सुविधा की मदद से, ऐप्लिकेशन एपी से सीधे तौर पर उनकी जगह की जानकारी मांग सकते हैं. इसके लिए, उन्हें पहले से यह जानकारी सेव करने की ज़रूरत नहीं होती. इस तरह, आपका ऐप्लिकेशन ये काम कर पाएगा APs को ढूंढने और उनकी पोज़िशन जानने का तरीका. भले ही, AP को पहले न पता हो. जैसे, जब कोई उपयोगकर्ता किसी नई इमारत में घुसता है.

Android 15 वर्शन वाले डिवाइसों पर, आईईईई 802.11az एनटीबी रेंज सपोर्ट की सुविधा उपलब्ध है (एपीआई लेवल 35) और उसके बाद वाले वर्शन. इसका मतलब है कि अगर डिवाइस में IEEE 802.11az NTB initiator mode (WifiRttManager.CHARACTERISTICS_KEY_BOOLEAN_NTB_INITIATOR से दिखाया गया) काम करता है, तो आपका ऐप्लिकेशन एक ही रेंज के अनुरोध से, IEEE 802.11mc और IEEE 802.11az, दोनों तरह के एपी ढूंढ सकता है. RangingResult एपीआई को बेहतर बनाया गया है, ताकि कम से कम और ज़्यादा से ज़्यादा वैल्यू के बारे में जानकारी दी जा सके. इसका इस्तेमाल, रेंजिंग मेज़रमेंट के बीच के इंटरवल के लिए किया जा सकता है. हालांकि, इंटरवल को कंट्रोल करने का अधिकार आपके ऐप्लिकेशन के पास ही रहेगा.

ज़रूरी शर्तें

  • रेंजिंग का अनुरोध करने वाले डिवाइस के हार्डवेयर में, 802.11-2016 एफ़टीएम स्टैंडर्ड या 802.11az स्टैंडर्ड (ट्रिगर पर आधारित रेंजिंग नहीं) लागू होना चाहिए.
  • रेंज का अनुरोध करने वाला डिवाइस, Android 9 (एपीआई लेवल) पर चल रहा होना चाहिए 28) या उससे बाद का वर्शन है. डिवाइसों पर, आईईईई 802.11zz नॉन-ट्रिगर आधारित रेंज चालू है जो Android 15 (एपीआई लेवल 35) और उसके बाद के वर्शन पर काम करते हों.
  • रेंजिंग का अनुरोध करने वाले डिवाइस पर, जगह की जानकारी की सुविधा चालू होनी चाहिए. साथ ही, सेटिंग > जगह की जानकारी में जाकर, वाई-फ़ाई स्कैनिंग की सुविधा चालू होनी चाहिए.
  • अगर रेंजिंग का अनुरोध करने वाला ऐप्लिकेशन, Android 13 (एपीआई लेवल 33) या उसके बाद के वर्शन को टारगेट करता है, तो उसके पास NEARBY_WIFI_DEVICES की अनुमति होनी चाहिए. अगर ऐसा कोई ऐप्लिकेशन Android के पुराने वर्शन को टारगेट करता है, तो उसे उसके पास ACCESS_FINE_LOCATION तो अनुमति नहीं है.
  • ऐप्लिकेशन के दिखने या फ़ोरग्राउंड सेवा के तौर पर काम करने के दौरान, ऐप्लिकेशन को ऐक्सेस पॉइंट की रेंज के बारे में क्वेरी करनी चाहिए. ऐप्लिकेशन, बैकग्राउंड में जगह की जानकारी ऐक्सेस नहीं कर सकता.
  • ऐक्सेस पॉइंट में, IEEE 802.11-2016 एफ़टीएम स्टैंडर्ड या IEEE 802.11az स्टैंडर्ड (ट्रिगर पर आधारित रेंजिंग नहीं) लागू होना चाहिए.

सेटअप

अपने ऐप्लिकेशन को वाई-फ़ाई आरटीटी की सुविधा के लिए सेट अप करने के लिए, यहां दिया गया तरीका अपनाएं.

1. अनुमतियों का अनुरोध करना

अपने ऐप्लिकेशन के मेनिफ़ेस्ट में, इन अनुमतियों का अनुरोध करें:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- If your app targets Android 13 (API level 33)
     or higher, you must declare the NEARBY_WIFI_DEVICES permission. -->
<uses-permission android:name="android.permission.NEARBY_WIFI_DEVICES"
                 <!-- If your app derives location information from Wi-Fi APIs,
                      don't include the "usesPermissionFlags" attribute. -->
                 android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
                 <!-- If any feature in your app relies on precise location
                      information, don't include the "maxSdkVersion"
                      attribute. -->
                 android:maxSdkVersion="32" />

NEARBY_WIFI_DEVICES और ACCESS_FINE_LOCATION अनुमतियां, जोखिम वाली अनुमतियां हैं. इसलिए, जब भी उपयोगकर्ता आरटीटी स्कैन ऑपरेशन करना चाहता है, तो आपको रनटाइम पर इनका अनुरोध करना होगा. अगर अनुमति पहले ही नहीं दी गई है, तो आपके ऐप्लिकेशन को उपयोगकर्ता से अनुमति का अनुरोध करना होगा. रनटाइम की अनुमतियों के बारे में ज़्यादा जानने के लिए, ऐप्लिकेशन की अनुमतियां पाने का अनुरोध करना लेख पढ़ें.

2. देखें कि डिवाइस पर वाई-फ़ाई आरटीटी की सुविधा काम करती है या नहीं

यह देखने के लिए कि डिवाइस पर वाई-फ़ाई आरटीटी की सुविधा काम करती है या नहीं, PackageManager API का इस्तेमाल करें:

Kotlin

context.packageManager.hasSystemFeature(PackageManager.FEATURE_WIFI_RTT)

Java

context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_WIFI_RTT);

3. देखें कि वाई-फ़ाई आरटीटी उपलब्ध है या नहीं

डिवाइस पर वाई-फ़ाई आरटीटी मौजूद हो सकता है, लेकिन हो सकता है कि यह उपलब्ध न हो, क्योंकि उपयोगकर्ता ने ने वाई-फ़ाई बंद कर दिया है. उनके हार्डवेयर और फ़र्मवेयर की क्षमताओं के आधार पर, कुछ अगर सॉफ़्टएपी या टेदरिंग का इस्तेमाल किया जा रहा है, तो हो सकता है कि इन डिवाइसों पर वाई-फ़ाई आरटीटी की सुविधा काम न करे. वाई-फ़ाई आरटीटी की सुविधा उपलब्ध है या नहीं, यह पता करने के लिए isAvailable() पर कॉल करें.

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

उदाहरण के लिए:

Kotlin

val filter = IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED)
val myReceiver = object: BroadcastReceiver() {

    override fun onReceive(context: Context, intent: Intent) {
        if (wifiRttManager.isAvailable) {
            …
        } else {
            …
        }
    }
}
context.registerReceiver(myReceiver, filter)

Java

IntentFilter filter =
    new IntentFilter(WifiRttManager.ACTION_WIFI_RTT_STATE_CHANGED);
BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (wifiRttManager.isAvailable()) {
            …
        } else {
            …
        }
    }
};
context.registerReceiver(myReceiver, filter);

ज़्यादा जानकारी के लिए, ब्रॉडकास्ट लेख पढ़ें.

रेंज के लिए अनुरोध करें

रेंज से जुड़ा अनुरोध (RangingRequest) बना दिया गया है APs या वाई-फ़ाई अवेयर पीयर की सूची बनाकर का अनुरोध किया गया है. एक ही रेंजिंग अनुरोध में, कई ऐक्सेस पॉइंट या वाई-फ़ाई अवेयर पीयर की जानकारी दी जा सकती है. सभी डिवाइसों की दूरियां मेज़र की जाती हैं और उन्हें दिखाया जाता है.

उदाहरण के लिए, किसी अनुरोध में addAccessPoint() के तरीके का इस्तेमाल करके, उस ऐक्सेस पॉइंट की जानकारी दी जा सकती है जिसकी दूरी को मेज़र करना है:

Kotlin

val req: RangingRequest = RangingRequest.Builder().run {
    addAccessPoint(ap1ScanResult)
    addAccessPoint(ap2ScanResult)
    build()
}

Java

RangingRequest.Builder builder = new RangingRequest.Builder();
builder.addAccessPoint(ap1ScanResult);
builder.addAccessPoint(ap2ScanResult);

RangingRequest req = builder.build();

पहुंच बिंदु की पहचान इसके ScanResult ऑब्जेक्ट, जो यह हो सकता है कॉल करने पर मिला WifiManager.getScanResults(). Google Analytics 4 पर माइग्रेट करने के लिए, addAccessPoints(List<ScanResult>) का इस्तेमाल करें.

ScanResult ऑब्जेक्ट में IEEE 802.11mc (is80211mcResponder()) और, दोनों हो सकते हैं आईईईई 802.11az नॉन-ट्रिगर (is80211azNtbResponder()) की रेंज में उपलब्ध एपी. आईईईई 802.11ाज़ एनटीबी के हिसाब से काम करने वाले डिवाइस, 802.11mc या AP की क्षमता के हिसाब से 802.11az AP दोनों का इस्तेमाल करता है. जो डिवाइस IEEE 802.11az के साथ काम नहीं करते हैं, वे सभी काम करते हैं आईईईई 802.11mc प्रोटोकॉल का इस्तेमाल करके.

इसी तरह, रेंजिंग अनुरोध, addWifiAwarePeer(MacAddress peer) और addWifiAwarePeer(PeerHandle peer) तरीकों का इस्तेमाल करके, वाई-फ़ाई अवेयर पीयर को उसके एमएसी पते या PeerHandle का इस्तेमाल करके जोड़ सकता है. वाई-फ़ाई अवेयर पीयर खोजने के बारे में ज़्यादा जानकारी के लिए, वाई-फ़ाई अवेयर दस्तावेज़ देखें.

अनुरोध की रेंज

कोई ऐप्लिकेशन, WifiRttManager.startRanging() और नीचे दी गई चीज़ें मुहैया कराना न भूलें: RangingRequest कार्रवाई, इसे बताने के लिए Executor कॉलबैक कॉन्टेक्स्ट, और RangingResultCallback खोजें.

उदाहरण के लिए:

Kotlin

val mgr = context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE) as WifiRttManager
val request: RangingRequest = myRequest
mgr.startRanging(request, executor, object : RangingResultCallback() {

    override fun onRangingResults(results: List<RangingResult>) { … }

    override fun onRangingFailure(code: Int) { … }
})

Java

WifiRttManager mgr =
      (WifiRttManager) Context.getSystemService(Context.WIFI_RTT_RANGING_SERVICE);

RangingRequest request ...;
mgr.startRanging(request, executor, new RangingResultCallback() {

  @Override
  public void onRangingFailure(int code) { … }

  @Override
  public void onRangingResults(List<RangingResult> results) { … }
});

रेंजिंग की प्रोसेस एसिंक्रोनस तरीके से की जाती है. साथ ही, रेंजिंग के नतीजे RangingResultCallback के किसी कॉलबैक में दिखाए जाते हैं:

  • अगर रेंजिंग की पूरी प्रोसेस पूरी नहीं होती है, तो onRangingFailure कॉलबैक को RangingResultCallback में बताए गए स्टेटस कोड के साथ ट्रिगर किया जाता है. ऐसा तब हो सकता है, जब सेवा उस समय रेंजिंग ऑपरेशन को पूरा न कर पाए. उदाहरण के लिए, वाई-फ़ाई बंद होने की वजह से, ऐप्लिकेशन ने रेंजिंग ऑपरेशन के लिए बहुत ज़्यादा अनुरोध किए हों और उसे कम कर दिया गया हो या अनुमति से जुड़ी समस्या की वजह से.
  • रेंजिंग की प्रोसेस पूरी होने पर, onRangingResults कॉलबैक को उन नतीजों की सूची के साथ ट्रिगर किया जाता है जो अनुरोधों की सूची से मैच करते हैं. हर अनुरोध के लिए एक नतीजा. नतीजों का क्रम ऐसा नहीं होता अनुरोधों के क्रम से मेल खाना चाहिए. ध्यान दें कि रेंज पूरा नहीं किया है, लेकिन फिर भी हर नतीजे से पता चलता है कि वह गड़बड़ी है और उन्हें मापा जा सकता है.

रेंजिंग के नतीजों को समझना

हर नतीजे को onRangingResults कॉलबैक को RangingResult से तय किया जाता है ऑब्जेक्ट है. हर अनुरोध के लिए, ये काम करें.

1. अनुरोध की पहचान करना

RangingRequest बनाते समय दी गई जानकारी के आधार पर अनुरोध की पहचान करें: अक्सर, ScanResult में दिया गया MAC पता, ऐक्सेस पॉइंट की पहचान करता है. getMacAddress() के तरीके का इस्तेमाल करके, रेंजिंग के नतीजे से एमएसी पता पाया जा सकता है.

रेंज में उपलब्ध नतीजों की सूची, मिलते-जुलते ऐप्लिकेशन की तुलना में अलग-अलग हो सकती है (ऐक्सेस पॉइंट) सीमा में बताए गए हैं, इसलिए आपको MAC पते का इस्तेमाल करके मिलते-जुलते ऐप्लिकेशन की पहचान करें, न कि नतीजों के क्रम की.

2. यह पता लगाना कि हर एक मेज़रमेंट सही तरीके से हुआ या नहीं

यह पता लगाने के लिए कि कोई मेज़रमेंट पूरा हुआ या नहीं, getStatus() के तरीके का इस्तेमाल करें. इसके अलावा कोई भी अन्य मान STATUS_SUCCESS गड़बड़ी दिखाता है. गड़बड़ी का मतलब है कि इस नतीजे के सभी अन्य फ़ील्ड (ऊपर दिए गए अनुरोध की पहचान को छोड़कर) अमान्य हैं. साथ ही, उससे जुड़ा get* तरीका, IllegalStateException अपवाद के साथ काम नहीं करेगा.

3. हर मेज़रमेंट के लिए नतीजे पाना

हर एक पूरे होने वाले मेज़रमेंट (RangingResult) के लिए, नतीजा फिर से पाया जा सकता है get से जुड़े तरीकों का इस्तेमाल करके वैल्यू:

  • दूरी, मि॰मी॰ में, और माप का मानक विचलन:

    getDistanceMm()

    getDistanceStdDevMm()

  • मेज़रमेंट के लिए इस्तेमाल किए गए पैकेट का आरएसएसआई:

    getRssi()

  • मिलीसेकंड में वह समय जब मेज़रमेंट किया गया था (यह बूट होने के बाद का समय दिखाता है):

    getRangingTimestampMillis()

  • आज़माए गए मापों की संख्या और मापों की संख्या जो सफल रही (और जिस पर दूरी की माप आधारित हैं):

    getNumAttemptedMeasurements()

    getNumSuccessfulMeasurements()

  • क्लाइंट के डिवाइस को कम से कम और ज़्यादा से ज़्यादा समय के लिए 11Z NTB के बीच इंतज़ार करना होगा माप:

    getMinTimeBetweenNtbMeasurementsMicros() और getMaxTimeBetweenNtbMeasurementsMicros() कम से कम और ज़्यादा से ज़्यादा समय दिखाता है. अगर अगले रेंज में कम से कम समय बीतने से पहले अनुरोध किया जाता है, तो एपीआई कैश मेमोरी में सेव की गई रेंज का नतीजा. अगर अगले रेंज मेज़रमेंट का अनुरोध बाद में किया जाता है, तो ज़्यादा से ज़्यादा समय बीत जाने के बाद एपीआई, नॉन-ट्रिगर को बंद कर देता है सेशन शुरू कर सकते हैं और जवाब देने वाले लोगों के साथ नए सेशन पर बातचीत कर सकते हैं स्टेशन. आपको नए रेंजिंग सेशन का अनुरोध नहीं करना चाहिए, क्योंकि इससे रेंजिंग मेज़रमेंट के समय में बढ़ोतरी होती है. 802.11 Az का पूरा फ़ायदा लेने के लिए परफ़ॉर्मेंस के आधार पर नॉन-ट्रिगर, रेंज के अगले अनुरोध को ट्रिगर करें मापे जाने के कम से कम और ज़्यादा से ज़्यादा समय के बीच का अंतर होना चाहिए RangingResult मेज़रमेंट.

  • लॉन्ग ट्रेनिंग फ़ील्ड (एलटीएफ़) में जवाब देने वाले और शुरू करने वाले स्टेशन को दोहराना का इस्तेमाल, IEEE 802.11az NTB के नतीजे के लिए प्रीएंबल में किया गया है:

    get80211azResponderTxLtfRepetitionsCount()

    get80211azInitiatorTxLtfRepetitionsCount()

  • ट्रांसमिट और रिसीव स्पेस टाइम स्ट्रीम (एसटीएस) की संख्या, जिसका इस्तेमाल इनिशिएटर स्टेशन ने IEEE 802.11az एनटीबी नतीजे के लिए किया:

    get80211azNumberOfTxSpatialStreams()

    get80211azNumberOfRxSpatialStreams()

वाई-फ़ाई आरटीटी की सुविधा वाले Android डिवाइस

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

ऐक्सेस पॉइंट

मैन्युफ़ैक्चरर और मॉडल सहायता की तारीख
Nest Wifi Pro (वाई-फ़ाई 6E) इनकी अनुमति है
कंपलाब वाइल्ड एपी इनकी अनुमति है
Google Wi-Fi इनकी अनुमति है
Google Nest का वाई-फ़ाई राऊटर इनकी अनुमति है
Google Nest वाई-फ़ाई पॉइंट इनकी अनुमति है
अरूबा AP-635 इनकी अनुमति है
सिस्को 9130 इनकी अनुमति है
Cisco 9136 इनकी अनुमति है
Cisco 9166 इनकी अनुमति है
सिस्को 9164 इनकी अनुमति है
Aruba AP-505 इनकी अनुमति है
अरूबा एपी-515 इनकी अनुमति है
अरूबा AP-575 इनकी अनुमति है
Aruba AP-518 इनकी अनुमति है
अरूबा एपी-505एच इनकी अनुमति है
अरूबा AP-565 इनकी अनुमति है
Aruba AP-535 इनकी अनुमति है

फ़ोन

निर्माता और मॉडल Android वर्शन
Pixel 6 9 से ज़्यादा
Pixel 6 Pro 9.0+
Pixel 5 9.0+
Pixel 5a 9.0+
Pixel 5a (5G) 9.0+
Xiaomi Mi 10 Pro 9 से ज़्यादा
Xiaomi Mi 10 9.0+
Xiaomi Redmi Mi 9T Pro 9 से ज़्यादा
Xiaomi Mi 9T 9.0+
Xiaomi Mi 9 9 से ज़्यादा
Xiaomi Mi Note 10 9 से ज़्यादा
Xiaomi Mi Note 10 Lite 9.0+
Xiaomi Redmi Note 9S 9.0+
Xiaomi Redmi Note 9 Pro 9 से ज़्यादा
Xiaomi Redmi Note 8T 9 से ज़्यादा
Xiaomi Redmi Note 8 9 से ज़्यादा
Xiaomi Redmi K30 Pro 9 से ज़्यादा
Xiaomi Redmi K20 Pro 9 से ज़्यादा
Xiaomi Redmi K20 9.0+
Xiaomi Redmi Note 5 Pro 9 से ज़्यादा
Xiaomi Mi CC9 Pro 9 से ज़्यादा
LG G8X ThinQ 9 से ज़्यादा
LG V50S थिनक्यू 9 से ज़्यादा
LG V60 थिनक्यू 9 से ज़्यादा
LG V30 9.0+
Samsung Galaxy Note 10+ 5G 9.0+
Samsung Galaxy S20+ 5G 9 से ज़्यादा
Samsung Galaxy S20 और इसके बाद के वर्शन 9 से ज़्यादा
Samsung Galaxy S20 5G 9.0+
Samsung Galaxy S20 Ultra 5G 9 से ज़्यादा
Samsung Galaxy S20 9.0+
Samsung Galaxy Note 10+ 9.0+
Samsung Galaxy Note 10 5G 9.0+
Samsung Galaxy Note 10 9 से ज़्यादा
Samsung A9 Pro 9 से ज़्यादा
Google Pixel 4 XL 9 से ज़्यादा
Google Pixel 4 9 से ज़्यादा
Google Pixel 4a 9.0+
Google Pixel 3 XL 9.0+
Google Pixel 3 9 से ज़्यादा
Google Pixel 3a XL 9.0+
Google Pixel 3a 9 से ज़्यादा
Google Pixel 2 XL 9.0+
Google Pixel 2 9 से ज़्यादा
Google Pixel 1 XL 9.0+
Google Pixel 1 9.0+
पोको एक्स2 9 से ज़्यादा
Sharp Aquos R3 SH-04L 9.0+

खुदरा, वेयरहाउस, और डिस्ट्रिब्यूशन सेंटर के डिवाइस

निर्माता और मॉडल Android वर्शन
ज़ीब्रा PS20 10.0 से ज़्यादा
Zebra TC52/TC52HC 10.0+
ज़ीब्रा टीसी57 10.0 से ज़्यादा
ज़ीब्रा टीसी72 10.0+
ज़ीब्रा टीसी77 10.0+
ज़ेब्रा MC93 10.0 से ज़्यादा
ज़ीब्रा TC8300 10.0+
Zebra VC8300 10.0+
Zebra EC30 10.0+
Zebra ET51 10.0 से ज़्यादा
ज़ीब्रा ET56 10.0+
Zebra L10 10.0+
ज़ेब्रा CC600/CC6000 10.0+
zebra MC3300x 10.0 से ज़्यादा
ज़ेब्रा MC330x 10.0 से ज़्यादा
Zebra TC52x 10.0+
ज़ीब्रा TC57x 10.0 से ज़्यादा
zebra EC50 (LAN और HC) 10.0 से ज़्यादा
zebra EC55 (WAN) 10.0 से ज़्यादा
Zebra WT6300 10.0 से ज़्यादा
स्कोर्पियो X5 10.0 से ज़्यादा