What's new in Android (2023) のセッションメモ

What's new in Android のセッションを見たメモです。

https://io.google/2023/program/035d04f9-bc75-479e-8865-493151c867c4/

https://youtu.be/qXhjN66O7Bk

## Privacy and Security 
- Android 14 Updates
    - 画像や動画などのメディアへの部分的なパーミッションの許可ができるように
        - 選択して許可されたものが MediaStore 経由で取得できる
        - https://developer.android.com/about/versions/14/changes/partial-photo-video-access
    - 位置情報などのパーミッションダイアログにデータをどう使われるのか確認できるようになる
        - https://developer.android.com/about/versions/14/changes/data-safety
    - 全画面の通知を使う場合に `USE_FULL_SCREEN_INTENT` のパーミッション許可が必要になる
    - アプリ間の意図しない連携を保護するために制限される
        - SDK 34 からは BroadcastReceiver を登録するときに `RECEIVER_EXPORTED` or `RECEIVER_NOT_EXPORTED` の指定が必要になる
    - Android 14 以降は targetSdk 23 未満のアプリはインストールできなくなる
    - Android 14 以降で Health Connect は Play システムアップデートに組み込まれて、プライバシー制御などを行えるようになる
        - [What's new in Health on Android](https://io.google/2023/program/61b9233d-3dc2-4447-a618-4bcdf6f230d4/) のセッション参照
- Passkey対応
    - Jetpack Credential Manager で Passkey と従来のサインインの方法が統合される
    - [Reduce reliance on passwords in Android apps with passkey support](https://io.google/2023/program/177fc76c-6c2c-4840-a423-e609faa51d55/) のセッション参照
- Privacy Sandbox は Developer Preview と Beta Program でテストできる
    - [10 things to know about the Privacy Sandbox on Android](https://io.google/2023/program/fc59358a-e959-42e8-8043-93775cfd7191/) のセッション参照

## Form Factors
- アプリの画面回転が制限されている場合、Foldable や Tablet でアプリ互換モードになってレターボックス化される
    - https://developer.android.com/guide/practices/enhanced-letterboxing
- Foldable やレターボックス時のカメラセンサーの向きとアスペクト比が画面と一致しないのでケアする必要がある
    - [Building high quality Android camera experiences](https://io.google/2023/program/b276c79d-2b68-4e87-93a6-44df1a24be38/) のセッション参照
- 複数 Activity のアプリの場合は Acitivity embedding で大きい画面対応ができる
    - [Activity embedding: large screen layout for multi-activity apps](https://io.google/2023/program/d341105f-adb7-4379-b783-4ef2ba624dde/) のセッション参照
- Wear OS
    - Gallary の公開や Watch Face の新しい形式
    - [How to build high quality experiences on Wear OS](https://io.google/2023/program/ac09dc41-5d45-4ccd-ad87-2503e22c4e6c/) のセッション参照
- Jetpack Glance が Beta になった

## Jetpack Compose
- Compose for TV が alpha に
    - `TvLazyRow` などはフォーカスのサポートなど TV 固有のサポートが入っている
    - [What's new in TV and intro to Compose](https://io.google/2023/program/24ef7b93-7823-412e-99b7-b97a615f3334/) のセッション参照
- Modifier の Node 移行でパフォーマンスが向上した
- Text の API も Outline やハイフンのサポートなど改善している
- Pager や Flow が Jetpack に追加
- Glide や Google Map のライブラリでも Compose サポートが追加されている
- Material 3 の Compose で BottomSheet や Date/Time Picker や Searchbar や　Tooltips の新しいコンポーネントが追加された
- Android Studio G で Live Edit がデフォルトで有効になったりアニメーションプレビューのサポート
- Android Studio H でデバッガーでの Compose の State 表示やマルチプレビューのテンプレート、Visual Lint、プレビューでの Accessibility Test Framework 対応、プレビューを用いたスクリーンショットテスト

## Foreground Service
- Android 14 以降でフォアグラウンドサービスのタイプ指定 `android:foregroundServiceType` とタイプ固有の権限が必要
    - タイプというのはMedia playback、Navigation、Audio recording のようなもの
    - https://developer.android.com/about/versions/14/changes/fgs-types-required
- フォアグラウンドサービスとは別にデータ転送用の API が追加される
    - https://developer.android.com/about/versions/14/changes/user-initiated-data-transfers

        
## Machine Learning
- ML Kit on Android
    - Face Mesh と Document Scanner の新しいAPI の追加
    - Android 14 での既存の API の更新
- Custom ML Stack
    - 独自の ML のモデルを取り込める
- [Build smarter Android apps with on-device machine learning](https://io.google/2023/program/08a1d1c0-0a16-4460-8993-d3affe3c41b8/) のセッション参照

## ART 14
- Android 12 まで Java 17 がサポート
- 新しい GC 

## High quarity UX
- Predictive Back
    - Android 14 では Activity 間の Predictive back が追加される
- モダンなアプリ作成を支援するための Design Hub
    - https://developer.android.com/design/ui
- Android 14 での HDR 10bit 画像のサポート
- Jetpack Media 3 の stable では HDR 動画の編集などの API が含まれる

## Personalization
- Android Studio G 以降で per-app langage preference 用の設定ファイルが自動生成される
- Android 14 
    - 温度の単位と週の最初の曜日を選択できるようになっている
        - https://developer.android.com/about/versions/14/features#regional-preferences
    - 一部の性別によって単語が変わる言語のために性別修飾リソース用の API (`strings/fr-neuter`)が追加される
        - https://developer.android.com/about/versions/14/features/grammatical-inflection#inflection
    - Share シートの更新
        - カスタムアクションのサポート
        - 新しいプレビュー UI
        - より関連性の高い連絡先の提案
        - https://developer.android.com/about/versions/14/features#sharesheet-improvements
    - Non-linear font scaling で 200% までのフォント拡大
        - https://developer.android.com/about/versions/14/features#non-linear-font-scaling
- A11y の新しい API
    - 機密データの表示を制限する API
    - ウィンドウの最初の表示にフォーカスが要求できる API

## Tools
- Android Studio G
    - 新しい Device Explorer
    - 新しい UI
    - kts & Version catalog サポート
    - etc..
- Android Studio H
    - Studio Bot
    - Lite Mode
    - Compose Visual Lint & A11y Test
    - Baseline Profile のサポート改善
    - App Quarity Insights に Android Vitals の追加
    - etc..
- AGP 8.1 以降で Baseline Profiles の Dex Reordering でさらにパフォーマンス改善できる
- [What's new in Android development tools](https://io.google/2023/program/d94e89c5-1efa-4ab2-a13a-d61c5eb4e49c/) のセッション参照

## Architecture
- Kotlin Multiplatform Jetpack Libraries
    - Annotation 1.7.0-alpha02~
    - Collection 1.3.0-alpha04~
    - DataStore 1.1.0-alpha03~
    - https://developer.android.com/kotlin/multiplatform
- Paging にはテストの API が追加されてドキュメントも更新されている
    - https://developer.android.com/topic/libraries/architecture/paging/test