Rakuten Miniのナビゲーションバーを非表示にする(Android 9.0)

Tips

久しぶりの更新!

¥1で入手後ずっと放置してた小型スマホ「Rakuten Mini」を、音楽プレーヤー等の用途に使おうとしましたが、唯でさえ小さな3.6インチのディスプレイが画面上部のステータスバー&画面下部のナビゲーションバーに占領され、かなり窮屈になっていました。

特に大きな面積を占めるナビゲーションバーを非表示にする方法を調べると専用のアプリが数種類あったものの、あんまり得体の知れないアプリを入れたくないなぁと思い、更に調べるとPCで設定する方法を発見。それがUnityでお馴染みの「Android Studio」を使うADB (Android Debug Bridge)で、Macでも可能だったので早速トライしてみました。以下、スクショ無しの只の備忘録です。

まずはMac側の準備

  1. Android Studioをダウンロードしてインストール
  2. 起動後、Tools→SDK Managerで現れるウィンドウで「Android SDK Location」を確認
    (デフォルトでは /Users/ユーザー名/Library/Android/sdk となっています)
  3. SDK Platformsのリスト内にある、対応するAndroidのバージョンをダウンロード
    (Rakuten Miniの場合はAndroid 9.0 (Pie)です)

次にAndroidスマホ側の準備

  1. 設定アプリの「端末情報」内にある「ビルド番号」を何度もタップして「デベロッパーモード」を有効化
  2. 「システム」内の詳細設定に出現した「開発者向けオプション」最上段のトグルをONにする
  3. 「開発者向けオプション」内の「USBデバッグ」トグルをONにする
  4. USBケーブルでMacと接続すると確認表示が出るので許可する

ターミナルでコマンド入力

  1. Macで「ターミナル」アプリを開く(アプリケーション→ユーティリティ内)
    ※試しに adb と入力すると zsh: command not found: adb と表示されるはず
  2. 先ほど確認したファイルパスを元に export PATH=$PATH:/Users/ユーザー名/Library/Android/sdk/platform-tools と入力
    ※ここで adb と入力すると、100行以上ずらずらと出てきます
    ※adb devices と入力すると、スマホを認識できていれば List of devices attached の後に 数桁の英数字 device と表示されます
  3. 非表示したい内容に合わせてコマンドを入力

コマンドの種類

adb shell settings get global policy_control 現在の設定を確認する
adb shell settings delete global policy_control 設定を削除し通常の表示に戻す
adb shell settings put global policy_control immersive.full=* 全画面表示にする
adb shell settings put global policy_control immersive.status=* ステータスバーのみ非表示
adb shell settings put global policy_control immersive.navigation=* ナビゲーションバーのみ非表示

確認コマンドを入力すると未設定または削除後なら null と表示されます
削除コマンドを入力すると Deleted 1 rows と表示されます
末尾の「=*」は全てのアプリが対象になります
末尾の「*」の代わりにアプリのパッケージ名(太字の部分)を入れると、そのアプリだけが対象になります

特定のアプリだけ対象にする
adb shell settings put global policy_control immersive.navigation=com.google.android.youtube

特定のアプリだけ対象外にする
adb shell settings put global policy_control immersive.navigation=*,-com.google.android.youtube

パッケージ名を調べる方法
adb shell pm list packages と入力すると、スマホ内の全アプリのパッケージ名が表示されます

zsh: no matches found: と表示され設定が反映されない場合

コマンドに含まれる「*」の文字が原因で発生するエラーですが setopt nonomatch と入力後は正常に実行されます
※よく分かりませんが、グロブ(glob)のワイルドカードというヤツらしいです

Rakuten Miniに最適な設定?

全てのアプリを全画面表示にすると、Rakuten Miniの場合はホーム画面(ランチャー)の画面下部にナビゲーションバー分の空白が残ってしまったり、各アプリにおいても予めステータスバー分の余白を確保したレイアウトになっていたりしたので「ステータスバーは常時表示、ナビゲーションバーはホーム画面のみ表示にする」形にしました。

その設定用コマンドはこちら
adb shell settings put global policy_control immersive.navigation=*,-com.rakuten.launcher3


ナビゲーションバーを非表示にすると、ちゃんとアプリ側が認識してアプリの表示エリアが広がり快適になりました!非表示にしたものは、画面上端/下端から中央へスワイプすると表示されます。

アプリと違いMacやPCを使う方法だといつでも表示方法を切り替えられないのがやや難点ですが、セキュリティー的には安心です。

なお、上記の作業後は「開発者向けオプション」をOFFにしておいた方が良さそうです。

Tips