Android Ethernet y Wi-Fi al mismo tiempo
Tengo un pequeño dispositivo de la caja de TV con Android. Siempre que traigo la interfaz Wi-Fi, la interfaz Ethernet está desconectada. Si luego traigo el dispositivo Ethernet, la interfaz Wi-Fi. He intentado varios métodos incluyendo usar la línea de comando para traer manualmente para arriba las interfaces y el mismo problema ocurre. Quiero poder conectarme a la red Wi-Fi y tenerla como mi puerta de enlace predeterminada pero también estar conectada al puerto Ethernet para encaminar cierto tráfico por esa interfaz. Obviamente, esto es posible hacer en Linux, así que debe haber una manera … ¿Alguien sabe lo que es que está rompiendo las interfaces cuando se inicia el otro …
- ¿Cómo comprobar WiFi es pasar a través de inicio de sesión de página web?
- Inicie el navegador predeterminado desde el navegador de portal cautivo de Android (CaptivePortalLogin)
- Android trata con dispositivos IoT sin conexión a Internet
- Supervisión del WiFi en el dispositivo Android
- ¿Es posible forzar el tráfico de red a través de Wifi o de la red TMobile?
- gama de distancias en las que trabaja directamente Wi-Fi
- ¿Hay alguna manera de comprobar si el tethering está activo?
- IPhone / Android: ¿Cómo enviar pulsaciones de teclado a la computadora portátil sobre Wifi?
- Cómo obtener la dirección IP del router wifi conectado en android mediante programación?
- Java.net.SocketException: recvfrom falló: ECONNRESET (Conexión restablecida por pares) Más de WIFI
- Escanear Wi-Fi de Android: Filtrar impresoras de ScanResult
- ¿Cómo obtener BSSID de todos los puntos de acceso wifi?
- ¿Cuál es la diferencia entre la exploración activa y la exploración pasiva?
Esta es una restricción en Android. Propiamente sólo permite que una conexión para arriba a la vez y tiene un controlador en el archivo 'ConnectivityServices.java' que arranca una red 'no preferido' cuando una red con una prioridad está habilitada. Esto también es lo que trae wifi y rompe conexiones de datos celulares cuando en el rango de un hotspot reconocido …
Por si alguien necesita esto, esto es lo que hice:
Descargue el código fuente de AOSP para la versión de Android en el dispositivo.
Edite el archivo 'ConnectivityServices.java' en consecuencia. Básicamente, sólo comentó el comando en el comando de conmutación por error en el controlador de cambio de conexión. No tengo el código fuente delante de mí tan mensaje yo si necesitas saber lo que hice aquí …
De todos modos, a continuación, construir el código fuente AOSP en su máquina.
Una vez completado, tome el archivo 'services.jar' en el directorio / dexclasses / que se ha creado. Extraerlo con WinRAR y luego copiar el archivo 'classes.dex' fuera del archivo .jar a un directorio separado. Use esto para extraer las clases.dex: https://code.google.com/p/smali/ Coge el archivo 'ConnectivityServices.smali' y manténgalo seguro.
Desde el dispositivo Vaya al dispositivo en el que desea habilitar las interfaces de red y copie el archivo /system/framework/services.jar en un PC. Extraerlo con WinRAR y luego copiar el archivo 'classes.dex' fuera del archivo .jar a un directorio separado. Utilice el comando Java Smali para extraer classes.dex.
Tome el archivo ConnectivityServices.smali de AOSP y póngalo en el directorio que acaba de extraer utilizando el classes.dex en el dispositivo. Puede ser una buena idea hacer una copia de seguridad del archivo ConnectivityServices.smali original antes de sobrescribirlo.
A continuación, reempaque el archivo classes.dex utilizando el comando baksmali. Copie el archivo classes.dex en el archivo services.jar original utilizando winRAR. Una vez más, tome una copia de seguridad del original, pero luego sobrescribirlo en el archivo .jar.
A continuación, simplemente vuelva a colocar el nuevo archivo services.jar en el dispositivo en el directorio / system / framework /.
A continuación, reinicie: se tardará más de lo normal en arrancar la primera vez.
Hay una manera más simple, que no requiere que usted construya AOSP que empareja su dispositivo. Simplemente puede modificar el código smali-decompiled y volver a compilarlo. Utilice https://github.com/android/platform_frameworks_base/blob/master/services/java/com/android/server/ConnectivityService.java para comparizon. Algo en este sentido:
adb pull /system/framework/services.jar cp services.jar services.jar.bak unzip services.jar classes.dex java -jar baksmali.jar classes.dex
Edite out / com / android / server / ConnectivityService.smali en handleConnect (), para que este sea el resultado:
// if this is a default net and other default is running // kill the one not preferred if (false && mNetConfigs[newNetType].isDefault()) { if (mActiveDefaultNetwork != -1 && mActiveDefaultNetwork != newNetType) { ...
Hice el siguiente cambio:
aget-object v5, v5, v1 invoke-virtual {v5}, Landroid/net/NetworkConfig;->isDefault()Z move-result v5 #if-eqz v5, :cond_a6 # changed to unconditional jump goto :cond_a6
Recompilar, empaquetar, empujar. A continuación, reinicie y pruebe.
java -jar smali.jar -o classes.dex out zip services.jar classes.dex adb push services.jar /system/framework/services.jar
Así que también descubrí cómo hacerlo en CM12.1
Cambie esta línea aquí https://github.com/CyanogenMod/android_frameworks_base/blob/e49d5ea0858a765c22d8aa96cc660d4708a413fb/services/core/java/com/android/server/ConnectivityService.java#L4264
O en smali reemplazar la línea antes. Línea 4266 con goto: cond_1b1
- Layout-land no picking diseño del paisaje xml
- Límite máximo de artículos en la facturación de la aplicación o en la compra de la aplicación