如何查看连接到我的路由器的设备列表,然后选择其中一个设备,然后从中发送和接收数据

时间:2015-07-27 14:23:46

标签: android list wifi device

我是Android应用程序开发的新手,我想构建一个使用wifi连接到其他设备(不是移动设备)的应用程序,并将一些数据从我的手机发送到设备并从其他设备接收一些数据。< / p>

我在本地网络中拥有的内容:

  1. 手机支持wifi与android os。
  2. 设备支持wifi连接(例如温度传感器)。
  3. 我需要什么:

    1. 手机需要连接到路由器并接收可用设备列表,并检查传感器是否已连接到网络。
    2. 连接传感器并从手机发送消息,告诉传感器测量温度。
    3. 传感器发回包含温度的消息。

1 个答案:

答案 0 :(得分:0)

我的问题对我来说也不是很清楚。但根据我的理解,您希望在移动设备上列出一些支持Wi-Fi的设备。然后连接其中一个&amp;最后与他们沟通。

要列出您必须实现以下代码的所有访问点。

private final BroadcastReceiver mWifiScanReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context c, Intent intent) {
        String action = intent.getAction();
        if (WifiManager.SCAN_RESULTS_AVAILABLE_ACTION.equals(action)) {

            List<ScanResult> scanResults =  mainWifiObj.getScanResults();
            mScannedNetworksAdapter.clear();
            listView_Access_point.clearChoices();

            if (scanResults != null) {
                for (ScanResult result : scanResults) {
                    mScannedNetworksAdapter.add(result)                     
                }
            }

            listView_Access_point.setAdapter(mScannedNetworksAdapter);
    }
   }
};

现在列出所有Wi-Fi接入点后,您必须单击其中一个才能连接。为此,您必须实现OnItemClickListener&amp;然后重写onItemclick()。请参阅下面的代码。

@Override
public void onItemClick(AdapterView<?> parent, View arg1, int position, long arg3) {

    ScanResult result = (ScanResult) parent.getItemAtPosition(position);

    WifiConfiguration conf = new WifiConfiguration();
    conf.SSID = "\"" + result.SSID + "\"";

    conf.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);

    WifiManager wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); 
    wifiManager.addNetwork(conf);

    List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
    if(list!=null){
        for( WifiConfiguration i : list ) {
            if(i.SSID != null && i.SSID.equals("\"" + result.SSID + "\"")) {
                 wifiManager.disconnect();
                 wifiManager.enableNetwork(i.networkId, true);
                 wifiManager.reconnect();               
                 break;
            }           
         }

    }
}

然后你必须实现一个BroadcastReceiver,它告诉接入点是否连接成功。

private final BroadcastReceiver mWifiConnectionEstablished = new BroadcastReceiver() {
    @Override
    public void onReceive(Context c, Intent intent) {

        String action = intent.getAction();
        if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {

            NetworkInfo nwInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);

            if (NetworkInfo.State.CONNECTED.equals(nwInfo.getState()) && nwInfo.isConnected()) {
               //The connection is established. Now do your stuff here
            }

         }
    }
};

最后有几种沟通方法。其中之一是套接字通信。你将在谷歌中获得几个关于android中套接字通信的例子。