我正在嘗試創建可以在局域網中查找所有設備的應用程序。我已經能夠通過ping IP範圍來做到這一點。還有其他方法可以做到這一點嗎?Android中的設備發現
是否有可能通過在android中偵聽傳入數據包來檢測相同網絡中的設備?
我正在嘗試創建可以在局域網中查找所有設備的應用程序。我已經能夠通過ping IP範圍來做到這一點。還有其他方法可以做到這一點嗎?Android中的設備發現
是否有可能通過在android中偵聽傳入數據包來檢測相同網絡中的設備?
下面的代碼將搜索設備,並把他們的信息在一個列表: -
//an array list of DeviceList type, which will take the info from getter setters
ArrayList<DeviceList> Dlist = new ArrayList<DeviceInfo>();
wifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
if(wifi.isWifiEnabled()){
List<ScanResult>wifilist =wifi.getScanResults();
if(wifilist != null){
for(int m = 0; m < wifilist.size(); m++)
{
int signallevel = WifiManager.calculateSignalLevel(wifilist.get(m).level,20);
int signalStrength=(signallevel*100)/20;
DeviceList dInfo = new DeviceList();
dInfo.setDeviceName((wifilist.get(m).SSID));
dInfo.setSignalStrength(String.valueOf((signalStrength+"%")));
dInfo.setDeviceType("WiFi");
Dlist.add(dInfo);
}
}
,你需要一些這方面的getter setter方法。您可以在不同的類中添加它們如下: -
public class DeviceList {
String DeviceName="";
String SignalStrength="";
String deviceType="";
public String getDeviceName() {
return DeviceName;
}
public void setDeviceName(String deviceName) {
DeviceName = deviceName;
}
public String getSignalStrength() {
return SignalStrength;
}
public void setSignalStrength(String signalStrength) {
SignalStrength = signalStrength;
}
public String getDeviceType() {
return deviceType;
}
public void setDeviceType(String deviceType) {
this.deviceType = deviceType;
}
}
謝謝你的回覆。上面的代碼給了我所有可用的wifi網絡列表。但是我想讓所有連接到與我的設備連接的網絡\路由器的設備。 – StyleDude
請看看http://developer.android.com/training/connect-devices-wirelessly/nsd-wifi-direct.html –