Android 8.0 में जोड़ी गई Wi-Fi Aware सुविधा की मदद से, इस सुविधा वाले डिवाइसों को इंटरनेट या मोबाइल नेटवर्क के ऐक्सेस के बिना, सीधे तौर पर Wi-Fi Aware प्रोटोकॉल का इस्तेमाल करके एक-दूसरे को खोजा जा सकता है, कनेक्ट किया जा सकता है, और रेंज (Android 9 में जोड़ी गई) तय की जा सकती है. यह सुविधा, Wi-Fi Alliance (WFA) के Wi-Fi Aware स्पेसिफ़िकेशन (वर्शन 2.0, 3.0, 3.1, और 4.0) पर आधारित है. इसकी मदद से, भरोसेमंद डिवाइसों और ऐप्लिकेशन के बीच, ज़्यादा डेटा को आसानी से शेयर किया जा सकता है. हालांकि, ये डिवाइस और ऐप्लिकेशन नेटवर्क से कनेक्ट नहीं होते.
उदाहरण और सोर्स
इस सुविधा का इस्तेमाल करने के लिए, डिवाइस बनाने वाली कंपनियों को Wi-Fi वेंडर एचएएल लागू करना होगा. Android 14 और इसके बाद के वर्शन में, वेंडर एचएएल इंटरफ़ेस को एआईडीएल का इस्तेमाल करके तय किया जाता है. Android 13 और इससे पुराने वर्शन के लिए, वेंडर एचएएल इंटरफ़ेस को HIDL का इस्तेमाल करके तय किया जाता है.
वाई-फ़ाई अवेयर की सुविधा का इस्तेमाल करने के लिए, वाई-फ़ाई इंटरफ़ेस का पालन करें. लागू किए गए इंटरफ़ेस के आधार पर, यह इनमें से कोई एक होता है:
- एआईडीएल:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
या उसके बाद का वर्शन
यह देखने के लिए कि यह एआईडीएल और एचआईडीएल इंटरफ़ेस से कैसे जुड़ा है, लेगसी वाई-फ़ाई एचएएल देखें: hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h.
लागू करना
डिवाइस बनाने वाली कंपनियों को फ़्रेमवर्क और एचएएल/फ़र्मवेयर, दोनों के लिए सहायता देनी होगी:
- फ़्रेमवर्क:
- AOSP कोड
- Aware को चालू करना: इसके लिए, सुविधा फ़्लैग और बिल्ड फ़्लैग, दोनों की ज़रूरत होती है
- Wi-Fi Aware (एनएएन) एचएएल (इसका मतलब है कि फ़र्मवेयर काम करता है) के साथ काम करना
इस सुविधा को लागू करने के लिए, डिवाइस बनाने वाली कंपनियां वाई-फ़ाई इंटरफ़ेस लागू करती हैं और दो सुविधा फ़्लैग चालू करती हैं:
device/<oem>/<device>
में मौजूदBoardConfig.mk
याBoardConfig-common.mk
में, यह फ़्लैग जोड़ें:WIFI_HIDL_FEATURE_AWARE := true
device/<oem>/<device>
में मौजूदdevice.mk
में, Wi-Fi Aware सुविधा के लिए सहायता शामिल करने के लिए,PRODUCT_COPY_FILES
एनवायरमेंट वैरिएबल में बदलाव करें:PRODUCT_COPY_FILES += frameworks/native/data/etc/android.hardware.wifi.aware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.aware.xml
वाई-फ़ाई अवेयर में, IEEE 802.11mc प्रोटोकॉल का इस्तेमाल करके, पीयर डिवाइसों की रेंजिंग शामिल है. इसे राउंड ट्रिप टाइम (आरटीटी) भी कहा जाता है. वाई-फ़ाई अवेयर की यह सुविधा, डिवाइस पर वाई-फ़ाई आरटीटी की सुविधा के काम करने पर ही काम करती है. इसका मतलब है कि डिवाइस पर वाई-फ़ाई अवेयर और वाई-फ़ाई आरटीटी, दोनों सुविधाएं काम करनी चाहिए. ज़्यादा जानकारी के लिए, Wi-Fi आरटीटी देखें.
अगर ऐसा नहीं है, तो इस सुविधा के लिए ज़रूरी सभी चीज़ें AOSP में शामिल हैं.
अगर WIFI_HAL_INTERFACE_COMBINATIONS
फ़्लैग दिया गया है, तो WIFI_HIDL_FEATURE_AWARE
फ़्लैग को अनदेखा कर दिया जाता है. ज़्यादा जानकारी के लिए, वाई-फ़ाई के एक से ज़्यादा इंटरफ़ेस पर एक साथ काम करना लेख पढ़ें.
एमएसी पता बदलने की सुविधा
Android के लिए ज़रूरी है कि वाई-फ़ाई अवेयर डिस्कवरी (एनएमआई) और डेटा इंटरफ़ेस (एनडीपी) का मैक पता, रैंडमाइज़ किया गया हो और वह डिवाइस के असली मैक पते से मेल न खाता हो. एमएसी पते:
- वाई-फ़ाई अवेयर की सुविधा चालू या फिर से चालू होने पर, यह पता लगाने के लिए कि डिवाइस किस वाई-फ़ाई से कनेक्ट हो, कोई भी वाई-फ़ाई पता चुना जा सकता है.
वाई-फ़ाई अवेयर की सुविधा चालू होने पर,
NanConfigRequest.macAddressRandomizationIntervalSec
पैरामीटर से कॉन्फ़िगर किए गए नियमित इंटरवल पर, एमएसी पता बदलना चाहिए. फ़्रेमवर्क इसे डिफ़ॉल्ट रूप से 30 मिनट पर कॉन्फ़िगर करता है.
सस्पेंड और रिज़्यूम
Android 14 और उसके बाद के वर्शन में, Wi-Fi Aware की मदद से, ऐप्लिकेशन को डिस्कवरी सेशन को निलंबित करने और फिर से शुरू करने की अनुमति मिलती है. इसमें उन सेशन से जुड़े सभी डेटा पाथ भी शामिल हैं. इस सुविधा की मदद से, डिवाइस डिस्कवरी सेशन को तेज़ी से फिर से शुरू कर सकते हैं और कम बैटरी का इस्तेमाल कर सकते हैं. ऐसा इसलिए होता है, क्योंकि डिस्कवरी सेशन को निलंबित किया जा सकता है.
अगर कोई डिवाइस, रोकने और फिर से शुरू करने की सुविधा के साथ काम करता है, तो फ़र्मवेयर वाई-फ़ाई अवेयर सेशन को रोक देता है. ऐसा तब होता है, जब कोई ऐप्लिकेशन डिस्कवरी सेशन को रोकता है. जब कोई डिस्कवरी सेशन निलंबित स्थिति में होता है, तो डिवाइस उस सेशन के लिए कोई फ़्रेम ट्रांसमिट या रिसीव नहीं करता. इसमें उस सेशन में मौजूद सभी चालू एनडीपी भी शामिल हैं. अगर सभी डिस्कवरी सेशन निलंबित कर दिए जाते हैं, तो डिवाइस कोई भी वाई-फ़ाई अवेयर फ़्रेम ट्रांसमिट या रिसीव नहीं करता.
जब कोई ऐप्लिकेशन, निलंबित किए गए डिस्कवरी सेशन को फिर से शुरू करता है, तो फ़्रेमवर्क उस सेशन को उसकी पिछली स्थिति पर वापस ले जाता है. इसमें, उससे जुड़े सभी एनडीपी सेशन भी शामिल होते हैं. Wi-Fi Aware को चालू करके नया डिस्कवरी सेशन बनाने के मुकाबले, निलंबित डिस्कवरी सेशन को फिर से शुरू करना ज़्यादा तेज़ होता है.
डिवाइस मैन्युफ़ैक्चरर को डिवाइस के लिए एचएएल और फ़र्मवेयर की सुविधा देनी होगी, ताकि डिवाइस डिस्कवरी सेशन को निलंबित और फिर से शुरू किया जा सके. ज़्यादा जानकारी के लिए, IWifiNanIface.java
देखें.
डिवाइस बनाने वाली कंपनियां, एक से ज़्यादा डिवाइसों पर, 'रोकें' और 'फिर से शुरू करें' को सिंक करने के लिए, आउट-ऑफ़-बैंड कम्यूनिकेशन (उदाहरण के लिए, बीएलई) का इस्तेमाल कर सकती हैं.
पुष्टि करें
Android, यूनिट टेस्ट, कंपैटिबिलिटी टेस्ट सुइट (CTS) टेस्ट, और CTS की पुष्टि करने वाले टेस्ट का एक सेट उपलब्ध कराता है. इनकी मदद से, Wi-Fi Aware सुविधा की पुष्टि की जा सकती है. वेंडर टेस्ट सुइट (वीटीएस) का इस्तेमाल करके भी वाई-फ़ाई अवेयर की जांच की जा सकती है.
यूनिट टेस्ट
वाई-फ़ाई अवेयर पैकेज की जांच, इनका इस्तेमाल करके की जाती है:
सेवा की जांच:
atest com.android.server.wifi.aware
मैनेजर टेस्ट:
atest android.net.wifi.aware
Compatibility Test Suite (CTS) टेस्ट
वाई-फ़ाई अवेयर सुविधा की पुष्टि करने के लिए, सीटीएस टेस्ट का इस्तेमाल करें. CTS, इस सुविधा के चालू होने का पता लगाता है और उससे जुड़े टेस्ट अपने-आप शामिल कर लेता है.
सीटीएस टेस्ट को इनके ज़रिए ट्रिगर किया जा सकता है:
atest SingleDeviceTest
सीटीएस की पुष्टि करने वाले टूल के टेस्ट
CTS Verifier की जांच में, दो डिवाइसों का इस्तेमाल करके 'वाई-फ़ाई के बारे में जानकारी' सुविधा के काम करने के तरीके की पुष्टि की जाती है: एक जांच वाला डिवाइस और काम करने वाला डिवाइस. जांच करने के लिए, CTS Verifier खोलें और 'वाई-फ़ाई अवेयर टेस्ट' सेक्शन पर जाएं.