Estoy creando una aplicación que puede transferir datos entre un dispositivo móvil y uno Wi-Fi ... El móvil tiene el AP habilitado (a través del código) y otro dispositivo se conecta a este red específica ... ¿Cómo puedo detectar a través del código para ver los detalles de los dispositivos conectados a la red (AP)? ** ¿Hay una solución para esto?Aplicación Android Dispositivo Wi-Fi: conectividad AP
He visto una aplicación llamada Wi-Fi Hot Spot en HTC Desire que hace esta funcionalidad de mostrar las direcciones IP de los dispositivos conectados a la red. ¿Cómo se puede lograr esto?
Salida Review: Sprint Mobile Hotspot on HTC EVO 4G.
Muestra una aplicación que realmente puede mostrar los usuarios conectados. ¿Cómo podemos hacer eso programáticamente? ¿Hay una API para eso?
Para crear un punto de acceso:
private void createWifiAccessPoint() {
if (wifiManager.isWifiEnabled())
{
wifiManager.setWifiEnabled(false);
}
Method[] wmMethods = wifiManager.getClass().getDeclaredMethods(); //Get all declared methods in WifiManager class
boolean methodFound = false;
for (Method method: wmMethods){
if (method.getName().equals("setWifiApEnabled")){
methodFound = true;
WifiConfiguration netConfig = new WifiConfiguration();
netConfig.SSID = "\""+ssid+"\"";
netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.OPEN);
//netConfig.allowedProtocols.set(WifiConfiguration.Protocol.RSN);
//netConfig.allowedProtocols.set(WifiConfiguration.Protocol.WPA);
//netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
//netConfig.preSharedKey = password;
//netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP);
//netConfig.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP);
//netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP);
//netConfig.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP);
try {
boolean apstatus = (Boolean) method.invoke(wifiManager, netConfig,true);
//statusView.setText("Creating a Wi-Fi Network \""+netConfig.SSID+"\"");
for (Method isWifiApEnabledmethod: wmMethods)
{
if (isWifiApEnabledmethod.getName().equals("isWifiApEnabled")){
while (!(Boolean)isWifiApEnabledmethod.invoke(wifiManager)){
};
for (Method method1: wmMethods){
if(method1.getName().equals("getWifiApState")){
int apstate;
apstate = (Integer)method1.invoke(wifiManager);
// netConfig = (WifiConfiguration)method1.invoke(wifi);
//statusView.append("\nSSID:"+netConfig.SSID+"\nPassword:"+netConfig.preSharedKey+"\n");
}
}
}
}
if(apstatus)
{
System.out.println("SUCCESSdddd");
//statusView.append("\nAccess Point Created!");
//finish();
//Intent searchSensorsIntent = new Intent(this,SearchSensors.class);
//startActivity(searchSensorsIntent);
}
else
{
System.out.println("FAILED");
//statusView.append("\nAccess Point Creation failed!");
}
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
catch (IllegalAccessException e) {
e.printStackTrace();
}
catch (InvocationTargetException e) {
e.printStackTrace();
}
}
}
if (!methodFound){
//statusView.setText("Your phone's API does not contain setWifiApEnabled method to configure an access point");
}
}
Eso no es correcto, el punto de acceso WiFi en el HTC Desire no se muestran los dispositivos que están conectados a la misma red WiFi que el deseo pero se abre un punto WiFi propio (y por lo tanto una red WiFi) y actúa como un punto de acceso propio. Es por eso que puede mostrar los dispositivos conectados, porque es su propia red. – theomega
Ok ... estoy programado para establecer un punto de acceso Wifi ... ¿Ahora podré detectar los dispositivos conectados a esta red? –
¿Dónde se rescata el Access-Point? ¿En un dispositivo que no es Android? Entonces sí. En Android, será bastante difícil sin acceso de root obtener los datos en una aplicación normal. – theomega