一気に眺める 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 パズルゲーム 


【スマホ】日本がもし10人の村だったら

日本には1億2千万人の人がいますが
もしそれを10人の村に縮めると
どうなるのでしょう

10人のうち
7人が スマホ をもっています

5人が iPhone です
2人が Android です

4人が iOS12 です
1人が Android9 です
1人が Android8 です

縮め過ぎたかな

👉 世界がもし100人の村だったら - Wikipedia 
👉 世界がもし100人の村だったら 
👉 世界主要国のスマートフォン普及状況をさぐる(2019年時点最新版)(不破雷蔵) - 個人 - Yahoo!ニュース 
👉 Mobile & Tablet iOS Version Market Share Japan | StatCounter Global Stats 
👉 Mobile & Tablet Android Version Market Share Japan | StatCounter Global Stats 


【Dagger】@Provides vs @Binds

久々に Dagger を使うとかなりの不自由感。

細かく咀嚼しないと全体は理解できない感じなので、まずはこのタイトルから。

少し、細かくシリーズ化してみますが。

👉 Dagger 2 @Binds vs @Provides - Elye - Medium 

👉 Why is @Binds different from @Provides? - Frequently Asked Questions 

Android が登場してから10年程度ですが、経緯というか、伝統というか、歴史というか。

そういうの嫌いだけど、そういうのを理解しようとしないと、その対象に対しての初心者は辛い時期になってるのだろうと思う。

Toolbar / ActionBar もそうでしょう?

シンプルにググるだけでは良いコードには辿り着けません、

この、Dagger2 2019-08-15現在 もそれと同じ雰囲気なのでしょう。

以下、上記リンクより引用。

@Binds methods must have only one parameter whose type is assignable to the return type

So only a single parameter, and the type return is typically the interface of the given parameter object.

Having said that, the other tips is consider using static function for @Provides which would help also reduce some generated codes.

@Bindsメソッドには、戻り値の型に割り当て可能な型のパラメーターが1つだけ必要です

そのため、1つのパラメーターのみが返され、型の戻り値は通常、指定されたパラメーターオブジェクトのインターフェイスです。

そうは言っても、他のヒントは、生成されるコードを減らすのに役立つ「@Provides」の「静的」関数の使用を検討することです。

@Provides, the most common construct for configuring a binding, serves three functions:
1. Declare which type (possibly qualified) is being provided — this is the return type
2. Declare dependencies — these are the method parameters
3. Provide an implementation for exactly how the instance is provided — this is the method body

While the first two functions are unique and critical to every @Provides method, the third can often be tedious and repetitive. So, whenever there is a @Provides whose implementation is simple and common enough to be inferred by Dagger, it makes sense to just declare that as a method without a body (an abstract method) and have Dagger apply the behavior.

But, if we were to just say that abstract @Provides methods should be treated as we do for @Binds methods, the specification of @Provides would basically be two specifications with a bunch of conditional logic. For example, a @Provides method can have any number of parameters of any type, but a @Binds method can only have a single parameter whose type is assignable to the return type. Separating those specifications makes it easier to reason about correctness because the annotation determines the constraints.

バインディングを構成するための最も一般的な構成要素である@Providesは、3つの機能を提供します。
 1.どのタイプ(修飾されている可能性がある)が提供されているかを宣言します—これは戻りタイプです
 2.依存関係を宣言します—これらはメソッドのパラメーターです
 3.インスタンスが提供される方法を正確に実装します—これはメソッド本体です

最初の2つの関数は一意であり、「すべての@Provides」メソッドにとって重要ですが、3番目の関数は多くの場合、退屈で反復的です。そのため、実装がDaggerによって推論されるほど単純で一般的な@Providesが存在する場合はいつでも、それを本体のないメソッド(抽象メソッド)として宣言し、Daggerに動作を適用させることが理にかなっています。

しかし、abstract @Provides methodsを@Binds methodsのように扱うべきであると言うだけなら、@Providesの仕様は基本的に条件付きロジックの束を持つ2つの仕様になります。たとえば、@Provides methodは、任意の型の任意の数のパラメーターを持つことができますが、a @Binds methodは、型が戻り型に割り当て可能な単一のパラメーターのみを持つことができます。これらの仕様を分離すると、注釈によって制約が決定されるため、正確性についての推論が容易になります。

まとめ

kotlin でいうとこの

1. 基本 @Binds を使う。
2. Application 起動の object の場合(static な singleton メソッドの場合)は @Provides を使う。

という理解でいいのか。

👉 ATM - Dagger Tutorial