Sense4.1のホーム画面の横回転を可能にしてみる

HTCJ (ISW13HT) のアップデートが公開された記念。

OTA を適用すると Sense4.1 にアップデートされるわけですが、このホーム画面、画面回転 ON 状態で横にしても横に回転してくれません。そこで xda で公開されている横回転に対応した apk を参考に、 J に移植してみました。


当然のことながら Unlocked な端末が対象です。以下わかる人だけどうぞ。

方法

Deodex された /system/app/Rosie.apk を apktool でデコンパイルして、以下を変更するだけです。


smali\com\htc\launcher\settings\SettingUtil.smali

.method public static isSupportOrientationChange()Z
    .locals 1

    .prologue
    .line 355
    sget-boolean v0, Lcom/htc/launcher/settings/SettingUtil;->s_bIsSupportOrientationChange:Z

    if-nez v0, :cond_0

    invoke-static {}, Lcom/htc/launcher/LauncherApplication;->isScreenLarge()Z

    move-result v0

    if-nez v0, :cond_0

    invoke-static {}, Lcom/htc/launcher/LauncherApplication;->isScreenXLarge()Z

    move-result v0

    if-eqz v0, :cond_1

    :cond_0
    const/4 v0, 0x1

    :goto_0
    return v0

    :cond_1
    const/4 v0, 0x0

    goto :goto_0
.end method


これを

.method public static isSupportOrientationChange()Z
    .locals 1

    .prologue
    .line 355
    const/4 v0, 0x1

    return v0
.end method


このように太字部分を削除してやります。あとはコンパイルして実機に転送、キャッシュ類の削除を忘れずに。


すると、横回転するようになります。

今のところ使っていて不具合はないですが、何らかの理由でロックされている機能なので、不具合があるのかもしれません。

次は…

メニューを押しても何もでないのをなおせたらなぁと思います。

メニューが出るところまでは出来ているのですが、まだ各項目を押しても何もイベントが起こらない状態です。
できました。

おまけ。メニューキーを押してメニューを表示させる対応

現状、メニューキーを押しても何も起こりませんが、やっぱりメニューを押したらメニューが出てきて欲しいので、これが出てくるように改変します。

Sense4.0 時代は出てたのでここからの移植です。

改変するのは以下のファイル。


smali\com\htc\launcher\settings\Launcher.smali


ここにメソッドを 2 つ追加します。

追加1

以下のメソッドを探して…

.method protected onCreate(Landroid/os/Bundle;)V

(略)

.end method


この下に以下のメニューポップアップメソッドを追記。

.method public onCreateOptionsMenu(Landroid/view/Menu;)Z
    .locals 5
    .parameter "menu"

    .prologue
    const/4 v4, 0x4

    const/4 v3, 0x2

    const/4 v1, 0x1

    const/4 v0, 0x0

    invoke-virtual {p0}, Lcom/htc/launcher/Launcher;->isWorkspaceLocked()Z

    move-result v2

    if-eqz v2, :cond_0

    :goto_0
    return v0

    :cond_0
    invoke-super {p0, p1}, Landroid/app/Activity;->onCreateOptionsMenu(Landroid/view/Menu;)Z

    const v2, 0x7f0c003a

    invoke-interface {p1, v1, v3, v0, v2}, Landroid/view/Menu;->add(IIII)Landroid/view/MenuItem;

    const v2, 0x20402db

    invoke-interface {p1, v3, v4, v0, v2}, Landroid/view/Menu;->add(IIII)Landroid/view/MenuItem;

    const/4 v2, 0x6

    const v3, 0x204029e

    invoke-interface {p1, v0, v2, v0, v3}, Landroid/view/Menu;->add(IIII)Landroid/view/MenuItem;

    const/16 v2, 0xa

    const v3, 0x7f0c003b

    invoke-interface {p1, v4, v2, v0, v3}, Landroid/view/Menu;->add(IIII)Landroid/view/MenuItem;

    const/4 v2, 0x3

    const/4 v3, 0x7

    const v4, 0x2040257

    invoke-interface {p1, v2, v3, v0, v4}, Landroid/view/Menu;->add(IIII)Landroid/view/MenuItem;

    iget-object v0, p0, Lcom/htc/launcher/Launcher;->m_Workspace:Lcom/htc/launcher/Workspace;

    invoke-virtual {v0}, Lcom/htc/launcher/Workspace;->exitWidgetResizeMode()V

    move v0, v1

    goto :goto_0
.end method
追加2

以下のメソッドも探して…

.method protected onNewIntent(Landroid/content/Intent;)V

(略)

.end method


以下のオプションを押した時のメソッドを追加します。

.method public onOptionsItemSelected(Landroid/view/MenuItem;)Z
    .locals 5
    .parameter "item"

    .prologue
    const/high16 v3, 0x1020

    const/4 v4, 0x0

    const/4 v1, 0x1

    invoke-interface {p1}, Landroid/view/MenuItem;->getItemId()I

    move-result v2

    packed-switch v2, :pswitch_data_0

    invoke-super {p0, p1}, Landroid/app/Activity;->onOptionsItemSelected(Landroid/view/MenuItem;)Z

    move-result v1

    :goto_0
    return v1

    :pswitch_0
    invoke-virtual {p0, v1}, Lcom/htc/launcher/Launcher;->showAllApps(Z)V

    goto :goto_0

    :pswitch_1
    iget-object v2, p0, Lcom/htc/launcher/Launcher;->m_DragController:Lcom/htc/launcher/DragController;

    invoke-virtual {v2}, Lcom/htc/launcher/DragController;->enterEditMode()V

    goto :goto_0

    :pswitch_2
    invoke-direct {p0}, Lcom/htc/launcher/Launcher;->captureHomePagePreview()V

    new-instance v2, Landroid/content/Intent;

    const-string v3, "com.htc.personalize.ACTION_HOMEPERSONALIZE"

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

    invoke-virtual {p0, v2, v4}, Lcom/htc/launcher/Launcher;->startActivitySafely(Landroid/content/Intent;Ljava/lang/Object;)Z

    goto :goto_0

    :pswitch_3
    invoke-direct {p0}, Lcom/htc/launcher/Launcher;->addItems()V

    goto :goto_0

    :pswitch_4
    invoke-direct {p0}, Lcom/htc/launcher/Launcher;->manageApps()V

    goto :goto_0

    :pswitch_5
    invoke-direct {p0}, Lcom/htc/launcher/Launcher;->captureHomePagePreview()V

    invoke-direct {p0}, Lcom/htc/launcher/Launcher;->startWallpaper()V

    goto :goto_0

    :pswitch_6
    invoke-virtual {p0}, Lcom/htc/launcher/Launcher;->onSearchRequested()Z

    goto :goto_0

    :pswitch_7
    invoke-direct {p0}, Lcom/htc/launcher/Launcher;->showNotifications()V

    goto :goto_0

    :pswitch_8
    invoke-static {p0}, Lcom/htc/launcher/guestmode/GuestModeManager;->isGuestMode(Landroid/content/Context;)Z

    move-result v2

    if-eqz v2, :cond_0

    new-instance v0, Landroid/content/Intent;

    const-string v2, "android.intent.action.GUEST_MODE_SETTING"

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

    .local v0, settings:Landroid/content/Intent;
    invoke-virtual {v0, v3}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;

    invoke-virtual {p0, v0, v4}, Lcom/htc/launcher/Launcher;->startActivitySafely(Landroid/content/Intent;Ljava/lang/Object;)Z

    goto :goto_0

    .end local v0           #settings:Landroid/content/Intent;
    :cond_0
    new-instance v0, Landroid/content/Intent;

    const-string v2, "android.settings.SETTINGS"

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

    .restart local v0       #settings:Landroid/content/Intent;
    invoke-virtual {v0, v3}, Landroid/content/Intent;->setFlags(I)Landroid/content/Intent;

    invoke-virtual {p0, v0, v4}, Lcom/htc/launcher/Launcher;->startActivitySafely(Landroid/content/Intent;Ljava/lang/Object;)Z

    goto :goto_0

    nop

    :pswitch_data_0
    .packed-switch 0x2
        :pswitch_3
        :pswitch_4
        :pswitch_5
        :pswitch_6
        :pswitch_7
        :pswitch_8
        :pswitch_0
        :pswitch_1
        :pswitch_2
    .end packed-switch
.end method


あとはやっぱりコンパイルして実機に転送してやるだけです。


メニューが表示されています。押せばちゃんと各項目に飛びます。

あとがき

スイッチとかは完全にコピペですので、不具合がないとも限りません。不具合を発見したら教えていただけると助かります。

Rosie_2.05.970.3_Menu_Landscape.zip

※ファイルへの直接リンク・ファイルの無断転載はおやめ下さい。


アップデートが来て簡単なカスタムが出来て、ちょっと嬉しいですw


Transcend microSDHCカード 32GB Class4 永久保証 [フラストレーションフリーパッケージ (FFP)] TS32GUSDHC4ETranscend microSDHCカード 32GB Class4 永久保証 [フラストレーションフリーパッケージ (FFP)] TS32GUSDHC4E

トランセンド・ジャパン
売り上げランキング : 4

Amazonで詳しく見る
by G-Tools