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)] TS32GUSDHC4E トランセンド・ジャパン 売り上げランキング : 4 Amazonで詳しく見る by G-Tools |