누구나 내 Wi-Fi에 연결된 모든 네트워크를 가져 오는 방법을 제안 할 수 있습니다. 나는 그들 사이에 특정 네트워크를 식별하고 다음 모든 특정 네트워크 listview에 표시해야합니다. 여기Mac에서 Android 프로그래밍으로 Wi-Fi 네트워크를 검색하는 방법은 무엇입니까?
답변
는 무선 랜에 연결된 장치는 당신이 당신의 범위에서 사용할 수있는 모든 무선 랜의 목록을 표시 할 필요가 의미
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;
}
}
재생 해 주셔서 감사합니다. 위의 코드를 확인했지만 작동하지 않는 것은 아닙니다. 내 모바일에 이미 연결되어있는 라우터에 연결된 장치 목록이 필요합니다. 이와 관련하여 제안 사항이 있으십니까? –
이 링크를 따라 가면 더 큰 프로젝트를 이해할 수 있습니다. 양식 흠집을 이해해야 실제로 필요한 작업을 수행 할 수 있습니다. https://github.com/Marlinski/Rumble –
모바일 Wi-Fi가 이미 연결된 라우터에 연결된 장치 IP 또는 공급 업체 이름 목록이 필요합니다. –
을 IP 얻는 방법을 샘플입니다? 권리? –
담당자에게 감사드립니다. 그 중에서도 정확하게 제가 벤더 중 하나를 선택하고 싶습니다. –
에서 비밀번호로 Wi-Fi에 연결 하시겠습니까? –