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