Delphi XE7のAndroidアプリケーションでWi-Fiの情報を取得する

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」にします。

WiFiInfo

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;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください