【问题标题】:Device Discovery in AndroidAndroid 中的设备发现
【发布时间】:2014-01-27 15:06:21
【问题描述】:

我正在尝试创建一个可以找到局域网中所有设备的应用程序。我已经能够通过 ping IP 范围来做到这一点。有没有其他方法可以做到这一点?

是否可以通过侦听android中的传入数据包来检测同一网络中的设备?

【问题讨论】:

标签: android networking android-wifi network-scan


【解决方案1】:

以下代码将搜索设备并将其信息放入列表中:-

     //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 网络的列表。但我想获取连接到我的设备所连接的同一网络\路由器的所有设备。
【解决方案2】:

这取决于你想用这些设备做什么。

要发现 UPNP 兼容设备,您可以使用 Cling 库。

这将返回可用设备、描述和服务的列表。

ping IP 范围只会显示响应 ping 的设备,并且可能取决于网络设置。

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 2012-05-20
    • 1970-01-01
    • 2014-10-17
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2013-07-24
    • 2014-04-12
    相关资源
    最近更新 更多