9系までで8割超えまであと少し。

👉 【Android12】「At a Glance」が壊れてる件
👉 Android12 が来たので新機能を使ってみました。
Android12について何かつぶやいています。
I really like the lock screen / always-on display though. Big clock good. Plus it has the same weight font for hours and minutes this time around.
— Jake Wharton (@JakeWharton) November 2, 2021
Android 12にアップグレードしたばかり。システムUIの使いやすさと実用性の急激な低下傾向が続いています。通知ペインは、コンテンツを表示するためのエリアですが、実際のコンテンツの2倍のネガティブスペースがあります。システムUIのピークは、時計が動く前のAndroid8でした。
でも、ロック画面や常時表示はとても気に入っています。大きな時計がいい。さらに、今回は時間と分のフォントが同じ太さになっています。

スマホを利用したあと、
電源ボタンを押したり、
一定時間経過後に、
画面が変化していきます。
スリープ画面 (画面消灯)
↓ 再度画面をオン
ロック画面
スリープ画面 (時間と情報を常に表示時 ※設定は後に記述)

ロック画面

利用画面から スリープ画面(画面消灯) へ遷移するには、
一定時間経過させるか、電源ボタンで消灯。
設定
↓
ディスプレイ
↓
画面消灯

この スリープ画面(画面消灯)時にも、
ロック画面のように、時計などが表示できる。
設定
↓
ディスプレイ
↓
ロック画面
↓
時間と情報を常に表示

さらに、ロック画面 へ遷移するには、
さらに、そこから、
一定時間経過させるか、電源ボタンでロック。
設定
↓
セキュリティ
↓
画面ロック 歯車アイコン
↓
画面消灯後からロックまでの時間
電源ボタンですぐロックする

うん、確かに見やすいし、使える。
しかしこの、
スリープ常時時計表示は、
暗闇で、
「OK、グーグル 今何時?」 とか言わなくても良いのだが!
👉 Android12 が来たので新機能を使ってみました。 | #android ファショ通
👉 【Android12】「At a Glance」が壊れてる件
Pixel6 の記事とか動画とか見てましたが。
👉 Pixel Fall Launch
👉 【発表会まとめ】Google純正チップのPixel 6がいろいろすごかった!
このすごく便利そうな「リアルタイム翻訳入力」ての。
できたような、
できませんでしたっけ。
Pixel3 でもできませんでした?
別Googleアプリでしたっけ?
👉 音声文字変換&音検知通知 - Google Play のアプリ
👉 Google 翻訳 - Google Play のアプリ
細かく記事や動画を見てみると「リアルタイム翻訳入力」の詳細機能は、
- 変換前後言語自動判定
- 通信なし
- 音声から文字おこし
- リアルタイム翻訳
- 入力の反映
というかんじでしょうか。
Pixel3/5 で Android12 + Google Gboard でやってみました。
上記の2つの別アプリ「音声文字変換&音検知通知」「Google 翻訳」は不要なようです。
twitter入力時にキーボード上部の3ドットから、

「翻訳」をタップして、

表示される入力欄をタップ→マイクタップで日本語入力すると、twitter側に翻訳された英語が入力されます。

上の詳細項目は以下のようになりました。
△ 変換前後言語手動指定
△ 通信あり
○ 音声から文字おこし
○ リアルタイム翻訳
○ 入力の反映
ということで、
一応、
「リアルタイム翻訳入力」は
できるのでまあいいか。
ちなみに、現在、
レコーダーアプリは日本語に全く対応してません😭


👉 Android 12の新機能・変更点まとめ
👉 「Android 12」のリリース時期、新機能は?--これまでの情報まとめ - CNET Japan
オン・オフの状況など見た目がわかりやすくなりました。




スマホの背面をダブルタップすることでスクショなど動作を設定することができます。


設定画面で撮ってみました。
縦方向に全画面で撮れてます。





横になってる時の回転防止。

👉 設定「画面の自動回転」は OFF で良い。

マイクとカメラの盗撮・盗聴を防止 *
大きなメディアプレイヤー
Wi-Fiパスワードをニアバイシェアで共有
ピクチャ・イン・ピクチャの改善
新しい会話ウィジェットの追加
ホーム画面に新しいグリッドが追加
布団の中でも画面が眩しくない「明るさを下げる」新機能
(更新中...)
👉 【Android12】画面の一部だけを拡大する方法 | #android ファショ通
👉 java.lang.IllegalArgumentException: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. | #android ファショ通
kotlin coroutin flow のオペレータをネストするかチェインするかの話です。


👉 Kotlin flow: Nesting vs Chaining • Vasya Drobushkov
observeUser()
.flatMap { user ->
api.load(user.id)
.flatMapLatest { data -> api.send(user.id, data) }
}
.collect()
observeUser()
.flatMap { user ->
api.load(user.id)
}
.flatMap { data -> api.send(user.id, data) } // ! user is not accessible
.collect()
An important observation is that nesting unlike chaining creates scope. And one of the simplest things one can do with the scope is to share some data inside it.
重要なことは、チェインとは異なり、ネストによってスコープが作成されることです。そして、スコープで実行できる最も簡単なことの1つは、スコープ内のデータを共有することです。
observeUser()
.flatMapLatest { user ->
api.load(user.id)
.flatMapLatest { observeLocation() }
}
.collect()
observeUser()
.flatMapLatest { user ->
api.load(user.id)
}
.flatMapLatest { observeLocation() }
.collect()
Here we again used nesting, while we don’t need to pass any data to the observeLocation stream. Additionally, instead of flatMap we’ve used flatMapLatest (in RxJava it is called switchMap) - if the new value will be sent by upstream the downstream will be canceled and a new one created. This ensures that if the user was changed (e.g. account switched) we’ll trigger the server once again to determine whether we need to observe location.
observeLocation ストリームには何のデータも渡す必要はありません。RxJavaではswitchMapと呼ばれる flatMapLatest を使用しています。新しい値がアップストリームで送信されると、ダウンストリームはキャンセルされ、新しい値が作成されます。これにより、ユーザーが変更された場合(例えば、アカウントが変更された場合)、位置情報をobserveする必要があるかどうかを判断するために、もう一度サーバーを起動することができます。
because in the case with nesting we’ve defined the scope that has lifecycle attached to the observeUser stream: when the user is changed - everything inside flatMapLatest will be canceled. And in the case of chaining, we have observeLocation outside of user scope - so when the user changed, the location stream is not canceled.
ネスティングの場合は、observUserストリームにライフサイクルが付随するスコープを定義しているため、ユーザーが変更されると、flatMapLatest内のすべてがキャンセルされます。また、チェイニングの場合は、ユーザースコープの外側にobserveLocationを設定していますので、ユーザーが変更されてもlocationストリームはキャンセルされません。
flatMapLatest を使う場合は、入れ子のほうが意図に沿いやすいように思えるが、コード自体の見通しは悪い。
頭のどこかに「ネストかチェインか」は置いておくべきでしょう。