有没有办法啊。
现在我的办法是访问/proc/net/arp,但是这个方法不是及时性的,偶尔有些设备已经连接,但是信息没有存在/proc/net/arp文件夹下,而Android手机 却可以发广播 提示 有一个新设备连接进来不知道android 系统是怎么做的。

解决方案 »

  1.   

        private String getConnectWifiSsid() {
            WifiInfo wifiInfo = wifiManager.getConnectionInfo();
            Log.d("wifiInfo", wifiInfo.toString());
            Log.d("SSID", wifiInfo.getSSID());
            return wifiInfo.getSSID();
        }
    这个?
      

  2.   

        private final BroadcastReceiver wifiBroadcast = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                // TODO Auto-generated method stub
                if(intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)){
                    //signal strength changed
                }
                else if(intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)){//wifi打开与否
                    int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);                if(wifistate == WifiManager.WIFI_STATE_DISABLED){
                        System.out.println("系统关闭wifi");
                        link_wifi.setText("WIFI未打开");
                        wifiState=0;                }
                    else if(wifistate == WifiManager.WIFI_STATE_ENABLED){
                        System.out.println("系统开启wifi");
                       if(isWifiConnected()){
                           if(getConnectWifiSsid().equals("\"wifisocket\"")){
                               link_wifi.setText("已连接到服务器WIFI");
                               wifiState=3;
                           }else{
                               link_wifi.setText("WIFI已连接(非服务器)");
                               wifiState=4;
                           }
                       }else{
                           link_wifi.setText("WIFI已打开");
                           wifiState=1;
                       }
                    }
                }
                else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){//wifi连接上与否
                    System.out.println("网络状态改变");
                    NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
                    if(info.getState().equals(NetworkInfo.State.DISCONNECTED)){
                        System.out.println("wifi网络连接断开");
                        link_wifi.setText("WIFI未连接");
                        wifiState=2;
                    }
                    else if(info.getState().equals(NetworkInfo.State.CONNECTED)){                    WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
                        WifiInfo wifiInfo = wifiManager.getConnectionInfo();                    //获取当前wifi名称
                        System.out.println("连接到网络 " + wifiInfo.getSSID());
                        if(wifiInfo.getSSID().equals("\"wifisocket\"")){
                            link_wifi.setText("已连接到服务器WIFI");
                            wifiState=3;
                        }else{
                            link_wifi.setText("WIFI已连接(非服务器)");
                            wifiState=4;
                        }                }            }        }
        };这是WIFI状态改变时的广播  比如 打开WiFi  连上WiFi 断开连接  关闭WiFi  都有广播:
    在activity里注册广播
       registerReceiver(wifiBroadcast, makeGattUpdateIntentFilter());    private static IntentFilter makeGattUpdateIntentFilter() {
            final IntentFilter filter = new IntentFilter();
            filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
            filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
            filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
            return filter;
        }
      

  3.   

    不是,这个是station模式,我说的是AP模式,相当于手机是一个路由器
      

  4.   

    目前还是去读取/proc/net/arp这个临时文件,还没有找到对应的方式,系统级的接口没有对外开放。
      

  5.   

    获取连接同一WiFi热点的所有设备的信号强度,怎么实现那?
      

  6.   

    楼主解决了吗,.在/proc/net/arp文件里面只有ip地址和mac地址 想要获取连接的设备名称就没法弄了