Важно (9.07.22)

Если картинки в постах не отображаются, зайдите в блог через прокси. РКН заблокировал поддомены blogger.com на которые загружались картинки.

понедельник, 28 апреля 2014 г.

Android API: package "android.net.wifi" или обёртка для работы с Wi-Fi


Хотел написать программку для блога, использующую 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

Для использования данной обёртки необходимо:
  1. Кладём обёртку в папку с вашим приложением (исходниками) и подключаем её в «uses», путём добавления строчки «Androidapi.JNI.Net.Wifi»
  2. Для того чтобы приложение могло работать через обёртку с Wi-Fi, необходимо дать разрешения в «User Permissions»(Project->Optoins->Uses Permissions). Ставим галочки напротив:
  • ACCESS_WIFI_STATE
  • CHANGE_WIFI_STATE
  • CHANGE_WIFI_MULTICAST_STATE

Всё, теперь можно по полной использовать возможности Android API для работы с Wi-Fi.

Т.к. обёртку писал впервые, без вопросов не обошлось. 
Огромное спасибо Бровину Ярославу (Embarcadero) за консультации. 

Я написал небольшое приложение, демонстрирующее часть возможностей.

Скриншоты:




Видео:


Исходный код: Скачать с Google Drive (Старая версия)
Исходники (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))