Acceder

Ver la Versión Completa : [ TUTORIAL ] Alterna entre el desbloqueo de Samsung y el de AOSP


phenomarc
20/05/13, 22:45:04
Hoy vamos a crear un toggle que nos permitirá cambiar nuestra forma de desbloqueo y elegir entre la de Samsung y la AOSP.

Trabajaremos con 2 archivos:
- android.polic.jar
- SecSettings

Empezamos por el android.policy.jar:
1) Descompilamos el android.policy.jar y buscamos el archivo LockPatternKeyguardView.smali, que se encuentra en smali/com/android/internal/policy/impl/.
2) Buscamos el método .method createLockScreen()Landroid/view/View y lo editamos para que quede así, añadiendo las lineas rojas:
.method createLockScreen()Landroid/view/View;
.registers 7

.prologue
.line 1319
iget-object v0, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;

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

move-result-object v0

const-string v1, "aosp_lock"

const/4 v2, 0x0

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

move-result v0

if-nez v0, :cond_mirko

new-instance v0, Lcom/android/internal/policy/impl/sec/CircleLockScreen;

iget-object v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;

iget-object v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mConfiguration:Landroid/content/res/Configuration;

iget-object v3, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;

iget-object v4, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mUpdateMonitor:Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;

iget-object v5, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mKeyguardScreenCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;

invoke-direct/range {v0 .. v5}, Lcom/android/internal/policy/impl/sec/CircleLockScreen;-><init>(Landroid/content/Context;Landroid/content/res/Configuration;Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;Lcom/android/internal/policy/impl/KeyguardScreenCallback;)V

goto :goto_ddd

.line 1325
:cond_mirko
new-instance v0, Lcom/android/internal/policy/impl/LockScreen;

iget-object v1, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mContext:Landroid/content/Context;

iget-object v2, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mConfiguration:Landroid/content/res/Configuration;

iget-object v3, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;

iget-object v4, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mUpdateMonitor:Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;

iget-object v5, p0, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->mKeyguardScreenCallback:Lcom/android/internal/policy/impl/KeyguardScreenCallback;

invoke-direct/range {v0 .. v5}, Lcom/android/internal/policy/impl/LockScreen;-><init>(Landroid/content/Context;Landroid/content/res/Configuration;Lcom/android/internal/widget/LockPatternUtils;Lcom/android/internal/policy/impl/KeyguardUpdateMonitor;Lcom/android/internal/policy/impl/KeyguardScreenCallback;)V

.local v0, lockView:Landroid/view/View;
:goto_ddd
invoke-direct {p0, v0}, Lcom/android/internal/policy/impl/LockPatternKeyguardView;->initializeTransportControlView(Landroid/view/View;)V

Ya hemos acabado con la edición del android.policy.jar. Recompilamos y lo pasamos.

Seguimos con el SecSettings. Ahora lo que haremos será añadir el toggle en los ajustes de lockscreen.

3) Descompilamos el SecSettings.apk y buscamos el smali LockscreenSettings.smali, localizado en smali/com/android/settings.
4) Una vez abierto el archivo, vamos a hacer varias sustituciones, o quitar y añadir, como lo querais ver. Añadimos lo rojo, borramos lo lila:

.field private mAospLock:Landroid/preference/CheckBoxPreference;

.field private mCameraShortCut:Landroid/preference/SwitchPreferenceScreen;

.field private mClock:Landroid/preference/CheckBoxPreference;

.field private mDualclock:Landroid/preference/SwitchPreferenceScreen;

.field private mHelpText:Landroid/preference/CheckBoxPreference;

.field private mInformationTicker:Landroid/preference/SwitchPreferenceScreen;

.field private mInkEffect:Landroid/preference/PreferenceScreen;

.field mInkEffectSummary:[I

.field private mLockPatternUtils:Lcom/android/internal/widget/LockPatternUtils;

.field private mLockScreenShortcut:Landroid/preference/SwitchPreferenceScreen;

.field private mMotionDialog:Landroid/app/AlertDialog;

.field private mRippleEffect:Landroid/preference/CheckBoxPreference;

.field private mSayCommand:Landroid/preference/CheckBoxPreference;

A partir de aquí, sugiero buscar todos los dos "mSayCommand" y sustituirlos por "mAospLock", y todos los "wake_up_lock_screen" sustituirlos por "aosp_lock" (solo hay 2).
Ya hemos acabado con el smali.
5) Abrimos el lockscreen_Settings.xml, localizado en res/xml y añadimos lo siguiente donde queramos que se nos vea:
<CheckBoxPreference android:title="@string/your_string" android:key="say_your_wakeup" android:summary="@string/your_summary_string" />
Si quereis podeis cambiar "your_string" y "your_summary_string" por el texto que querais, siempre y cuando concuerde con lo añadido en el paso 6.
Además, buscamos y borramos lo siguiente:
<CheckBoxPreference android:title="@string/samsung_unlock_option_say_your_wakeup_command_to_u nlock_screen" android:key="say_your_wakeup" android:summary="@string/wakeup_in_lockscreen_summary" />
6)Abrimos el archivo strings.xml, en res/values y añadimos al final lo siguiente:

<string name="your_string">Título</string>
<string name="your_summary_string">Descripción</string>
En "Título" y "Descripción" poneed lo que querais.
Hemos acabado. Compilamos el SecSettings y los pasamos a nuestro S2.

A disfrutar!


Agradecimientos
Mirko ddd

phenomarc
20/05/13, 22:51:02
reservado para algo relacionado