Хотел написать программку для блога, использующую Wi-Fi, точнее анализатор каналов, но обнаружил что в Delphi из коробки, нет готовой обёртки для работы с Wi-Fi. Решил написать эту обёртку сам. Это скорее заметка, чем статья, т.к. просто решил выложить обёртку для общественности.
Внимание! (03.11.2019) Последнюю версию обёртки вы всегда можете взять с моего GitHub'а: https://github.com/AndrewEfimov/Wrappers/blob/master/Androidapi.JNI.net.wifi.pas
В обёртке реализованы все классы и их методы (доступные в API 10) со страницы: http://developer.android.com/reference/android/net/wifi/package-summary.html
Т.о. эту обёртку можно использовать на всех устройствах с API 10 и выше. Писалось в Delphi XE6, на Delphi XE5 не проверялось.
Список продублирую сюда:
Classes
- ScanResult
- WifiConfiguration
- WifiConfiguration.AuthAlgorithm
- WifiConfiguration.GroupCipher
- WifiConfiguration.KeyMgmt
- WifiConfiguration.PairwiseCipher
- WifiConfiguration.Protocol
- WifiConfiguration.Status
- WifiInfo
- WifiManager
- WifiManager.MulticastLock
- WifiManager.WifiLock
Enums
- SupplicantState
Для использования данной обёртки необходимо:
- Кладём обёртку в папку с вашим приложением (исходниками) и подключаем её в «uses», путём добавления строчки «Androidapi.JNI.Net.Wifi»
- Для того чтобы приложение могло работать через обёртку с Wi-Fi, необходимо дать разрешения в «User Permissions»(Project->Optoins->Uses Permissions). Ставим галочки напротив:
- ACCESS_WIFI_STATE
- CHANGE_WIFI_STATE
- CHANGE_WIFI_MULTICAST_STATE
Всё, теперь можно по полной использовать возможности Android API для работы с Wi-Fi.
Т.к. обёртку писал впервые, без вопросов не обошлось.
Огромное спасибо Бровину Ярославу (Embarcadero) за консультации.
Я написал небольшое приложение, демонстрирующее часть возможностей.
Скриншоты:
Видео:
Исходники (26.03.2022, проверено на Delphi 10.4 и Android 11): https://github.com/AndrewEfimov/FMX-Android-API-Examples/tree/master/WifiTestAPI
Обратите внимание на новые требования: https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-permissions (Для корректной работы, помимо разрешений, необходимо включить навигацию (GPS))