Quantcast
Channel: xda-developers - Galaxy S II Android Development
Viewing all articles
Browse latest Browse all 397

[TUT][LSJ] How to add quad targates in AOSP lockscreen

$
0
0
Hello Friends this is mine tutorial for quad targates in aosp lockscreen You can direct me here But when according to that tut when you decompile framework.jar you wont find any widget folder .
So my tut has very little change but fully wokring for XXLSJ rom :)



FOR WORKING quad targates you must have an AOSP lockscreen this tutorial is for adding over all quad targates to AOSP lockscreen
i m providing only smali part

Now Please start following the instuction with that tag
.

Framework-res.apk Editing

[SMALI]
  • Decompile your framework-res.apk
  • Put ic_lockscreen_phone_activated.png, ic_lockscreen_phone_normal.png, ic_lockscreen_sms_activated.png, ic_lockscreen_sms_normal.png in /res/drawable-hdpi/

[SMALI]
  • Put ic_lockscreen_phone.xml, ic_lockscreen_sms.xml in /res/drawable/

[SMALI]
  • Open /res/values/arrays.xml


[SMALI]/
  • Replace the whole array <array name="lockscreen_targets_with_camera"> .. </array> with:
    Code:

        <array name="lockscreen_targets_with_camera">
            <item>@drawable/ic_lockscreen_unlock</item>
            <item>@drawable/ic_lockscreen_sms</item>
            <item>@drawable/ic_action_assist_generic</item>
            <item>@drawable/ic_lockscreen_phone</item>
            <item>@drawable/ic_lockscreen_camera</item>
            <item>@null</item>
            <item>@null</item>
            <item>@null</item>
        </array>

  • Replace the whole array <array name="lockscreen_target_descriptions_with_camera"> .. </array> with:
    Code:

        <array name="lockscreen_target_descriptions_with_camera">
            <item>@string/description_target_unlock</item>
            <item>@string/description_target_sms</item>
            <item>@string/description_target_search</item>
            <item>@string/description_target_phone</item>
            <item>@string/description_target_camera</item>
            <item>@null</item>
            <item>@null</item>
            <item>@null</item>
        </array>


[SMALI]
  • Open /res/values-land/arrays.xml


[SMALI]/
  • Replace the whole array <array name="lockscreen_targets_with_camera"> .. </array> with:
    Code:

        <array name="lockscreen_targets_with_camera">
            <item>@null</item>
            <item>@null</item>
            <item>@drawable/ic_lockscreen_unlock</item>
            <item>@drawable/ic_lockscreen_sms</item>
            <item>@drawable/ic_action_assist_generic</item>
            <item>@drawable/ic_lockscreen_phone</item>
            <item>@drawable/ic_lockscreen_camera</item>
            <item>@null</item>
        </array>

  • Replace the whole array <array name="lockscreen_target_descriptions_with_camera"> .. </array> with:
    Code:

        <array name="lockscreen_target_descriptions_with_camera">
            <item>@null</item>
            <item>@null</item>
            <item>@string/description_target_unlock</item>
            <item>@string/description_target_sms</item>
            <item>@string/description_target_search</item>
            <item>@string/description_target_phone</item>
            <item>@string/description_target_camera</item>
            <item>@null</item>
        </array>


[SMALI]
  • Open /res/values/strings.xml


[SMALI]/
  • Add the following entries:
    Code:

        <string name="description_target_sms">Sms</string>
        <string name="description_target_phone">Phone</string>

  • Recompile your framework



framework editing:

[SMALI]
  • Disassemble your framework2.jar
  • Edit /com/android/internal/widget/multiwaveview/GlowPadView.smali and replace the whole methods ".method private getDirectionDescription(I)Ljava/lang/String;" and ".method private getTargetDescription(I)Ljava/lang/String;" with the following methods:
    Code:

    .method private getDirectionDescription(I)Ljava/lang/String;
        .locals 4
        .parameter "index"

        .prologue
        .line 1119
        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mDirectionDescriptions:Ljava/util/ArrayList;

        if-eqz v2, :cond_0

        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mDirectionDescriptions:Ljava/util/ArrayList;

        invoke-virtual {v2}, Ljava/util/ArrayList;->isEmpty()Z

        move-result v2

        if-eqz v2, :cond_1

        .line 1120
        :cond_0
        iget v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mDirectionDescriptionsResourceId:I

        invoke-direct {p0, v2}, Lcom/android/internal/widget/multiwaveview/GlowPadView;->loadDescriptions(I)Ljava/util/ArrayList;

        move-result-object v2

        iput-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mDirectionDescriptions:Ljava/util/ArrayList;

        .line 1121
        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDrawables:Ljava/util/ArrayList;

        invoke-virtual {v2}, Ljava/util/ArrayList;->size()I

        move-result v2

        iget-object v3, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mDirectionDescriptions:Ljava/util/ArrayList;

        invoke-virtual {v3}, Ljava/util/ArrayList;->size()I

        move-result v3

        if-eq v2, v3, :cond_1

        .line 1122
        const-string v2, "GlowPadView"

        const-string v3, "The number of target drawables must be equal to the number of direction descriptions."

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

        .line 1124
        const/4 v0, 0x0

        .line 1133
        :goto_0
        return-object v0

        .line 1130
        :cond_1
        :try_start_0
        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mDirectionDescriptions:Ljava/util/ArrayList;

        invoke-virtual {v2, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

        move-result-object v0

        check-cast v0, Ljava/lang/String;
        :try_end_0
        .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

        .line 1131
        .local v0, directionZ:Ljava/lang/String;
        goto :goto_0

        .line 1132
        .end local v0          #directionZ:Ljava/lang/String;
        :catch_0
        move-exception v1

        .line 1133
        .local v1, e:Ljava/lang/Exception;
        const-string v0, ""

        goto :goto_0
    .end method

    Code:

    .method private getTargetDescription(I)Ljava/lang/String;
        .locals 4
        .parameter "index"

        .prologue
        .line 1099
        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDescriptions:Ljava/util/ArrayList;

        if-eqz v2, :cond_0

        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDescriptions:Ljava/util/ArrayList;

        invoke-virtual {v2}, Ljava/util/ArrayList;->isEmpty()Z

        move-result v2

        if-eqz v2, :cond_1

        .line 1100
        :cond_0
        iget v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDescriptionsResourceId:I

        invoke-direct {p0, v2}, Lcom/android/internal/widget/multiwaveview/GlowPadView;->loadDescriptions(I)Ljava/util/ArrayList;

        move-result-object v2

        iput-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDescriptions:Ljava/util/ArrayList;

        .line 1101
        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDrawables:Ljava/util/ArrayList;

        invoke-virtual {v2}, Ljava/util/ArrayList;->size()I

        move-result v2

        iget-object v3, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDescriptions:Ljava/util/ArrayList;

        invoke-virtual {v3}, Ljava/util/ArrayList;->size()I

        move-result v3

        if-eq v2, v3, :cond_1

        .line 1102
        const-string v2, "GlowPadView"

        const-string v3, "The number of target drawables must be equal to the number of target descriptions."

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

        .line 1104
        const/4 v1, 0x0

        .line 1114
        :goto_0
        return-object v1

        .line 1109
        :cond_1
        const-string v1, ""

        .line 1111
        .local v1, targetZ:Ljava/lang/String;
        :try_start_0
        iget-object v2, p0, Lcom/android/internal/widget/multiwaveview/GlowPadView;->mTargetDescriptions:Ljava/util/ArrayList;

        invoke-virtual {v2, p1}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;

        move-result-object v2

        move-object v0, v2

        check-cast v0, Ljava/lang/String;

        move-object v1, v0
        :try_end_0
        .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0

        goto :goto_0

        .line 1112
        :catch_0
        move-exception v2

        goto :goto_0
    .end method

  • Recompile your framework2.jar


Now we're done with the framework2.jar now we need to modify that last file android.policy.jar

[SMALI]
  • Disassemble your android.policy.jar
  • Edit /com/android/internal/policy/impl/LockScreen.smali and add the following methods:
    Code:

    .method static synthetic access$1400(Lcom/android/internal/policy/impl/LockScreen;)Landroid/content/Context;
        .locals 1
        .parameter "x0"

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

        return-object v0
    .end method

    .method static synthetic access$1500(Lcom/android/internal/policy/impl/LockScreen;)Landroid/content/Context;
        .locals 1
        .parameter "x0"

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

        return-object v0
    .end method

  • Edit /com/android/internal/policy/impl/LockScreen$GlowPadViewMethods.smali.
  • Replace the whole method onTrigger with:

    Code:

    .method public onTrigger(Landroid/view/View;I)V
        .locals 7
        .parameter "v"
        .parameter "target"

        .prologue
        const/high16 v6, 0x1000

        .line 313
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->mGlowPadView:Lcom/android/internal/widget/multiwaveview/GlowPadView;

        invoke-virtual {v4, p2}, Lcom/android/internal/widget/multiwaveview/GlowPadView;->getResourceIdForTarget(I)I

        move-result v3

        .line 321
        .local v3, resId:I
        sparse-switch v3, :sswitch_data_0

        .line 367
        :goto_0
        return-void

        .line 323
        :sswitch_0
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$1200(Lcom/android/internal/policy/impl/LockScreen;)Landroid/content/Context;

        move-result-object v4

        invoke-static {v4}, Landroid/app/SearchManager;->getAssistIntent(Landroid/content/Context;)Landroid/content/Intent;

        move-result-object v0

        .line 324
        .local v0, assistIntent:Landroid/content/Intent;
        if-eqz v0, :cond_0

        .line 325
        invoke-direct {p0, v0}, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->launchActivity(Landroid/content/Intent;)V

        .line 329
        :goto_1
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$400(Lcom/android/internal/policy/impl/LockScreen;)Lcom/android/internal/policy/impl/KeyguardScreenCallback;

        move-result-object v4

        invoke-interface {v4}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->pokeWakelock()V

        goto :goto_0

        .line 327
        :cond_0
        const-string v4, "LockScreen"

        const-string v5, "Failed to get intent for assist activity"

        invoke-static {v4, v5}, Landroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I

        goto :goto_1

        .line 333
        .end local v0          #assistIntent:Landroid/content/Intent;
        :sswitch_1
        new-instance v4, Landroid/content/Intent;

        const-string v5, "android.media.action.STILL_IMAGE_CAMERA"

        invoke-direct {v4, v5}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

        invoke-direct {p0, v4}, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->launchActivity(Landroid/content/Intent;)V

        .line 334
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$400(Lcom/android/internal/policy/impl/LockScreen;)Lcom/android/internal/policy/impl/KeyguardScreenCallback;

        move-result-object v4

        invoke-interface {v4}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->pokeWakelock()V

        goto :goto_0

        .line 339
        :sswitch_2
        new-instance v2, Landroid/content/Intent;

        const-string v4, "android.intent.action.MAIN"

        invoke-direct {v2, v4}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

        .line 340
        .local v2, phoneIntent:Landroid/content/Intent;
        const-string v4, "com.android.contacts"

        const-string v5, "com.android.contacts.activities.DialtactsActivity"

        invoke-virtual {v2, v4, v5}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

        .line 341
        invoke-virtual {v2, v6}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;

        .line 342
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$1300(Lcom/android/internal/policy/impl/LockScreen;)Landroid/content/Context;

        move-result-object v4

        invoke-virtual {v4, v2}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V

        .line 343
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$400(Lcom/android/internal/policy/impl/LockScreen;)Lcom/android/internal/policy/impl/KeyguardScreenCallback;

        move-result-object v4

        invoke-interface {v4}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->goToUnlockScreen()V

        goto :goto_0

        .line 348
        .end local v2          #phoneIntent:Landroid/content/Intent;
        :sswitch_3
        new-instance v1, Landroid/content/Intent;

        const-string v4, "android.intent.action.MAIN"

        invoke-direct {v1, v4}, Landroid/content/Intent;-><init>(Ljava/lang/String;)V

        .line 349
        .local v1, mmsIntent:Landroid/content/Intent;
        const-string v4, "com.android.mms"

        const-string v5, "com.android.mms.ui.ConversationList"

        invoke-virtual {v1, v4, v5}, Landroid/content/Intent;->setClassName(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;

        .line 350
        invoke-virtual {v1, v6}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;

        .line 351
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$1400(Lcom/android/internal/policy/impl/LockScreen;)Landroid/content/Context;

        move-result-object v4

        invoke-virtual {v4, v1}, Landroid/content/Context;->startActivity(Landroid/content/Intent;)V

        .line 352
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$400(Lcom/android/internal/policy/impl/LockScreen;)Lcom/android/internal/policy/impl/KeyguardScreenCallback;

        move-result-object v4

        invoke-interface {v4}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->goToUnlockScreen()V

        goto :goto_0

        .line 357
        .end local v1          #mmsIntent:Landroid/content/Intent;
        :sswitch_4
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$500(Lcom/android/internal/policy/impl/LockScreen;)V

        .line 358
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$400(Lcom/android/internal/policy/impl/LockScreen;)Lcom/android/internal/policy/impl/KeyguardScreenCallback;

        move-result-object v4

        invoke-interface {v4}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->pokeWakelock()V

        goto/16 :goto_0

        .line 364
        :sswitch_5
        iget-object v4, p0, Lcom/android/internal/policy/impl/LockScreen$GlowPadViewMethods;->this$0:Lcom/android/internal/policy/impl/LockScreen;

        invoke-static {v4}, Lcom/android/internal/policy/impl/LockScreen;->access$400(Lcom/android/internal/policy/impl/LockScreen;)Lcom/android/internal/policy/impl/KeyguardScreenCallback;

        move-result-object v4

        invoke-interface {v4}, Lcom/android/internal/policy/impl/KeyguardScreenCallback;->goToUnlockScreen()V

        goto/16 :goto_0

        .line 321
        :sswitch_data_0
        .sparse-switch
            0x010802cd -> :sswitch_0
            0x01080328 -> :sswitch_1
            0x01080344 -> :sswitch_4
            0x0108034f -> :sswitch_5
            0x01080352 -> :sswitch_5
            0x01080a4d -> :sswitch_2
            0x01080a50 -> :sswitch_3
        .end sparse-switch
    .end method

  • Recompile and you're good to go!

If You like this tutorial please prees THANKS :)

Credits
atl4ntis for base tutorial

Attached Files
File Type: zip files_2.zip - [Click for QR Code] (40.0 KB)

Viewing all articles
Browse latest Browse all 397

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>