zoukankan      html  css  js  c++  java
  • 转:Delphi 获取安卓手机WIFI信息(XE8)

    unit Unit1;
     
     
    interface
     
     
    uses
     
     
      System.SysUtils, System.Types, System.UITypes, System.Classes,
      System.Variants,
      FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
      Androidapi.JNI.GraphicsContentViewText, Androidapi.JNIBridge,
      Androidapi.JNI.Telephony, Androidapi.JNI.JavaTypes, FMX.Helpers.Android,
      FMX.Layouts, FMX.Memo, FMX.ScrollBox, FMX.Controls.Presentation, Androidapi.JNI.Net
      ;
     
     
    type
      TForm3 = class(TForm)
        Memo1: TMemo;
        btn1: TButton;
        procedure btn1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
     
     
    var
      Form3: TForm3;
     
     
     
     
    implementation
     
     
    uses Androidapi.Helpers;
     
     
    {$R *.fmx}
     
     
     
     
    //ip地址整数转字符串
    function int2Ip(intIP : Int64) : string;
    var
      n : int64;
      ip4, ip3, ip2, ip1: string;
    begin
      Result := '';
      n := intIP shr 24;
      intIP := intIP xor (n shl 24);
      ip4 := IntToStr(n);
     
     
      n := intIP shr 16;
      intIP := intIP xor (n shl 16);
      ip3 := IntToStr(n);
     
     
      n := intIP shr 8;
      intIP := intIP xor (n shl 8);
      ip2 := IntToStr(n);
     
     
      n := intIP;
      ip1 := IntToStr(n);
     
     
      Result := ip1 + '.' + ip2  + '.' + ip3  + '.' + ip4;
    end;
     
     
    //ip地址字符串转整数(没测过)
    function ip2Int(const strIP : string): Int64;
    var
      lst : TStringList;
      i : integer;
    begin
      result := 0;
      lst := TStringList.Create;
      try
        lst.Delimiter := '.';
        lst.DelimitedText := strIP;
     
     
        for i := 0 to lst.Count - 1 do
          result := result + StrToInt64(lst[i]) shl (24 - i * 8);
      finally
        lst.Free;
      end;
    end;
     
     
    procedure TForm3.btn1Click(Sender: TObject);
    var
      Service: JObject;
     
     
      WifiManager: JWifiManager;
      ConnectionInfo: JWifiInfo;
      ScanResults: JList;
      ScanResult: JScanResult;
      I: Integer;
      iIP: Int64;
    begin
      Memo1.Lines.Clear;
     
     
      Service := SharedActivity.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
      WifiManager := TJWifiManager.Wrap((Service as ILocalObject).GetObjectID);
      if not WifiManager.isWifiEnabled then
        Memo1.Lines.Add('Wifi is disabled')
      else
      begin
        ConnectionInfo := WifiManager.getConnectionInfo;
        Memo1.Lines.Add('Connection info');
        Memo1.Lines.Add('  SSID: ' + JStringToString(ConnectionInfo.getSSID));
        Memo1.Lines.Add('  BSSID: ' + JStringToString(ConnectionInfo.getBSSID));
        Memo1.Lines.Add('  IPV4: ' +  int2Ip(ConnectionInfo.getIpAddress));
     
     
        Memo1.Lines.Add('  MAC address: ' + JStringToString(ConnectionInfo.getMacAddress));
        ScanResults := WifiManager.getScanResults;
        for I := 0 to ScanResults.size - 1 do
        begin
          Memo1.Lines.Add('');
          Memo1.Lines.Add('Detected access point ' + IntToStr(I));
          ScanResult := TJScanResult.Wrap((ScanResults.get(I) as ILocalObject).GetObjectID);
          Memo1.Lines.Add('  SSID: ' + JStringToString(ScanResult.SSID));
          Memo1.Lines.Add('  BSSID: ' + JStringToString(ScanResult.BSSID));
          Memo1.Lines.Add('  Capabilities: ' + JStringToString(ScanResult.capabilities));
          Memo1.Lines.Add('  Frequency: ' + IntToStr(ScanResult.frequency) + 'MHz');
          Memo1.Lines.Add('  Signal level: ' + IntToStr(ScanResult.level) + 'dBm');
        end
      end
    end;
     
     
    end.
    ————————————————
    版权声明:本文为CSDN博主「得码刘永锋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/lyf_lyf/java/article/details/48169575
  • 相关阅读:
    SpringMvc执行流程
    Lock wait timeout exceeded; try restarting transaction解决方法
    MySQL删除复杂的重复数据的解决方案(一条数据项中包含多个值的情况)
    数据移植时递归运算查询部门及其下级所有部门的问题
    IDEA常用插件
    mybatis和mybatisPlus中解决实体类字段与数据库关键字冲突问题
    时间日期操作
    spring项目中使用MD5加密方式
    idea如何调出仪表盘
    scanf使用过程中的技巧与坑位
  • 原文地址:https://www.cnblogs.com/timba1322/p/12681581.html
Copyright © 2011-2022 走看看