【第三回】PickUpDagashi

# この記事は
私がAndroid Dagashiから一つだけ記事をピックアップして読み、理解し、そして私のような初心者のAndroiderもしくはモバイルアプリ開発者が読むと仮定して、「誰でも理解できること」を目的として内容をまとめます！

今回は第三回です！

よろしくお願いします！！

# 今週のピックアップ記事
今週は、2022-03-20の記事の中からピックアップして読むことにします。

そして今回のピックアップ記事は。。。
[Android 13 Developer Preview 2](https://android-developers.googleblog.com/2022/03/second-preview-android-13.html)

:dog: わたしが知らなかったので念のために説明しておきますと、googleさんはAndroidの新しい機能などを開発者向けに説明する時に`Developer preview`みたいな感じで言うみたいです。

:dog: 以下から今回のAndroid　13　Developer Previewで説明されている内容を和訳・要約・解説していきますが、個人的にここは必要ないなと思った部分などは割愛させていただきますのでご了承ください。

# Android 13 Developer Preview 2

本日のリリースは、先週、12L feature drop が Android Open Source Project (AOSP) に移行し、2億5000万台以上の大画面 Android デバイスをより活用できるようになったことを受けて行われたものでもあります。それでは、本日のAndroid 13のDeveloper Preview 2の新機能に飛び込んでみましょう。

:cat: 用語の解説
ちょっと見慣れない用語が多いかと思いますので軽く説明
- 12L ... Android 12 for 大画面デバイス(タブレットなど)
- feature drop...新機能のこと(Googleさんは新機能のことをfeature dropと言うみたい..)
- AOSP...その名の通り`Android Open Source Project`の事で、Androidはオープンソースで管理されてるのでその事を指している


## プライバシーとユーザーの信頼
Android13では、プライバシー関連のアップデートがいくつかありますので、それの紹介です。

### 通知許可
push通知のランタイムパーミッション(アプリ実行時のパーミッションリクエストのこと)が追加されました。
ランタイムパーミッションとは、具体的には例えばアプリが内部ストレージやカメラ、位置情報などにアクセスしたい時に、「アクセスしていいですか？」と言う内容のダイアログが表示されるのを皆さんも一度は見た経験があると思いますが、それです。

それのpush通知のバージョンがAndroid13で追加された...と言うことだと思います。

例えば、これまではtwitterでいいねが押された時など、何の設定もしていない場合だとデフォルトで「いいねがきましたよ〜」とpush通知してきてくれました。これをウゼェと思った場合twitterの設定を開いて通知をOFFにする...と言うムーブをしていたかと思います。しかしAndroid 13では、「このアプリがあなたにpush通知送りますけどいいですか」と最初に通知の設定に関して聞いてきてくれると言うことです。push通知に関するパーミッションをリクエストしてきてくれるわけです。

おそらくこれはiOSと挙動を揃えようとしているのだと思います。

### パーミッションのダウングレード
例えば、昔はAndroid idなどはパーミッションをリクエストしてユーザーが承諾した場合は取得できました。

しかし、それから徐々にパーミッションやプライバシーに関して規制が厳しくなってきており、現在はパーミッションをリクエストすることさえもできません。したがって、昔に開発されたアプリで、当時ユーザーが承諾していたパーミッションが今やもう規制されている！という現象も起こりうるのです。そのような場合に、[revokeOwnPermissionsOnKill](https://developer.android.com/reference/android/content/Context.html#revokeOwnPermissionsOnKill(java.util.Collection%3Cjava.lang.String%3E))というAPIがAndroid 13で追加されました。これを使用することで、おそらくですが、昔に提供されていた機密性の高いパーミッションや現在使用していないパーミッションなどを消してくれるのだと思います。たぶん。

### コンテキスト登録されたレシーバの安全なエクスポート
これは[Broadcast](https://qiita.com/QiitaD/items/6003173ef80fbba3ac03)の話です。

例えば、アプリに登録した際に本人確認のためのSMSが届いて、その番号をアプリ　内で入力して認証するムーブは皆さんも一度は経験したことがあると思います。これは実は自動入力が可能なんです。

ブロードキャストレシーバというものをアプリ側で用意しておくことで、SMS側がブロードキャストを飛ばしてくれます。

これによって本人確認の番号をアプリ側で受け取ることができるのです。

もう少し具体的に説明すると、`Broadcast`は自身のアプリ外からのイベントなどの通知を受けたい場合に使うもので、 「こういうイベントがあったら、この情報をこのブロードキャストレシーバに向けて送ってね」という設定を`android manifest`に記述しておきます。

ただこのブロードキャスト、従来までの場合だとブロードキャストレシーバがワンチャン全然関係ないデータをキャッチしちゃう...みたいな危険性もあったところ、Android 13では`RECEIVER_EXPORTED`または `RECEIVER_NOT_EXPORTED`というフラグを追加し、そのような危険性からアプリを守ることが可能になったよ...みたいな内容やと思います。多分。間違ってたらすみません。


## 開発者の生産性
Android 13では、より洗練された体験とより良いパフォーマンスをユーザーに提供できるよう、より多くのツールを提供することに取り組んでいます。本日のリリースに含まれるアップデートのいくつかをご紹介します。

:cat: 今回は言語系のアプデ多かったすね。

### 日本語のテキストラッピングの改善
TextViewsは、文字単位ではなく、文節やフレーズ単位でテキストを囲むことができるようになり、より洗練された読みやすい日本語アプリケーションを実現しました。TextViewsで`android:lineBreakWordStyle="phrase"`を使用すると、この折り返しを利用することができます。 

つまり、日本語で文章を書いた時に変なところで改行されたりすることがなくなったよ〜ってことです。

### 非ラテン文字の行の高さの改善
Android 13では、各言語に適合した行の高さを使用することにより、非ラテン文字（タミル語、ビルマ語、テルグ語、チベット語など）の表示が改善されています。新しい線の高さは、クリッピングを防止し、文字の位置を改善します。

これは、画像を見た方が分かりやすいかもしれません。
![スクリーンショット 2022-03-27 1.10.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/906559/2dbdab3a-c47e-ccee-81a2-95f98dcdecbd.png)

Android 13ではいい感じに高さが調節されて、文字の見切れがなくなっていますね。

### テキスト変換API
これは、今まで日本語とか中国語は予測変換が若干遅かったっぽいのですが、そこが改善されたよという内容です！

### カラーベクターフォント
これは、絵文字をより鮮明に早く画面に表示できるようになったよってことです！

### Bluetooth LE オーディオ
Low Energy (LE) Audioは、Bluetooth Classicに代わる次世代のワイヤレスオーディオで、新しいユースケースや接続トポロジーを可能にするために作られました。これにより、ユーザーは自分のオーディオを友人や家族と共有したり放送したり、情報、娯楽、アクセシビリティのために公共放送を受信することができるようになります。バッテリーの寿命を犠牲にすることなく高忠実度のオーディオを受信し、Bluetooth Classicでは不可能だった異なるユースケースをシームレスに切り替えられるように設計されています。Android 13ではLE Audioのビルトインサポートが追加されるため、開発者は互換性のあるデバイスで新機能を無料で手に入れることができるはずです。

これは、多分めちゃ省エネなBluetooth(Bluetooth LE)がAndroid 13でサポートされるようになたよってことです！

:cat: Bluetooth LEの存在すら知らんかった...

### MIDI 2.0
Android 13は、MIDI 2.0ハードウェアをUSBで接続できるなど、新しいMIDI 2.0規格に対応しています。この更新された規格は、コントローラーの解像度の向上、非西洋的なイントネーションのより良いサポート、ノート単位のコントローラーを使用したより表現力豊かな演奏などの機能を提供します。

これは、なんか音楽系のアレをアレするのに必要なMIDI 1.0という規格のアップデート版であるMIDI 2.0に、Android 13は対応するよっていうことですね多分。

:cat: MIDI1.0すら知らんかった...


## Android 13を使い始める
お持ちのデバイスにAndroid 13を追加して新機能をつかってみたい場合は[Android Flash Tool](https://flash.android.com/welcome?continue=%2Fpreview%2Fdp1)を使ってアップデートする必要があるそうです！知らなかった！！

# 最後に
Android 12のキャッチアップすらできてないのにAndroid 13のキャッチアップをしてしまった。

間違っている部分があればご指摘お願いします！！！:bow: :pray: