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 공급업체 HAL을 구현해야 합니다. Android 14 이상에서는 공급업체 HAL 인터페이스가 AIDL을 사용하여 정의됩니다. Android 13 이하에서는 공급업체 HAL 인터페이스가 HIDL을 사용하여 정의됩니다.
Wi-Fi 인터페이스를 따라 Wi-Fi Aware 기능을 사용합니다. 구현되는 인터페이스에 따라 다음 중 하나입니다.
- AIDL:
hardware/interfaces/wifi/aidl
- HIDL:
hardware/interfaces/wifi/1.2
이상
기존 Wi-Fi HAL을 참조하여 AIDL 및 HIDL 인터페이스와의 상관관계를 확인할 수 있습니다(hardware/libhardware_legacy/+/main/include/hardware_legacy/wifi_nan.h).
구현
기기 제조업체는 프레임워크와 HAL/펌웨어 지원을 모두 제공해야 합니다.
- 프레임워크:
- AOSP 코드
- Aware 사용 설정: 기능 플래그와 빌드 플래그가 모두 필요합니다.
- Wi-Fi Aware(NAN) HAL 지원(펌웨어 지원을 의미함)
이 기능을 구현하기 위해 기기 제조업체는 Wi-Fi 인터페이스를 구현하고 두 가지 기능 플래그를 사용 설정합니다.
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에는 왕복 시간(RTT)이라고도 하는 IEEE 802.11mc 프로토콜을 사용하는 동종 기기에 이르는 범위가 포함됩니다. Wi-Fi Aware의 이 하위 기능은 Wi-Fi RTT 기능을 지원하는 기기를 조건으로 합니다. 즉, 기기에서 Wi-Fi Aware와 Wi-Fi RTT를 모두 지원해야 합니다. 자세한 내용은 Wi-Fi RTT를 참조하세요.
그렇게 하지 않으면 이 기능에 필요한 모든 것이 AOSP에 포함됩니다.
WIFI_HAL_INTERFACE_COMBINATIONS
플래그가 지정되면 WIFI_HIDL_FEATURE_AWARE
플래그는 무시됩니다. 자세한 내용은 Wi-Fi 다중 인터페이스 동시 실행을 참조하세요.
MAC 주소 무작위 지정
Android에서는 Wi-Fi Aware 검색(NMI)과 데이터 인터페이스(NDP)의 MAC 주소가 무작위로 지정되어야 하고 기기의 실제 MAC 주소와 동일해서는 안 됩니다. MAC 주소는 다음과 같아야 합니다.
- Wi-Fi Aware가 사용 설정되거나 다시 사용 설정될 때마다 무작위로 주소를 지정합니다.
Wi-Fi Aware가 사용 설정되면 MAC 주소는
NanConfigRequest.macAddressRandomizationIntervalSec
매개변수로 구성된 일정한 간격으로 순서가 무작위 지정되어야 합니다. 기본적으로 프레임워크에서 30분으로 구성됩니다.
정지 및 재개
Android 14 이상에서는 Wi-Fi Aware가 권한이 있는 앱이 활성 검색 세션(이러한 세션과 연결된 모든 데이터 경로 포함)을 정지 및 재개하는 기능을 지원합니다. 이 기능을 지원하면 검색 세션을 정지할 수 있어 기기에서 검색 세션을 더 빠르게 재개하고 전력을 덜 사용할 수 있습니다.
기기에서 이 정지 및 재개 기능을 지원하면 권한이 있는 앱이 검색 세션을 정지할 때 펌웨어에서 Wi-Fi Aware 세션을 정지합니다. 검색 세션이 정지된 상태에 있으면 기기는 해당 세션의 활성 NDP를 비롯하여 해당 세션의 프레임을 전송하거나 수신하지 않습니다. 모든 검색 세션이 정지되는 경우 기기는 Wi-Fi Aware 프레임을 전송하거나 수신하지 않습니다.
권한이 있는 앱이 정지된 검색 세션을 재개하면 프레임워크는 연결된 모든 NDP 세션을 비롯하여 세션을 이전 상태로 되돌립니다. 정지된 검색 세션을 재개하는 것이 Wi-Fi Aware를 불러와 새 검색 세션을 만드는 것보다 빠릅니다.
검색 세션을 정지하고 재개하는 기능을 지원하려면 기기 제조업체는 HAL 및 펌웨어 지원을 제공해야 합니다. 자세한 내용은 IWifiNanIface.java
를 참고하세요.
기기 제조업체는 대역 외 통신(예: BLE)을 사용하여 여러 기기에서 정지 및 재개를 동기화할 수 있습니다.
유효성 검사
Android는 Wi-Fi Aware 기능의 유효성을 검사하기 위해 일련의 단위 테스트, 호환성 테스트 모음 (CTS) 테스트, CTS 인증 도구 테스트를 제공합니다. Wi-Fi Aware는 공급업체 테스트 모음(VTS)을 사용하여 테스트할 수도 있습니다.
단위 테스트
Wi-Fi Aware 패키지 테스트는 다음을 사용하여 실행됩니다.
서비스 테스트:
atest com.android.server.wifi.aware
관리자 테스트:
atest android.net.wifi.aware
호환성 테스트 모음(CTS) 테스트
CTS 테스트를 사용하여 Wi-Fi Aware 기능을 확인합니다. CTS는 기능이 사용 설정되면 설정을 감지하고 관련 테스트를 자동으로 포함합니다.
CTS 테스트는 다음을 사용하여 트리거할 수 있습니다.
atest SingleDeviceTest
CTS 인증 도구 테스트
CTS 인증 도구 테스트는 테스트 기기와 정상으로 알려진 기기라는 두 가지 기기를 사용하여 Wi-Fi Aware 동작을 확인합니다. 테스트를 실행하려면 CTS 인증 도구를 열고 Wi-Fi Aware Tests 섹션으로 이동합니다.