PDA

Ver la Versión Completa : [TUTORIAL] Despertar el móvil con los botones de volumen


rockernaxo
04/10/13, 11:03:11
¿Qué vamos a necesitar?
APKTool/Smali yBaksmali
Notepad++
Dispositivo rooteado
ADB
Sentido común

Archivos a modificar:
Android.policy.jar


Pasos a seguir
1. Extraemos el archivo android.policy.jar de la carpeta system/framework en nuestro dispositivo. Podemos hacerlo mediante Root Explorer (o cualquier explorador de archivos root) o con ADB.

2. Vamos a decompilar el archivo. Para ello ejecutamos uno de estos dos comandos, según usemos apktool ó baksmali.
apktool d android.policy.jar nombrecarpetadestino
java -jar baksmali.jar android.policy.jar nombrecarpetadestino

3. Entramos en la carpeta decompilada, buscamos y abrimos con Notepad++ KeyguardViewMediator.smali. Lo encontraremos en nombrecarpetadestino\smali\com\android\internal\po licy\impl\

4. Pulsamos Ctrl+F para buscar "0x18" (sin las comillas). Deberíamos ver el siguiente código (puede variar según el dispositivo):
.sparse-switch
0x18 -> :sswitch_0
0x19 -> :sswitch_0
0x1b -> :sswitch_1
0x4f -> :sswitch_1
0x55 -> :sswitch_1
0x56 -> :sswitch_1
0x57 -> :sswitch_1
0x58 -> :sswitch_1
0x59 -> :sswitch_1
0x5a -> :sswitch_1
0x5b -> :sswitch_1
0x7e -> :sswitch_1
0x7f -> :sswitch_1
0x82 -> :sswitch_1
0xa4 -> :sswitch_0
.end sparse-switch


5. Solamente tenemos que borrar las entradas que corresponden al 0x18 y 0x19, con lo que nos quedará:
.sparse-switch
0x1b -> :sswitch_1
0x4f -> :sswitch_1
0x55 -> :sswitch_1
0x56 -> :sswitch_1
0x57 -> :sswitch_1
0x58 -> :sswitch_1
0x59 -> :sswitch_1
0x5a -> :sswitch_1
0x5b -> :sswitch_1
0x7e -> :sswitch_1
0x7f -> :sswitch_1
0x82 -> :sswitch_1
0xa4 -> :sswitch_0
.end sparse-switch

6. Recompilamos android.policy.jar
apktool b nombrecarpetadestino
java -jar smali.jar nombrecarpetadestino

Como resultado tendremos un archivo out.dex que tenemos que renombrar a classes.dex.
Abrimos el archivo android.policy.jar original con 7zip/Winrar/WinZip y arrastramos el nuevo classes.dex dentro para sustituir al existente.

Volvemos a meter el archivo en el dispositivo /system/framework con permisos 644. Mirad los permisos que tienen el resto de archivos y le dais los mismos.

Si hay alguna parte que no se entiende comentadlo. Espero haberme explicado bienhttp://proyectoandroidlibre.com/images/smilies/peaceful.png

pc07
09/01/14, 18:02:45
Estaba siguiendo tu manual junto con este de XDA (http://forum.xda-developers.com/showthread.php?t=1732635) para intentar despertar mi Sensation con las teclas de volumen.
Tengo [4.4.2][UNOFFICIAL]CarbonRom for Sensation y por lo que se ve en esta versión de android el archivo KeyguardViewMediator.smali no está.
Haciendo una búsqueda del texto 0x18 en todos los archivos del classes.dex encontré la cadena "0x18 -> :sswitch_f" en el archivo PhoneFallbackEventHandler.smali. Borré los dos que indicas, el 18 y 19 y lo volví a preparar todo para subir al movil. Nada, da error según enciende el teléfono y tuve que restaurar sistema, del error no pasaba. A ver si alguien encuentra alguna solución para Kit Kat.

rockernaxo
09/01/14, 18:29:15
Estaba siguiendo tu manual junto con este de XDA (http://forum.xda-developers.com/showthread.php?t=1732635) para intentar despertar mi Sensation con las teclas de volumen.
Tengo [4.4.2][UNOFFICIAL]CarbonRom for Sensation y por lo que se ve en esta versión de android el archivo KeyguardViewMediator.smali no está.
Haciendo una búsqueda del texto 0x18 en todos los archivos del classes.dex encontré la cadena "0x18 -> :sswitch_f" en el archivo PhoneFallbackEventHandler.smali. Borré los dos que indicas, el 18 y 19 y lo volví a preparar todo para subir al movil. Nada, da error según enciende el teléfono y tuve que restaurar sistema, del error no pasaba. A ver si alguien encuentra alguna solución para Kit Kat.

¿El archivo tenía la firma correcta?

En KK han cambiado muchas cosas.

pc07
09/01/14, 18:38:17
¿El archivo tenía la firma correcta?

En KK han cambiado muchas cosas.

Me pierdo, no sé nada de la firma.

En cualquier caso me di cuenta que esta ROM lleva el kernel SULTAN así que tiene el sweep2wake, encontré una aplicación en el play para activarlo y ya puedo encender el móvil sin pulsar el botón de encendido. Aún así seguiré pendiente del tema por si sale solución.

Gracias.