Avisos

ROMs y desarrollo Samsung Galaxy S II ROMs y desarrollo Samsung Galaxy S II

Respuesta
 
Herramientas
  #1  
Viejo 17/06/13, 00:11:46
Array

[xs_avatar]
klurosu klurosu no está en línea
Cocinero a la antigua
 
Fecha de registro: ago 2008
Localización: Phu Tho
Mensajes: 5,753
Modelo de smartphone: Pixel 6
Tu operador: Lowi
Post Galaxy SII +/+ NFC [I9105/I9105P] Vol+ y Vol- para pasar canciones

Gracias a:
majdinj
xpeiacle
grilleld

Yo solo he modificado el codigo para que cuadre en nuestro i9105 o i9105P.


Al turron!

Necesitaras:
Android.policy.jar
HoloxTool_v1.0.1
"boton.vol.pasa.pistas"


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:

Código:
.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:

Código:
.field private mIsVisibleSPenGestureView:Z

.field mIsVolumeAction:Z

.field mIsVolumeBlocking:Z

.field mKeyboardTapVibePattern:[J
- Busca ".field private mVolumeDownKeyTriggered:Z" y añade esta linea azul::

Código:
.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:

Código:
.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":

Código:
.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:

[code]. 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:

Código:
.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:

Código:
.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:

Código:
.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:

Código:
. 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:

Código:
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:

Código:
.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" 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-

__________________
Donacion PayPal

I'm no hero.
Responder Con Cita


Respuesta

Estás aquí
Regresar   Portal | Indice > Foros Samsung > Otros smartphones de Samsung antiguos > Samsung Galaxy S II > ROMs y desarrollo Samsung Galaxy S II

Herramientas


Hora actual: 08:25:15 (GMT +1)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /