【Android Pie】Auto-rotate (自動回転) OFF のときの挙動

「Auto-rotate (自動回転)」 機能は、ON にしてますか?

ONにすると画面を自動回転してくれてます。

画面を縦長で見てるときに、

端末を横向きにすると、自動で回転してくれます。

しかし、寝転んでスマホ画面を見る場合、視線の方向と直角に向いてしまいます。

私たちを見てくれているのではなく、地球に合わせて自動回転していたのです。

また、意図しない回転を始めることが多く、回転終了までにも時間がかかるので、私は、OFF にして縦に固定していました。

しかし、たまに横長の画面で見たくなる場合があります。

そんなときは、以下の手順です。

1. 通知バーから Auto-rotate を ON にする。
2. 端末を横に向ける。
3. 画面が自動回転して横長になる。
4. だが、横長画面にならないアプリもある。
5. Auto-rotate を OFF にする。
6. だが、今度は横長画面で固定されてる。

面倒ですよね。

これを寝転がった状態でやろうとするとかなり辛いものがあります。

このことを解消してくれる機能が、Android Pie にあります。

ナビゲーションバーを Pieスタイルに変更したら試してみましょう。

【Android Pie】ナビゲーションバー の ホームボタン を ピル型 にする方法

端末が回転されたとき、表示しているアプリが回転可能なものであれば、ナビゲーションバーの右側に、「回転しますか?」的に数秒間だけボタンを表示して提案してくれます。


回転するならタップ、しないなら無視で画面はそのままです。

端末を回転させたとき、回転の提案ボタンが表示されるのは、以下の条件が必要なようです。

- アプリが回転可能 (orientation の指定なし)
- 端末設定の Auto-rotate 機能が OFF

まとめ?

「Auto-rotate(自動回転)機能」をONにする場面はどんなとき?

Android 9 Pie 使ってみた
【Android Pie】ナビゲーションバー の ホームボタン を ピル型 にする方法
【Android Pie】Google Digital Wellbeing を使う
【Android Pie】Auto-rotate (自動回転) OFF のときの挙動
【Android Pie】使いやすくなった音量設定
【Android Pie】スクリーンショット取得→編集 は「電源ボタン長押し」から
【Android Pie】「通知」設定のシンプルな考え方
👉【公式 2018-05-07】Android Pie のバージョンシェア がやっと 10%超えている件


【Android Pie】Google Digital Wellbeing を使う

Android Pie にあげたら、入れてみましょう。

Android 9 Pie 使ってみた

今はまだベータプレビュー版の Digital Wellbeing。

テスターとしての利用です。

煩わしい通知を制限したり、それとマナーモードの関係をアプリごとに設定することができるようになります。

- アプリ別の起動回数・通知回数・時間の把握
- アプリ別の通知設定
- アプリ別のマナーモード設定
- アプリ別利用時間タイマーの設定

「通知がこない」、「通知がブロックできない」など自分の利用イメージに合わせて設定できずに逆に混乱しません?

通知が表示されない とかどうせブロックの設定だろ! → 原因「フィルター」

本当に「幸福度」が上がるのは、触ってみて何回かの仕様確認の後になると思います。

Android 9 Pie 使ってみた
【Android Pie】ナビゲーションバー の ホームボタン を ピル型 にする方法
【Android Pie】Google Digital Wellbeing を使う
【Android Pie】Auto-rotate (自動回転) OFF のときの挙動
【Android Pie】使いやすくなった音量設定
【Android Pie】スクリーンショット取得→編集 は「電源ボタン長押し」から


Android 9 Pie 使ってみた

アナウンスしてる。

Android 9 Pie

Android 9 Pie: Powered by AI for a smarter, simpler experience that adapts to you

OTA来てたので入れる。

「アップデートのインストール」に30分くらいかかりました。

うん!

映えない隠れた機能が多いようなので少し使ってみてからまた書きます。

Android 9 Pie 使ってみた
【Android Pie】ナビゲーションバー の ホームボタン を ピル型 にする方法
【Android Pie】Google Digital Wellbeing を使う
【Android Pie】Auto-rotate (自動回転) OFF のときの挙動
【Android Pie】使いやすくなった音量設定
【Android Pie】スクリーンショット取得→編集 は「電源ボタン長押し」から


Google Map がしれっと球体になってる件

ラップトップ上ブラウザから引いて見ると。

いつのまにw


Android Architecture Components: Room の Migration で IllegalStateException

データを移行せずに捨ててしまうのなら、以下でいいのですが。


Room.databaseBuilder(context, RepoDatabase.class, DB_NAME)
    .fallbackToDestructiveMigration()
    .build();

きっと捨てることができませんよね。

テーブル定義を変更しながら、データを移行しますよね。


Room.databaseBuilder(context, RepoDatabase.class, DB_NAME)
    .addMigrations(FROM_1_TO_2)
    .build();

static final Migration FROM_1_TO_2 = new Migration(1, 2) {
    @Override
    public void migrate(final SupportSQLiteDatabase database) {
        database.execSQL("ALTER TABLE Repo
                         ADD COLUMN createdAt TEXT");
        }
    };

database.execSQL()でSQLをベタに実行しながらデータを別テーブルにRENAME後、CREATE→INSERT→DROP というかんじでスキーマを変更していますが。

すると、こんなのに遭遇します。

java.lang.IllegalStateException: Room cannot verify the data integrity. Looks like you’ve changed schema but forgot to update the version number. You can simply fix this by increasing the version number.

データベースのバージョンナンバーは上げることは、まあ上げるとして、それでもインデクスなどうまく意図通りに移行できてない場合があります。

データモデルにアノテーションで記述した「Room が利用しようとしているスキーマ」と、Migration部分にベタ記述した「SQLiteのスキーマ」が合致しないといけません。

また、最近のAndroidでは、.dbファイルが、OS上で取り回しづらく、実態を把握しづらかったりします。

Roomが認識しようとしているテーブルスキーマは以下で書き出すことができます。


android {
    javaCompileOptions {
        annotationProcessorOptions {
            arguments = ["room.schemaLocation":
                         "$projectDir/schemas".toString()]
            }
        }
    }
}


"tableName": "Repo",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER NOT NULL, `name` TEXT, `url` TEXT, PRIMARY KEY(`id`))"

モデルクラスに記述したアノテーションのRoomが認識している状態(expected)をSQLで書き出してくれます。

これと、MIGRATION部分のベタSQL(found)を比較すると、意味が分かってきます。

複数フィールドに対してのUNIQUE なインデクスなど、公式ドキュメントとは違う内部的絶賛更新中な処理な部分など、書き出してみると先に進むことができます。