2017-03-24 8 views
0

누구나 내 Wi-Fi에 연결된 모든 네트워크를 가져 오는 방법을 제안 할 수 있습니다. 나는 그들 사이에 특정 네트워크를 식별하고 다음 모든 특정 네트워크 listview에 표시해야합니다. 여기Mac에서 Android 프로그래밍으로 Wi-Fi 네트워크를 검색하는 방법은 무엇입니까?

+0

을 IP 얻는 방법을 샘플입니다? 권리? –

+0

담당자에게 감사드립니다. 그 중에서도 정확하게 제가 벤더 중 하나를 선택하고 싶습니다. –

+0

에서 비밀번호로 Wi-Fi에 연결 하시겠습니까? –

답변

0

는 무선 랜에 연결된 장치는 당신이 당신의 범위에서 사용할 수있는 모든 무선 랜의 목록을 표시 할 필요가 의미

https://github.com/SupunArunoda/ChatWithoutInternet

private WifiApiManager wifiApManager; 

     @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_file_sharing); 

     wifiApManager = new WifiApiManager(this); 
     listView = (ListView) findViewById(R.id.listView2); 

     username = (String) getIntent().getExtras().get("name"); 


     SelectClient sendImage = new SelectClient(); 
     sendImage.execute((Void) null); 

    } 



    //Asynchronous class to select Client 
    private class SelectClient extends AsyncTask<Void, Void, Boolean> { 

     @Override 
     protected Boolean doInBackground(Void... params) { 

      final ArrayList<ClientScanResult> clients = wifiApManager.getClientList(false); 


      runOnUiThread(new Runnable() { 
       @Override 
       public void run() { 

        ClientScanResult clientScanResult; 
        values = new String[clients.size()]; 
        for (int i = 0; i < clients.size(); i++) { 
         clientScanResult = clients.get(i); 
         values[i] = "IpAddress: " + clientScanResult.getIpAddress();//store client's ip addresses in values array 
        } 
        adapter = new ArrayAdapter<>(ClientSelectActivity.this, R.layout.list_white_text, R.id.list_content, values); 
        listView.setAdapter(adapter); 
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
         @Override 
         public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

          i = new Intent(ClientSelectActivity.this, PrivateChatActivity.class); 
          i.putExtra("ipAddress",clients.get(position).getIpAddress()); 
          i.putExtra("name", username); 
          startActivity(i);//start activity from this activity to PrivateChatActivity 

         } 
        }); 
       } 
      }); 
      return true; 
     } 
    } 

    //class to manage WiFi technology 
    public class WifiApiManager { 
     private final WifiManager mWifiManager; 

     public WifiApiManager(Context context) { 
      mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
     } 

     public ArrayList<ClientScanResult> getClientList(boolean onlyReachables) { 
      return getClientList(onlyReachables, 300); 
     } 

     //function to return available clients 
     public ArrayList<ClientScanResult> getClientList(boolean onlyReachables, int reachableTimeout) { 
      BufferedReader br = null; 
      ArrayList<ClientScanResult> result = null; 

      try { 
       result = new ArrayList<>(); 
       br = new BufferedReader(new FileReader("/proc/net/arp")); 
       String line; 
       while ((line = br.readLine()) != null) { 
        String[] splitted = line.split(" +"); 

        if ((splitted != null) && (splitted.length >= 4)) { 
         // Basic sanity check 
         String mac = splitted[3]; 

         if (mac.matches("..:..:..:..:..:..")) { 
          boolean isReachable = InetAddress.getByName(splitted[0]).isReachable(reachableTimeout); 

          if (!onlyReachables || isReachable) { 
           result.add(new ClientScanResult(splitted[0], splitted[3], splitted[5], isReachable)); 
          } 
         } 
        } 
       } 
      } catch (Exception e) { 
       Log.e(this.getClass().toString(), e.getMessage()); 
      } finally { 
       try { 
        br.close(); 
       } catch (IOException e) { 
        Log.e(this.getClass().toString(), e.getMessage()); 
       } 
      } 
      return result; 
     } 
    } 
+0

재생 해 주셔서 감사합니다. 위의 코드를 확인했지만 작동하지 않는 것은 아닙니다. 내 모바일에 이미 연결되어있는 라우터에 연결된 장치 목록이 필요합니다. 이와 관련하여 제안 사항이 있으십니까? –

+0

이 링크를 따라 가면 더 큰 프로젝트를 이해할 수 있습니다. 양식 흠집을 이해해야 실제로 필요한 작업을 수행 할 수 있습니다. https://github.com/Marlinski/Rumble –

+0

모바일 Wi-Fi가 이미 연결된 라우터에 연결된 장치 IP 또는 공급 업체 이름 목록이 필요합니다. –