一気に眺める Android 10 Q の新機能 50

👉 Hands-on 50+ new changes & features in Android 10 [Video] - 9to5Google 

何がどんだけ更新したか分かりにくいので。

こまごまとした機能の変更や強化が多い感想。

ジェスチャーナビゲーション

画面下に表示される3つ(2つ)の画面の操作ボタンが1つで操作できるようになります。

「設定」
「システム」
「操作」
「システムナビゲーション」
「ジェスチャーナビゲーション」




👉 Android-Q beta5 ジェスチャーナビゲーション【動画有り】 

「戻る」の感度

画面下左右角からの「戻る」操作の感度を設定できます。

「設定」
「システム」
「操作」
「システムナビゲーション」
「ジェスチャーナビゲーション」(歯車ボタン)

ダークテーマ

システムレベルのダークモードが実装されています。

「設定」
「ディスプレイ」
「ダークテーマ」

ダークテーマの自動回転ボタン

自動表示される画面回転ボタンにもダークテーマが適用されます。

ダークテーマのブート時アニメーション

電源ONや再起動時のブート画面にもダークテーマが適用されます。

カスタムテーマ

いくつかの項目をお好みにカスタマイズできます。

「設定」
「システム」
「開発者向けオプション」
「テーマ設定」

共有メニュー

共有時に表示される共有先の選択肢が分かりやすくなり、大幅にスピードアップされています。

ファイル選択

各種アプリからファイル選択を行う場合の画面が改善されています。

通知設定の管理

通知を下に広げたところからまとめて管理できるようになりました。

(通知引き出す)
左下「管理」

権限マネージャー

権限の設定画面がまとめられすべてここから確認設定できるようになりました。

「設定」
「プライバシー」
「権限マネージャー」



フォーカスモード

煩わしいアプリをまとめてON/OFFできるようになります。

「設定」
「Digital Wellbeing」
「フォーカスモード」



👉 フォーカスモード (Focus mode) ~ Android 10 

バブル通知(ふきだし)

メッセージなど一部の通知受信時に表示される丸い動くアイコンです。

Facebookメッセンジャーなどでお馴染みのやつです。

「設定」
「システム」
「開発者オプション」
「ふきだし」

端末稼働時間

電源ONにしてからの通算稼働時間です。

「設定」
「デバイス情報」
「稼働時間」

緊急通報アイコン

一番したに分かりやすく表示されています。

「電源ボタン」長押し

Wi-Fiかんたん接続設定

接続中のWi-Fi接続情報をQRコードで表示したり共有することができます。

「設定」
「ネットワークとインターネット」
「Wi-Fi」
(歯車マーク)
「ネットワークの詳細」
「共有」

オーディオバランス

左右のオーディオバランスを調整できます。

「設定」
「ユーザー補助」
「オーディオバランス」

クイックパネルからセンサーOFF

電池の消耗が激しい各種センサーをまとめてOFFにできます。

「設定」
「開発者向けオプション」
「クイック設定開発者用タイル」
「センサーOFF」をON

アプリ情報画面

各アプリ情報を表示する画面も分かりやすくなりました。

(アプリのアイコン長押し)
(i)マーク

ロック画面の 「Now Playing」 機能

周辺で流れている曲を検知してロック画面に曲名などを表示します。

「設定」
「この曲なに?」 または 「ロック」で検索

Wi-Fiとバッテリーアイコンの更新

Wi-Fi とバッテリーの増減をアイコンの変化で表示します。

プロフィール画像設定

ユーザーごとに画像を設定できます。

「クイックタイルのプロフィールアイコン」
「詳細設定」
(編集するユーザー名)
(画像マーク)

Bluetooth端末選択画面

色分けされて分かりやすくなりました。

(クイックタイル BTボタン長押し)

緊急時情報画面

各項目を分かりやすく編集や表示できるようになりました。

「設定」
「デバイス情報」
「緊急時情報」

使用量画面

各アプリなど使用量をグラフなどで分かりやすく表示しています。

「設定」
「Wellbeing」

ロック画面のエンターボタン

パスコード入力時など明確に区別できるようになりました。


サイレント通知の表示

「サイレント」に設定された通知も通知バー内に区別して表示されます。

通知長押しからの詳細設定

受信した通知を長押しすることでその詳細設定画面を表示させることができます。

夜景モード切り替えをカメラ画面に

カメラの撮影時画面で夜景モードも選択できます。

Android Beam の削除

ファイルやデータを共有できるこの機能は削除されました。今後はNFCによるファイル共有などになるのでしょうか。

Files と Google 壁紙のマテリアルテーマ化

機種によってOSに内蔵されたりされなかったりする2つの必須機能(アプリ)のデザインがマテリアルテーマに対応しています。

👉 Files by Google: スマートフォンの容量を確保 - Google Play のアプリ 
👉 壁紙 - Google Play のアプリ 

共有シートでの画像プレビュー

画像を共有送信する前にプレビューにて確認できます。

ポップアップ音量設定

ボリューム変更時にアイコンからポップアップ表示で個別にボリューム操作ができます。


ライブ壁紙のプレビュー

適用前にプレビューでライブ壁紙の変化を確認することができます。

「設定」
「ディスプレイ」
「壁紙」
(ライブ壁紙選択)
(右上のプレビュー)

設定サジェスチョン

おすすめされる設定項目のサジェスチョンが設定画面上部にボタンで表示されます。

「設定」

まとめ

よく分からん機能などはスルーした。

新しい目玉機能の追加はなく、既存機能の微妙な整理や変更ばかり。

昔のようなドキドキ感はない。

操作は混乱するばかりだ。

ちなみに、イースターエッグ(隠し機能)は以下。動画あり。

👉 Nonograms (お絵かきロジック/ ピクロス) – Android 10 Easter Egg パズルゲーム 


画像読み込みライブラリ「COIL」

Glide や Picasso のような画像読み込みライブラリです。

COroutine
Image
Loader

の略だそうです。

以下の特徴を持っており、ナウい感じです。

- 拡張関数、ラムダなどKotlinの持つ機能を活用。
- コルーチンを利用。
- ディスクキャッシュとストリームバッファリング機能。
- androidx.lifecycle に対応。
- 軽量。
- R8対応。ルール不要。

👉 Introducing Coil: Kotlin-first image loading on Android 

記述例です。


// To load an image into an ImageView, use the load extension function.
imageView.load("https://www.example.com/image.jpg")

// Coil supports urls, uris, resources, drawables, bitmaps, files, and more.
imageView.load(R.drawable.image)

imageView.load(File("/path/to/image.jpg"))

imageView.load(Uri.parse("content://com.android.externalstorage/image.jpg"))

// Requests can be configured with an optional trailing lambda.
imageView.load("https://www.example.com/image.jpg") {
    crossfade(true)
    placeholder(R.drawable.image)
    transformations(CircleCropTransformation())
}

// Custom targets can be created using lambda syntax (onStart and onError are optional).
Coil.load(context, "https://www.example.com/image.jpg") {
    target { drawable ->
        // Handle the successful result.
    }
}

// To get an image imperatively, use the get suspend function.
val drawable = Coil.get("https://www.example.com/image.jpg")

👉 GitHub - coil-kt/coil: Image loading for Android backed by Kotlin Coroutines. 

パフォーマンスを Glide や Picasso と比較した記事がありますが、まあまあのようです。

Coil is a new library, so its performance may increase in the next versions. We are comparing it with mature libraries, so let’s see how it evolves.

Coil は新しいライブラリであるため、次のバージョンでパフォーマンスが向上する可能性があります。成熟したライブラリと比較しているので、どのように進化するか見ておきましょう。

👉 Coil vs Picasso vs Glide: Get Ready… Go! - ProAndroidDev 

ちなみに、必要環境は以下。

- AndroidX
- Min SDK 14+
- Compile SDK: 28+
- Java 8+

今後に期待できますかね。


@Binds - Dagger2

インターフェースを実装したクラスがあり、それをインターフェース経由でバインドしたいとき、通常以下のようにしてました。


@Module
object BookPresenterModule {
  @Provides @JvmStatic
  fun provideBookPresenter(bookPresenter: BookPresenterImpl): BookPresenter = bookPresenter
}

これは @Inject 付きコンストラクタと一緒に使われるモジュールの一部です。これは、以下のように記述するべきです。


@Module
abstract class BookPresenterModule {
  @Binds abstract fun bindBookPresenter(bookPresenter: BookPresenterImpl): BookPresenter
}

これまでどおり「インターフェースにその実装をバインドしたいとき」に使うことができます。

コード生成がされず、どこからもコールされないのに、きちんと連携情報として利用されるのが良いところです。

Dagger 2.4 で登場したにもかかわらず、なぜか公式ユーザーガイドでは説明されていません。

👉 Release Dagger 2.4 · google/dagger 

以下、公演動画などから学ぶことができます。