Android 端末でアプリを強制的に横画面表示にする方法
#life #tech
はじめに
Android タブレットを常に横画面表示で使っているが、たまに縦画面表示しかないアプリがあり不便なのを解消する方法。
以下は Android 8.0 をベースとしている HUAWEI MediaPad M5 lite での話。
方法
基本的には Rotation Control というアプリを入れればよい。
「回転制御開始」で有効にして通知ドロワーを出し、「保護モード」と「横センサーモード」を有効にする。
そう変更するものでもないので、Android の設定から Rotation Control の通知を切れば通知ドロワーがすっきりする。
モードを変更したいときは、通知の設定を戻して「回転制御開始」を無効にしてから有効にすればよい。
Rotation Control は Quick Settings というアプリでクイック設定パネルから起動できるようにしておくと便利。
パネルから起動して「回転制御開始」をいじるだけで横画面固定と自動回転の切り替えができる。
余談だが、Quick Settings には Screen Filter などを別で入れなくても輝度を調整できるタイルがあり、これも便利。
「他のアプリ上で Rotation Control を表示中」というシステムからの通知は、TidyPanel というアプリで消せる。
TidyPanel は2つの通知しか無効にできないため、これと Quick Settings 自体の通知は Android の設定から切っておくのが賢い。
技術的な話
Rotation Control と似た 画面回転制御 というアプリの説明によると、他のアプリよりも上のレイヤーに透明で大きさがない画面を配置し、この画面の向きを変えることで端末の画面の向きを固定しているらしい。
TidyPanel については、これと似た Hide "running in the background" Notification というアプリのコードが公開されている。
https://github.com/iboalali/sysnotifsnooze
おまけ
似た話として、「開発者オプション」から「アクティビティをサイズ変更可能にする」を有効にすると、マルチウィンドウに非対応なアプリもマルチウィンドウで使えるようになるらしい。
またこのようなアプリによる挙動の調整は、HUAWEI の端末では独自の省電力機能で安定して動作しない場合がある。
この省電力機能は、自己責任ではあるが adb を使って com.huawei.powergenie を無効にすることで切られるらしい。
macOS か Linux であれば、ドライバを入れなくてもおおよそ以下の手順で無効にできる。
自分は Nova Launcher を使っているので、自動で起動するデフォルトのランチャーも無効にしている。
https://unko-now.blogspot.com/2018/05/huawei.html
https://www.reddit.com/r/Huawei/comments/aohuzz/disc_uninstalling_the_huawei_home_launcher/
https://developer.android.com/studio/command-line/adb?hl=ja
https://developer.android.com/studio/releases/platform-tools?hl=ja
https://developer.android.com/studio/run/win-usb?hl=ja
https://developer.android.com/studio/command-line/adb?hl=ja#pm
code:sh
$ sw_vers
ProductName: macOS
ProductVersion: 11.2.3
BuildVersion: 20D91
$ curl -sSLo sdk.zip https://dl.google.com/android/repository/platform-tools-latest-darwin.zip
$ unzip -qd . sdk.zip
$ ./platform-tools/adb version
Android Debug Bridge version 1.0.41
Version 31.0.1-7187441
Installed as /Users/ahu/workspace/./platform-tools/adb
# ここで端末の「開発者向けオプション」から「USBデバッグ」を有効にし、USB接続する
$ ./platform-tools/adb tcpip 5555
# ここで端末を操作し、USBデバッグを許可する
$ ./platform-tools/adb devices
List of devices attached
XXXXXXXXXXXXXXXX device
# 省電力機能とデフォルトのランチャーを無効にし、接続を閉じる
$ ./platform-tools/adb shell pm disable-user --user 0 com.huawei.powergenie
$ ./platform-tools/adb shell pm disable-user --user 0 com.huawei.android.launcher
$ ./platform-tools/adb kill-server