網路上查了很多 取得Wifi資訊的方式
但都是XE6 XE7
Code丟到XE10都不能用
以下是XE10測試成功的Code
uses Androidapi.Helpers, Androidapi.JNI.JavaTypes, Androidapi.JNIBridge,
Androidapi.JNI.GraphicsContentViewText,Androidapi.JNI.Net;
procedure TForm2.FormCreate(Sender: TObject);
var
Service: JObject;
WifiManager: JWifiManager;
ConnectionInfo: JWifiInfo;
ScanResults: JList;
ScanResult: JScanResult;
I: Integer;
begin
Memo.Lines.Clear;
Service := SharedActivity.getSystemService(TJContext.JavaClass.WIFI_SERVICE);
WifiManager := TJWifiManager.Wrap((Service as ILocalObject).GetObjectID);
if not WifiManager.isWifiEnabled then
Memo.Lines.Add('Wifi is disabled')
else
begin
ConnectionInfo := WifiManager.getConnectionInfo;
Memo.Lines.Add('Connection info');
Memo.Lines.Add(' SSID: ' + JStringToString(ConnectionInfo.getSSID));
Memo.Lines.Add(' BSSID: ' + JStringToString(ConnectionInfo.getBSSID));
Memo.Lines.Add(' MAC address: ' + JStringToString(ConnectionInfo.getMacAddress));
ScanResults := WifiManager.getScanResults;
for I := 0 to ScanResults.size - 1 do
begin
Memo.Lines.Add('');
Memo.Lines.Add('Detected access point ' + IntToStr(I));
ScanResult := TJScanResult.Wrap((ScanResults.get(I) as ILocalObject).GetObjectID);
Memo.Lines.Add(' SSID: ' + JStringToString(ScanResult.SSID));
Memo.Lines.Add(' BSSID: ' + JStringToString(ScanResult.BSSID));
Memo.Lines.Add(' Capabilities: ' + JStringToString(ScanResult.capabilities));
Memo.Lines.Add(' Frequency: ' + IntToStr(ScanResult.frequency) + 'MHz');
Memo.Lines.Add(' Signal level: ' + IntToStr(ScanResult.level) + 'dBm');
end
end
end;
跟XE6 7 不同的是
原本是uses Androidapi.JNI.Net.Wifi
現在改為 Androidapi.JNI.Net 亂改測試出來的...
接下來 實際RUN 會跳一個錯誤
neither user nor current process has android permission device_power
看起來像是沒有權限
這個實在是 用英文找也看不董
要去project option裡面設定
這樣就能取得Wifi資訊了

請問可以由這裡得知 在當前連結的WIFI下 所有設備清單嗎? (我只需要有DEVICES NAME 就可以了)
如果你是指 當前連結的wifi的IP分享器 所有有連線至該IP分享器的設備 你要登入IP分享器 有權限 才能查看該IP分享器底下的設備 建議可以往 "搜尋區網IP" 的方向找 例: https://play.google.com/store/apps/details?id=com.network.networkip&hl=zh_TW
感謝您的回覆 在請問一下,我需要製作DELPHI功能是查詢所有有連線至該IP分享器的設備"名稱", 跟本篇的程式範例有相關嗎? 還是使用的元件+指令完全都不相同呢? 目前苦惱在範例的收尋方向,相關的範例RUN出來都試只有收循WIFI名稱, 沒有連接的裝置名稱,我想過是否要用PING IP的方式從192.168.1.1開始到255, 最後再來反查device name 請問這個方向可行嗎? 感謝您
補充一下: 類似這個app的第一張畫面那樣,可以分辨有哪些機器(apple/htc)之類的名稱 https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=zh_TW
你問的這問題跟這篇文章 沒有關聯 使用的指令跟元件也沒關聯 手機可不可以用ping我不知道 反正就是類似的方式 先找到IP後 用IP來找裝置名稱 <<這個我覺得比找區網內IP還困難 如果你有該IP分享器的權限 可能有更簡單的辦法 例如網頁登入 或用telnet登入等方式 因為IP分享器裡面可能就有裝置名稱等訊息