Acceder

Ver la Versión Completa : [TUTORIAL] Galaxy SII +/+ NFC [I9105/I9105P] Menu Power con Screenshot y Recovery


klurosu
13/05/13, 03:57:40
Antes de ir a dormir, me apetecia compartir esto.

Vamos a añadirle al boton de power 4 tipos de reinicio:

Necesitaremos:
framework-res.apk y android.policy.jar
Estas 3 imágenes (https://docs.google.com/file/d/0B4gZLyPSGvqhOWR1LWJZVnVDS0U/edit?usp=sharing)
Archivos.policy
Apk.Manager (https://docs.google.com/file/d/0B4gZLyPSGvqhVjFISzlNQXJXOVk/edit?usp=sharing) y HoloxTool_v1.0.1 (https://docs.google.com/file/d/0B4gZLyPSGvqhYlRxTXhpeTZQZ0k/edit?usp=sharing)






Al Turron!!!


NOTA:
Las líneas azules son las del menú Screenshot
Las lineas verdes son las del menú Recovery.
Las líneas naranjas son las del menú Download



Al Turron!!!


A) framework-res.apk
1. Decompila framework-res.apk con Apk.Manager
(pon “framework-res.apk” dentro de la carpeta “place-apk-here-for-modding” y ejecuta “Script.bat”. Selecciona la opción “9”)
2. Añade las 3 imágenes a la ruta res\ drawable-xhdpi (esta dentro de la carpeta “projects”)
3. Ve a res\values y abre strings.xml (añade lo siguiente antes de la linea </resources>)
__________________________________________________ __________
<string name="global_action_screenshot_txt">Capturar Pantalla </string>
<string name="global_action_recovery_txt">Modo Recovery</string>
<string name="global_action_download_txt">Modo Download</string>
__________________________________________________ __________

4. Compila framework-res.apk (mediante la opción “11” del menú de Apk.Manager y descompila de nuevo el archivo.
(solo asi se regeneran las ID’s de public.xml en res\values folder para aceptar las nuevas rutas)

5. Ahora que has descompilado de nuevo, ve a la ruta res\values y abre public.xml, localiza las siguientes líneas y apúntatelas (estas ID’s son ejemplos)
__________________________________________________ __________
<public type="drawable" name="tw_ic_lock_screenshot" id="0x0??????1) " />
<public type="drawable" name="tw_ic_lock_recovery" id="0x0??????2" />
<public type="drawable" name="tw_ic_lock_download" id="0x0??????3" />
__________________________________________________ __________

Y las siguientes también (estas ID’s son ejemplos)
__________________________________________________ __________
<public type="string" name="global_action_screenshot_txt" id="0x0?????11" />
<public type="string" name="global_action_recovery_txt" id="0x0?????22" />
<public type="string" name="global_action_download_txt" id="0x0?????33" />
__________________________________________________ __________


6. Deja abierto el archivo… lo necesitaras



B) android.policy.jar
1. Abre “android.policy.jar” con “WinRAR” y saca el archivo “clases.dex” para meterlo dentro de la carpeta “HoloxTool”…”dex” y ejecuta el archivo “HoloxTool.bat”
(selecciona la opción “2”)
2. Ve a la ruta HoloxTool_v1.0.1\database\dex\classout\com\android \internal\policy\impl y abre GlobalActions.smali.
(dentro de “\database\dex”)
3. Busca la linea ".field private mDialog:Landroid/app/AlertDialog;" y añade esto:
__________________________________________________ __________
.field private mDialog:Landroid/app/AlertDialog;

.field private mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.field private mHandler:Landroid/os/Handler;
__________________________________________________ __________

4. Busca "[Lcom/android/internal/policy/impl/GlobalActions$Action;" e incrementa el numero de arrays para que puedan caber todas las opciones en el menú Power.
__________________________________________________ __________
.line 418
const/4 v1, 0x5 <!--- Aquí debes cambiar el numero

new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
__________________________________________________ __________

Nota:
Recuerda que el numero máximo permitido es 7 (empezando de 0x0 a 0x6), seguramente tengas que eliminar alguna si tu menú power original tiene demasiadas arrays… por ejemplo el Modo Avion.

Asi debe quedar:
__________________________________________________ __________
.line 418
const/4 v1, 0x8

new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;
__________________________________________________ __________

5. Añadiremos una nueva instancia para poder albergar ese numero de mas
(si no, el sistema no lo aceptara)
__________________________________________________ __________
.line 416
invoke-direct/range {p0 .. p0}, Lcom/android/internal/policy/impl/GlobalActions;->onAirplaneModeChanged()V

new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;

const v2, 0x??????1

const v3, 0x?????11

move-object/from16 v0, p0

invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$ScreenCap;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

move-object/from16 v0, p0

iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Recovery;

const v2, 0x??????2

const v3, 0x?????22

move-object/from16 v0, p0

invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Recovery;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

move-object/from16 v0, p0

iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

new-instance v1, Lcom/android/internal/policy/impl/GlobalActions$Download;

const v2, 0x??????3

const v3, 0x?????33

move-object/from16 v0, p0

invoke-direct {v1, v0, v2, v3}, Lcom/android/internal/policy/impl/GlobalActions$Download;-><init>(Lcom/android/internal/policy/impl/GlobalActions;II)V

move-object/from16 v0, p0

iput-object v1, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

.line 418
const/4 v1, 0x8
__________________________________________________ __________


Como veras, las ID’s que se muestran son las que tenemos en el archivo public.xml de nuestra framework-res.apk.
La primera ID de cada acción representa a los iconos nuevos.
La segunda ID de cada acción representa el origen en el sistema
Echale un ojo al archivo public.xml y asegúrate de que concuerden

No olvides que para linkear las ID’s de la framework-res.apk, debemos omitir el primer cero después de la x. (Por ejemplo…0x01080a98 seria 0x1080a98)

6. Ya tenemos añadidos los nuevos arrays para mostrarlos en el menú Power… ahora modificaremos los archivos para hacerlos consecutivos en el menú (el que veremos en el teléfono)
__________________________________________________ __________
.line 418
const/4 v1, 0x8

new-array v1, v1, [Lcom/android/internal/policy/impl/GlobalActions$Action;

const/4 v2, 0x0

move-object/from16 v0, p0

iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mAccessiblityShortcut:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

aput-object v3, v1, v2
...
...
...
const/4 v2, 0x4

move-object/from16 v0, p0

iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRestart:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

aput-object v3, v1, v2

const/4 v2, 0x5

move-object/from16 v0, p0

iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mScreenCapture:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

aput-object v3, v1, v2

const/4 v2, 0x6

move-object/from16 v0, p0

iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mRecovery:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

aput-object v3, v1, v2

const/4 v2, 0x7

move-object/from16 v0, p0

iget-object v3, v0, Lcom/android/internal/policy/impl/GlobalActions;->mDownload:Lcom/android/internal/policy/impl/GlobalActions$SinglePressAction;

aput-object v3, v1, v2
__________________________________________________ __________

7. Guarda los cambios y sal.
8. Copia los 4 archivos que hay dentro de “archivos.policy.rar” a: classout\com\android\internal\policy\impl
9. Recompila android.policy.jar mediante la opción “3” del menú de “HoloxTool_v1.0.1”.
10. copia el archivo “new-classes.dex” que hay dentro de “HoloxTool_v1.0.1\database\dex” al escritorio y renómbralo a “classes.dex”
11. Abre “android.policy.jar” con “WinRAR” y mete el archivo “classes.dex” que tienes en tu escritorio (machacará el que hay dentro)

Ahora pasa los archivos framework-res.apk y android.policy.jar que has modificado… al teléfono peeero no funcionaran las capturas de pantalla hasta que pases el archivo “screenshot” al bin de tu sistema (en el móvil , mediante RootExplorer)



http://i.imgur.com/DKaiuaD.png

Boxer HM
13/05/13, 11:08:13
Gracias ;-)

metrolan
13/05/13, 12:23:30
Muchas gracias, es muy bueno para empezar a aprender. :gracias:

Un par de dudas de novato: :pensando:


Vamos a añadirle al boton de power 4 tipos de reinicio:



¿Lo del NFC es un error en el título o es que va aparejado?



Necesitaremos:
1. El archivo "android.policy.jar", "framework-res.apk" y "framework.jar" de tu ROM
2. ApkTools (https://docs.google.com/file/d/0B4gZLyPSGvqhS1J3dkY0WXlvaUU/edit?usp=sharing)
3. Estos tres archivos: 1, 2 y 3.



Creo que hay un problema con los enlaces, ya que el tercer punto no activa ninguno (aunque sea el mismo que el del segundo punto, parece que está mal puesto).
Además, el aapt.exe da "not found".

Y una cosita mas, ¿me puedes indicar algún enlace a un tuto como este, pero con linux? :rolleyes:

Saludos

klurosu
13/05/13, 12:56:26
(...) ¿Lo del NFC es un error en el título o es que va aparejado?
Hay dos modelos de Galasy S2 Plus.
El que tiene NFC y el que no lo lleva.
Todos los tutoriales llevaran uindicaciones sobre a que modelo van dirigidos :)

Creo que hay un problema con los enlaces, ya que el tercer punto no activa ninguno (aunque sea el mismo que el del segundo punto, parece que está mal puesto).
Además, el aapt.exe da "not found".
Cierto, los revisare cuando salga del curro (es que a esas horas ya estaba un poco perjudicado xD)
Y una cosita mas, ¿me puedes indicar algún enlace a un tuto como este, pero con linux? :rolleyes:
Si, con linux es mas facil.
Me `pondre con ello

Un saludeteeeeeeeeeee

Universo
13/05/13, 17:14:37
Gracias por el tutorial, me preguntaba si vale para el modelo GT-I9100? y si se podría añadir a ese menú (al principal) la opcion de "Screenshot Function" y si se puede haber si nos podrías decir como para poder hacerlo. Muchas gracias.

PD. Esto vale para roms Stock como la XWLPG, etc ... ?

Saludos

klurosu
13/05/13, 19:52:36
Gracias por el tutorial, me preguntaba si vale para el modelo GT-I9100? y si se podría añadir a ese menú (al principal) la opcion de "Screenshot Function" y si se puede haber si nos podrías decir como para poder hacerlo. Muchas gracias.

PD. Esto vale para roms Stock como la XWLPG, etc ... ?

Saludos
No vale... las rutas cambian pero seguro que si buscas en google encuentras el correcto para el I9100

Arkhass
18/05/13, 14:11:36
Klurosu en el punto 3 no has puesto las imágenes (supongo que las querías poner) Si puede súbelas por favor sino ya googleo yo y las pongo, muchas gracias! :ok:

klurosu
18/05/13, 16:09:16
Klurosu en el punto 3 no has puesto las imágenes (supongo que las querías poner) Si puede súbelas por favor sino ya googleo yo y las pongo, muchas gracias! :ok:
Solucionadooo ;)

Un saludo

Universo
24/05/13, 20:57:50
Hola, y digo yo!!! y en vez de quitar opciones del menu dado que solo cojen 7, por que no se hace un submenu en "Reiniciar" que tenga en dicho subenu Normal, Download y Recovery, la opción Screenshot quedaria en le menu principal. Eso se podria hacer?

klurosu
24/05/13, 22:08:35
Hola, y digo yo!!! y en vez de quitar opciones del menu dado que solo cojen 7, por que no se hace un submenu en "Reiniciar" que tenga en dicho subenu Normal, Download y Recovery, la opción Screenshot quedaria en le menu principal. Eso se podria hacer?

Buenaaas.

Quitar opciones?... hola?
Si, se puede hacer un submenu para eso (es basicamente igual) pero lo puse asi por gusto personal.

Un saludoo

Universo
25/05/13, 11:55:15
Hola klurosu (http://www.htcmania.com/member.php?u=17530), gracias por responder pero llegado a este punto me surje una duda y una petición si es posible.
La duda es si yo modifico el archivo "framework-res.apk y android.policy.jar" u otros, cuando aha otro mod tengo que partir de esos modificados o desde los originales? otra duda es que si yo creo este mod para el movil y luego quiero añadirle otro mod que hizo otra persona que modifique alguno de los archivos que necesite yo para crear mi mod yo perderé mi mod al sobre inscribir los archivos de otro mod.?
La petición es, si buenamente me podrias decir como crear el submenu que dandole a "Reiniciar" apareciera otra menú con "Normal, Recovery y Download" dado que "Screenshot" quedase en el menu principal.
Ante todo muchas gracias y perdona las molestias que te puedan causar mis absurdas dudas o peticiones.
Saludos

klurosu
26/05/13, 22:47:13
Siempre desde los modificados:)