Delphi XE7のAndroidアプリケーションでWi-Fiの情報を取得する方法です。
Java2OPでWifiManagerクラスとWifiInfoクラスのブリッジファイルを作成します。
Java2OP.exe -classes android.net.wifi.WifiManager android.net.wifi.WifiInfo -unit Androidapi.JNI.Wifi
プロジェクトオプションの「使用する権限」で「Wi-Fi 状態へのアクセス」を「true」にします。
TMemoコンポーネントにWi-Fiの情報を出力します。
uses
Androidapi.JNI.Wifi,
Androidapi.Helpers,
Androidapi.JNI.JavaTypes,
Androidapi.JNI.GraphicsContentViewText,
Androidapi.JNIBridge;
procedure TForm1.FormCreate(Sender: TObject);
var
Obj: JObject;
WifiManager: JWifiManager;
WifiInfo: JWifiInfo;
begin
Obj := SharedActivityContext.getSystemService
(TJContext.JavaClass.WIFI_SERVICE);
if Obj = nil then
Exit;
WifiManager := TJWiFiManager.Wrap((Obj as ILocalObject).GetObjectID);
WifiInfo := WifiManager.getConnectionInfo;
Memo1.Lines.Add(Format('BSSID=%s', [JStringToString(WifiInfo.getBSSID)]));
Memo1.Lines.Add(Format('IpAddress=%d', [WifiInfo.getIpAddress]));
Memo1.Lines.Add(Format('LinkSpeed=%d', [WifiInfo.getLinkSpeed]));
Memo1.Lines.Add(Format('MacAddress=%s', [JStringToString(WifiInfo.getMacAddress)]));
Memo1.Lines.Add(Format('NetworkId=%d', [WifiInfo.getNetworkId]));
Memo1.Lines.Add(Format('SSID=%s', [JStringToString(WifiInfo.getSSID)]));
end;