Este foro usa cookies
Este foro hace uso de cookies para almacenar su información de inicio de sesión si está registrado, y su última visita si no lo está. Las cookies son pequeños documentos de texto almacenados en su computadora; las cookies establecidas por este foro solo se pueden usar en este sitio web y no representan ningún riesgo de seguridad. Las cookies en este foro también rastrean los temas específicos que ha leído y la última vez que los leyó. Por favor, confirme si acepta o rechaza el establecimiento de estas cookies.

Se almacenará una cookie en su navegador, independientemente de su elección, para evitar que le vuelvan a hacer esta pregunta. Podrá cambiar la configuración de sus cookies en cualquier momento utilizando el enlace en el pie de página.

Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Tile para control tiempo apagdo normal y en bloqueo
#1
Tile para tiempo de apagado - pantalla normal y pantalla de bloque (en modo normal y en modo ahorro de energía)



Características

- Tile integrado en systemui
- Nos permite cambiar el tiempo de apagado (controlando la screen_off_timeout de settings system). El toggle está sincronizado con la opción de settings.
- Pulsando en el texto se nos expande un detalle en el que podemos cambiar el tiempo de apagado en pantalla de bloqueo cuando no tocamos nada tanto en modo normal como ahorro de energía. Por defecto son 5 segundos y 3 segundos. Podemos cambiar ambos entre 3 y 30 segundos. 


Guía


- Nos bajamos el zip adjunto y lo descomprimimos.
- Editamos Systemui.apk

1- pones los pngs de res-drawables en vuestra carpeta drawables dentro de systemui - res
2.- Editamos strings.xml del systemui (en res - values) y ponemos dentro los strings del adjunto que aparecen en el txt res-values-strings
Hacemos lo mismo para los strings en res values-es.
3.-  del anexo copiamos el layout qs_detail_grxscreenofftime.xml que encontrarés a la carpeta res  - layout de vuestro systemui
4.- Este paso es opcional. Debido al sistema de análisis de logging que ha puesto samsung, si no añadimos en arrays.xml unos valores cada vez que pulsemos click en el toggle se generará una línea de log (una excepción). Esto pasa con todos los toggles no stock. Si queréis quitar esa línea de log hacemos lo siguiente

Editarmos res-values-arrays.xml en el systemui y buscamos este array :  <string-array name="tile_ids"> . Antes de que se cierre el array añadimos las siguientes líneas

Código:
        <item>GrxScreenOnTime</item>
        <item>999</item>
        <item>9999</item>
        <item>9999</item>
    </string-array>

añadimos esas 4 líneas que hay antes de </string-..

5.- Del anexo copiamos los 5 smalies que veréis en la carpeta \smali\com\android\systemui\qs\tiles al systemui, en la misma ruta.

Ahora vamos a dar el soporte al mod de los tiempos de apagado en bloqueo

6.- Editamos statusbar.smali y añadimos el siguiente método al final del smali

Código:
.method public grxUpdateLockScreenTimeOff()V
    .locals 1

    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBar;->mStatusBarWindowManager:Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;

    if-eqz v0, :cond_0

    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBar;->mStatusBarWindowManager:Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;

    invoke-virtual {v0}, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->grxUpdateLockScreenTimeOff()V

    :cond_0
    return-void
.end method

Desde el tile llamamos a este método, que hace de intermediario. Es necesario por que mStatusBarWindowManager es una variable tipo protected, por lo que no podemos acceder desde el tile, a no ser que cambiemos su condición, pero no merece la pena.

7.- Finalmente editamos StatusBarWindowManager.smali y hacemos los siguientes cambios.

- Añadimos los siguientes dos variables, después de la etiqueta instance fields

Código:
# instance fields

.field private mGrxLsTimeOutNormal:J

.field private mGrxLsTimeOutPowerSave:J

-  Localizamos el método method public constructor <init>(Landroid/content/Context;)V

Buscamos la línea donde se establece el context y añadimos la línea indicada a continuación

Código:
...
...
    iput-object p1, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mContext:Landroid/content/Context;  ### buscamos esta línea

    invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->grxReadScreenOffTimeOutValues()V  ## añadimos esta línea

    const-string/jumbo v0, "window"
...


- Ahora al final del smali añadimos los siguientes dos métodos


Código:
.method public grxReadScreenOffTimeOutValues()V
    .locals 4

    iget-object v0, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mContext:Landroid/content/Context;

    invoke-virtual {v0}, Landroid/content/Context;->getContentResolver()Landroid/content/ContentResolver;

    move-result-object v0

    const-string v1, "toff_ls_normal"

    const v2, 0x5

    :try_start_0
    invoke-static {v0, v1, v2}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v2
    :try_end_0
    .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

    :goto_0
    const v1, 0x3e8

    mul-int v2, v2, v1

    int-to-long v2, v2

    iput-wide v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mGrxLsTimeOutNormal:J

    const-string v1, "toff_ls_psm"

    const v2, 0x3

    :try_start_1
    invoke-static {v0, v1, v2}, Landroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I

    move-result v2
    :try_end_1
    .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1

    :goto_1
    const v1, 0x3e8

    mul-int v2, v2, v1

    int-to-long v2, v2

    iput-wide v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mGrxLsTimeOutPowerSave:J

    return-void

    :catch_0
    move-exception v1

    const v2, 0x5

    goto :goto_0

    :catch_1
    move-exception v1

    const v2, 0x3

    goto :goto_1
.end method

.method public grxUpdateLockScreenTimeOff()V
    .locals 1

    invoke-virtual {p0}, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->grxReadScreenOffTimeOutValues()V

    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->updateUserActivityTimeout(Z)V

    return-void
.end method



- Para finalizar con el mod buscamos el método getUserActivityTimeout()J  y hacemos los siguientes cambios (buscar ## en el siguiente código)


Código:
.method public getUserActivityTimeout()J
    .locals 8


    ##const-wide/16 v6, 0x1388  ## remove this line


    ##const-wide/16 v4, 0xbb8 ## remove this line

    iget-wide v6, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mGrxLsTimeOutNormal:J   ### add this line

    iget-wide v4, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mGrxLsTimeOutPowerSave:J ### add this line

    sget v2, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->AWAKE_INTERVAL_DEFAULT_MS_DEFAULT:I

    int-to-long v0, v2

    invoke-static {}, Lcom/android/systemui/util/SettingsHelper;->getInstance()Lcom/android/systemui/util/SettingsHelper;

    move-result-object v2

    invoke-virtual {v2}, Lcom/android/systemui/util/SettingsHelper;->isSmartStayEnabled()Z

    move-result v2

    if-eqz v2, :cond_0


   ## invoke-static {v6, v7, v0, v1}, Ljava/lang/Math;->min(JJ)J  ## remove this line

   ### move-result-wide v0 ## remove this line
   
   move-wide v0, v6 ### add this line

    :cond_0
    sget-boolean v2, Lcom/android/systemui/Rune;->KEYGUARD_SUPPORT_HIGH_PERFORMANCE_MODE:Z

    if-eqz v2, :cond_1

    invoke-static {}, Lcom/android/systemui/util/SettingsHelper;->getInstance()Lcom/android/systemui/util/SettingsHelper;

    move-result-object v2

    invoke-virtual {v2}, Lcom/android/systemui/util/SettingsHelper;->isNormalInHighPerformanceMode()Z

    move-result v2

    if-eqz v2, :cond_1


    ##invoke-static {v6, v7, v0, v1}, Ljava/lang/Math;->min(JJ)J ## remove this line

    ##move-result-wide v0 ## remove this line

move-wide v0, v6 ### add this line

    :cond_1
    iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mContext:Landroid/content/Context;

    invoke-static {v2}, Lcom/android/keyguard/KeyguardUpdateMonitor;->getInstance(Landroid/content/Context;)Lcom/android/keyguard/KeyguardUpdateMonitor;

    move-result-object v2

    invoke-virtual {v2}, Lcom/android/keyguard/KeyguardUpdateMonitor;->isDexMode()Z

    move-result v2

    if-eqz v2, :cond_2

    sget v2, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->AWAKE_INTERVAL_DEFAULT_MS_DEFAULT:I

    int-to-long v0, v2

    :cond_2
    invoke-static {}, Lcom/android/systemui/util/SettingsHelper;->getInstance()Lcom/android/systemui/util/SettingsHelper;

    move-result-object v2

    invoke-virtual {v2}, Lcom/android/systemui/util/SettingsHelper;->isEmergencyMode()Z

    move-result v2

    if-eqz v2, :cond_4


    ###invoke-static {v4, v5, v0, v1}, Ljava/lang/Math;->min(JJ)J ### remove this line

    ### move-result-wide v0 ### remove this line

move-wide v0, v4 ## add this line

    :cond_3
    :goto_0
    const-string/jumbo v2, "StatusBarWindowManager"

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string/jumbo v4, "getUserActivityTimeout()"

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3, v0, v1}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;

    move-result-object v3

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v3

    invoke-static {v2, v3}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

    return-wide v0

    :cond_4
    invoke-static {}, Lcom/android/systemui/util/SettingsHelper;->getInstance()Lcom/android/systemui/util/SettingsHelper;

    move-result-object v2

    invoke-virtual {v2}, Lcom/android/systemui/util/SettingsHelper;->isPowerSavingMode()Z

    move-result v2

    if-eqz v2, :cond_3

    iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mPowerManager:Landroid/os/PowerManager;

    if-nez v2, :cond_5

    iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mContext:Landroid/content/Context;

    const-string/jumbo v3, "power"

    invoke-virtual {v2, v3}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Landroid/os/PowerManager;

    iput-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mPowerManager:Landroid/os/PowerManager;

    :cond_5
    iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mPowerManager:Landroid/os/PowerManager;

    if-eqz v2, :cond_3

    iget-object v2, p0, Lcom/android/systemui/statusbar/phone/StatusBarWindowManager;->mPowerManager:Landroid/os/PowerManager;

    invoke-virtual {v2}, Landroid/os/PowerManager;->isPowerSaveMode()Z

    move-result v2

    if-eqz v2, :cond_3

    ### invoke-static {v4, v5, v0, v1}, Ljava/lang/Math;->min(JJ)J # remove this line

    ### move-result-wide v0 ## remove this line

move-wide v0, v4 ### add this line

    goto :goto_0

.end method




Para activar el toggle: 

- Instalación en limpio: 

a.- En el propio SystemUi edita strings.xml y busca el siguiente string y añádelo como se indica (GrxScreenOnTime y una coma al principio por ejemplo)

Código:
<string name="quick_settings_tiles_default">GrxScreenOnTime,Wifi,Sound .....


b.- En tu csc edita el others.xml por ejemplo edita (si no lo tiene busca en google como añadirlo) la siguiente entrada. 

Código:
<CscFeature_SystemUI_ConfigDefQuickSettingItem>GrxScreenOnTime,Wifi .... 
 


- Instalación e sucio

Usa el método b de instalación en limpio
[Imagen: 80da9d34611f714425d3a217c318f33e.jpg][Imagen: 2359779b913c7eb29c55c6822de13d98.jpg]


Archivos adjuntos
.zip   TileScreenOffTimeGuide.zip (Tamaño: 37.12 KB / Descargas: 23)
[-] Recuento: 7 usuarios dicen Me Gusta a Grouxho por este post:
  • agabey_42 (12-17-2018), cocoyaya1111 (12-15-2018), maquilon (08-01-2018), Zerhiote (07-26-2018), dav88 (07-26-2018), necrosauron (07-25-2018), GVM (07-25-2018)
Responder
#2
La leche tio, pedazo de mods te inventas jejejejej

Enviado desde mi ONEPLUS A6003 mediante Tapatalk
[Imagen: qeHcSFg.png]

[-] Recuento: 1 usuario dice Me Gusta a GVM por este post:
  • Grouxho (07-25-2018)
Responder
#3
uuffff tremendo tuto... y oedazo de mod...

se agradece ek curro master...

un saludo
[Imagen: D0YqJ3J.gif]
[-] Recuento: 1 usuario dice Me Gusta a necrosauron por este post:
  • Grouxho (07-26-2018)
Responder
#4
Como siempre Gracias por el curro

Los explicas tan fácil, que en un rato se hacen todos

Salu2[Imagen: 1c5c0be83140612e7433bd56404ff206.jpg]

Enviado desde mi SM-G935F mediante Tapatalk
[-] Recuento: 4 usuarios dicen Me Gusta a dav88 por este post:
  • maquilon (08-01-2018), Grouxho (08-01-2018), GVM (07-30-2018), necrosauron (07-30-2018)
Responder
#5
Como me gustaría saber el 10 % de todo lo que sabes sobre esto!!!
Gracias crack.
[-] Recuento: 1 usuario dice Me Gusta a maquilon por este post:
  • GVM (08-01-2018)
Responder
#6
[Imagen: f22LZNAl.jpg?1]

ya que estamos en los tiles.... un mod que tenia pendiente...

gracias grx por tanto...y a todos los de espdroids, esp-desarrolladores y tales... ya van varios años de trasteo y ahora ya cocinando y con mods y todo... super contento.

un saludo
[Imagen: D0YqJ3J.gif]
[-] Recuento: 4 usuarios dicen Me Gusta a necrosauron por este post:
  • Peugeot73 (12-11-2018), fivanbe (12-11-2018), GVM (12-11-2018), Grouxho (12-11-2018)
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)