klurosu
17/06/13, 00:11:46
Gracias a:
majdinj (http://forum.xda-developers.com/member.php?u=369057)
xpeiacle (http://forum.xda-developers.com/member.php?u=4948919)
grilleld (http://forum.xda-developers.com/member.php?u=4826618)
Yo solo he modificado el codigo para que cuadre en nuestro i9105 o i9105P.
Al turron!
Necesitaras:
Android.policy.jar
HoloxTool_v1.0.1 (https://docs.google.com/file/d/0B4gZLyPSGvqhYlRxTXhpeTZQZ0k/edit?usp=sharing)
"boton.vol.pasa.pistas (https://drive.google.com/folderview?id=0B4gZLyPSGvqhYmRiZGtRSmlsRWc&usp=sharing)"
1. Abre “Android.policy.jar” con “WinRAR” y saca el archivo “classes.dex” a la carpeta “dex” que hay dentro de “HoloxTool_v1.0.1” y selecciona la opción “2” cuando ejecutes “HoloxTool.bat”
2. Entra en “HoloxTool_v1.0.1\database\dex\classout\com/android/internal/policy/impl y abre el archivo “PhoneWindowManager.smali”
3. Busca la línea:".field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2" y añade lo que esta en azul justo debajo:
.field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2
.field private static final LONG_PRESS_TIMEOUT:I = 0x190
.field static final MINI_APP_DIALOG_LAYER:I = 0x5
- Busca ".field private mIsVisibleSPenGestureView:Z" y añade estas lineas en azul:
.field private mIsVisibleSPenGestureView:Z
.field mIsVolumeAction:Z
.field mIsVolumeBlocking:Z
.field mKeyboardTapVibePattern:[J
- Busca ".field private mVolumeDownKeyTriggered:Z" y añade esta linea azul::
.field private mVolumeDownKeyTriggered:Z
.field mVolumeDownLongPress:Ljava/lang/Runnable;
.field private final mVolumeKeyLongPressforOneTouchReport:Ljava/lang/Runnable;
- Busca ".field private mVolumeUpKeyTriggered:Z" y añade esta linea azul:
.field private mVolumeUpKeyTriggered:Z
.field mVolumeUpLongPress:Ljava/lang/Runnable;
.field mWindowManager:Landroid/view/IWindowManager;
- Busca el metodo ".method public constructor <init>()V" y vete al final del mismo para poder añadir estas lineas azulesantes del "return-void":
.line 7554
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$35;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$35;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenLockTimeout:Ljava/lang/Runnable;
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip1;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip1;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip2;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip2;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
.line 8501
return-void
.end method
- Busca el metodo ".method handleVolumeKey(II)V" y añade estas lineas encima del "invoke-static" y sustituye la condicion:
. method handleVolumeKey(II)V
.registers 8
.parameter "stream"
.parameter "keycode"
.prologue
.line 5673
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
if-nez v0, :cond_c
invoke-static {}, Lcom/android/internal/policy/impl/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService;
move-result-object v0
.line 5674
.local v0, audioService:Landroid/media/IAudioService;
if-nez v0, :cond_7
.line 5705
:cond_c
:goto_c
return-void;[/code]
- Aun en el metodo de arriba, busca "Landroid/os/PowerManager$WakeLock;->release()V" y cambia el valor del ":goto" por el de antes:
[CODE].line 5703
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_c
- Hay otro, asi que...haz lo mismo:
.line 5703
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_c
- Ahora al final del metodo ".method handleVolumeKey(II)V" y antes del metodo ".method public hasNavigationBar()Z", añade estos dos:
.method handleVolumeLongPress(I)V
.registers 6
const/4 v1, 0x1
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
const/4 v1, 0x0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
const/16 v1, 0x18
if-ne p1, v1, :cond_majdi
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
:goto_nj
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
sget v2, Lcom/android/internal/policy/impl/PhoneWindowManager;->LONG_PRESS_TIMEOUT:I
int-to-long v2, v2
invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
:cond_majdi
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
goto :goto_nj
.end method
.method handleVolumeLongPressAbort()V
.registers 3
const/4 v1, 0x0
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;V
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;V
return-void
.end method
- Busca el metodo ".method public interceptKeyBeforeQueueing(Landroid/view/KeyEvent;IZ)I", y busca abajo la linea "Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;" para añadir estas lineas:
. line 6234
.end local v7 #ex:Landroid/os/RemoteException;
:cond_4d3
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenOnEarly:Z
if-nez v0, :cond_dinj
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v29
if-eqz p0, :cond_dinj
move-object/from16 v0, p0
move/from16 v15, v19
invoke-virtual {v0, v15}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPress(I)V
:cond_dinj
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;
move-object/from16 v29, v0
if-nez v29, :cond_68
- Aun en este metodo, mas abajo deberas modificar una condicion:
invoke-virtual/range {v29 .. v29}, Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;->start()V
oto/16 :goto_68
.line 6242
.end local v27 #telephonyService:Lcom/android/internal/telephony/ITelephony;
.end local v28 #voipInterfaceService:Landroid/os/IVoIPInterface;
:cond_506
if-nez v5, :cond_newa
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
if-eqz v0, :cond_newa
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
if-nez v0, :cond_newa
move-object/from16 v0, p0
const/4 v3, 0x0
move/from16 v15, v19
invoke-virtual {v0, v3, v15}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
:cond_newa
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;
move-object/from16 v29, v0
- Nos vamos al final del metodo ".method sendCloseSystemWindows(Ljava/lang/String;V" y encima del metodo ".method setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;I)V" añade esto:
.method protected sendMediaButtonEvent(I)V
.registers 15
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v1
new-instance v11, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v11, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;V
new-instance v0, Landroid/view/KeyEvent;
const/4 v5, 0x0
const/4 v7, 0x0
move-wide v3, v1
move v6, p1
invoke-direct/range {v0 .. v7}, Landroid/view/KeyEvent;-><init>(JJIII)V
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v11, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;V
new-instance v12, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v12, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;V
new-instance v3, Landroid/view/KeyEvent;
const/4 v8, 0x1
const/4 v10, 0x0
move-wide v4, v1
move-wide v6, v1
move v9, p1
invoke-direct/range {v3 .. v10}, Landroid/view/KeyEvent;-><init>(JJIII)V
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v12, v4, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v12, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;V
const/4 v8, 0x1
move-object/from16 v9, p0
iput-boolean v8, v9, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
return-void
.end method
Cierra el documento guardando los cambios.
4. Añade los dos archivos que hay dentro de "boton.vol.pasa.pistas (https://drive.google.com/folderview?id=0B4gZLyPSGvqhYmRiZGtRSmlsRWc&usp=sharing)" a la ruta: "com/android/internal/policy/impl" y recompila mediante la opción “3” del menú de “HoloxTool_v1.0.1”.
5. copia el archivo “new-classes.dex” que hay dentro de “HoloxTool_v1.0.1\database\dex” al escritorio y renómbralo a “classes.dex”
6. Abre “Android.policy.jar” con “WinRAR” y mete el archivo “classes.dex” que tienes en tu escritorio (machacará el que hay dentro)
Ya está.
Ahora cada vez que estes escuchando tu musica favorita y el movil este en modo bloqueo, podras pasar a la siguiente cancion o a la anterior... pulsando Vol+ o Vol-
majdinj (http://forum.xda-developers.com/member.php?u=369057)
xpeiacle (http://forum.xda-developers.com/member.php?u=4948919)
grilleld (http://forum.xda-developers.com/member.php?u=4826618)
Yo solo he modificado el codigo para que cuadre en nuestro i9105 o i9105P.
Al turron!
Necesitaras:
Android.policy.jar
HoloxTool_v1.0.1 (https://docs.google.com/file/d/0B4gZLyPSGvqhYlRxTXhpeTZQZ0k/edit?usp=sharing)
"boton.vol.pasa.pistas (https://drive.google.com/folderview?id=0B4gZLyPSGvqhYmRiZGtRSmlsRWc&usp=sharing)"
1. Abre “Android.policy.jar” con “WinRAR” y saca el archivo “classes.dex” a la carpeta “dex” que hay dentro de “HoloxTool_v1.0.1” y selecciona la opción “2” cuando ejecutes “HoloxTool.bat”
2. Entra en “HoloxTool_v1.0.1\database\dex\classout\com/android/internal/policy/impl y abre el archivo “PhoneWindowManager.smali”
3. Busca la línea:".field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2" y añade lo que esta en azul justo debajo:
.field static final LONG_PRESS_POWER_SHUT_OFF:I = 0x2
.field private static final LONG_PRESS_TIMEOUT:I = 0x190
.field static final MINI_APP_DIALOG_LAYER:I = 0x5
- Busca ".field private mIsVisibleSPenGestureView:Z" y añade estas lineas en azul:
.field private mIsVisibleSPenGestureView:Z
.field mIsVolumeAction:Z
.field mIsVolumeBlocking:Z
.field mKeyboardTapVibePattern:[J
- Busca ".field private mVolumeDownKeyTriggered:Z" y añade esta linea azul::
.field private mVolumeDownKeyTriggered:Z
.field mVolumeDownLongPress:Ljava/lang/Runnable;
.field private final mVolumeKeyLongPressforOneTouchReport:Ljava/lang/Runnable;
- Busca ".field private mVolumeUpKeyTriggered:Z" y añade esta linea azul:
.field private mVolumeUpKeyTriggered:Z
.field mVolumeUpLongPress:Ljava/lang/Runnable;
.field mWindowManager:Landroid/view/IWindowManager;
- Busca el metodo ".method public constructor <init>()V" y vete al final del mismo para poder añadir estas lineas azulesantes del "return-void":
.line 7554
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$35;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$35;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenLockTimeout:Ljava/lang/Runnable;
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip1;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip1;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
new-instance v0, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip2;
invoke-direct {v0, p0}, Lcom/android/internal/policy/impl/PhoneWindowManager$Skip2;-><init>(Lcom/android/internal/policy/impl/PhoneWindowManager;V
iput-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
.line 8501
return-void
.end method
- Busca el metodo ".method handleVolumeKey(II)V" y añade estas lineas encima del "invoke-static" y sustituye la condicion:
. method handleVolumeKey(II)V
.registers 8
.parameter "stream"
.parameter "keycode"
.prologue
.line 5673
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
if-nez v0, :cond_c
invoke-static {}, Lcom/android/internal/policy/impl/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService;
move-result-object v0
.line 5674
.local v0, audioService:Landroid/media/IAudioService;
if-nez v0, :cond_7
.line 5705
:cond_c
:goto_c
return-void;[/code]
- Aun en el metodo de arriba, busca "Landroid/os/PowerManager$WakeLock;->release()V" y cambia el valor del ":goto" por el de antes:
[CODE].line 5703
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_c
- Hay otro, asi que...haz lo mismo:
.line 5703
iget-object v2, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mBroadcastWakeLock:Landroid/os/PowerManager$WakeLock;
invoke-virtual {v2}, Landroid/os/PowerManager$WakeLock;->release()V
goto :goto_c
- Ahora al final del metodo ".method handleVolumeKey(II)V" y antes del metodo ".method public hasNavigationBar()Z", añade estos dos:
.method handleVolumeLongPress(I)V
.registers 6
const/4 v1, 0x1
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
const/4 v1, 0x0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
const/16 v1, 0x18
if-ne p1, v1, :cond_majdi
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
:goto_nj
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
sget v2, Lcom/android/internal/policy/impl/PhoneWindowManager;->LONG_PRESS_TIMEOUT:I
int-to-long v2, v2
invoke-virtual {v1, v0, v2, v3}, Landroid/os/Handler;->postDelayed(Ljava/lang/Runnable;J)Z
return-void
:cond_majdi
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
goto :goto_nj
.end method
.method handleVolumeLongPressAbort()V
.registers 3
const/4 v1, 0x0
move-object/from16 v0, p0
iput-boolean v1, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeUpLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;V
iget-object v0, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mHandler:Landroid/os/Handler;
iget-object v1, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mVolumeDownLongPress:Ljava/lang/Runnable;
invoke-virtual {v0, v1}, Landroid/os/Handler;->removeCallbacks(Ljava/lang/Runnable;V
return-void
.end method
- Busca el metodo ".method public interceptKeyBeforeQueueing(Landroid/view/KeyEvent;IZ)I", y busca abajo la linea "Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;" para añadir estas lineas:
. line 6234
.end local v7 #ex:Landroid/os/RemoteException;
:cond_4d3
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mScreenOnEarly:Z
if-nez v0, :cond_dinj
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->isMusicActive()Z
move-result v29
if-eqz p0, :cond_dinj
move-object/from16 v0, p0
move/from16 v15, v19
invoke-virtual {v0, v15}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPress(I)V
:cond_dinj
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;
move-object/from16 v29, v0
if-nez v29, :cond_68
- Aun en este metodo, mas abajo deberas modificar una condicion:
invoke-virtual/range {v29 .. v29}, Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;->start()V
oto/16 :goto_68
.line 6242
.end local v27 #telephonyService:Lcom/android/internal/telephony/ITelephony;
.end local v28 #voipInterfaceService:Landroid/os/IVoIPInterface;
:cond_506
if-nez v5, :cond_newa
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeBlocking:Z
if-eqz v0, :cond_newa
invoke-virtual/range {p0 .. p0}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeLongPressAbort()V
move-object/from16 v0, p0
iget-boolean v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
if-nez v0, :cond_newa
move-object/from16 v0, p0
const/4 v3, 0x0
move/from16 v15, v19
invoke-virtual {v0, v3, v15}, Lcom/android/internal/policy/impl/PhoneWindowManager;->handleVolumeKey(II)V
:cond_newa
move-object/from16 v0, p0
iget-object v0, v0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mSamsungVolumeControlThread:Lcom/android/internal/policy/impl/PhoneWindowManager$SamsungVolumeControlThread;
move-object/from16 v29, v0
- Nos vamos al final del metodo ".method sendCloseSystemWindows(Ljava/lang/String;V" y encima del metodo ".method setAttachedWindowFrames(Landroid/view/WindowManagerPolicy$WindowState;IILandroid/view/WindowManagerPolicy$WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;I)V" añade esto:
.method protected sendMediaButtonEvent(I)V
.registers 15
invoke-static {}, Landroid/os/SystemClock;->uptimeMillis()J
move-result-wide v1
new-instance v11, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v11, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;V
new-instance v0, Landroid/view/KeyEvent;
const/4 v5, 0x0
const/4 v7, 0x0
move-wide v3, v1
move v6, p1
invoke-direct/range {v0 .. v7}, Landroid/view/KeyEvent;-><init>(JJIII)V
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v11, v4, v0}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v11, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;V
new-instance v12, Landroid/content/Intent;
const-string v4, "android.intent.action.MEDIA_BUTTON"
const/4 v5, 0x0
invoke-direct {v12, v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;V
new-instance v3, Landroid/view/KeyEvent;
const/4 v8, 0x1
const/4 v10, 0x0
move-wide v4, v1
move-wide v6, v1
move v9, p1
invoke-direct/range {v3 .. v10}, Landroid/view/KeyEvent;-><init>(JJIII)V
const-string v4, "android.intent.extra.KEY_EVENT"
invoke-virtual {v12, v4, v3}, Landroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;Landroid/content/Intent;
iget-object v4, p0, Lcom/android/internal/policy/impl/PhoneWindowManager;->mContext:Landroid/content/Context;
const/4 v5, 0x0
invoke-virtual {v4, v12, v5}, Landroid/content/Context;->sendOrderedBroadcast(Landroid/content/Intent;Ljava/lang/String;V
const/4 v8, 0x1
move-object/from16 v9, p0
iput-boolean v8, v9, Lcom/android/internal/policy/impl/PhoneWindowManager;->mIsVolumeAction:Z
return-void
.end method
Cierra el documento guardando los cambios.
4. Añade los dos archivos que hay dentro de "boton.vol.pasa.pistas (https://drive.google.com/folderview?id=0B4gZLyPSGvqhYmRiZGtRSmlsRWc&usp=sharing)" a la ruta: "com/android/internal/policy/impl" y recompila mediante la opción “3” del menú de “HoloxTool_v1.0.1”.
5. copia el archivo “new-classes.dex” que hay dentro de “HoloxTool_v1.0.1\database\dex” al escritorio y renómbralo a “classes.dex”
6. Abre “Android.policy.jar” con “WinRAR” y mete el archivo “classes.dex” que tienes en tu escritorio (machacará el que hay dentro)
Ya está.
Ahora cada vez que estes escuchando tu musica favorita y el movil este en modo bloqueo, podras pasar a la siguiente cancion o a la anterior... pulsando Vol+ o Vol-