これまでのリリースと同様、Android 16 には、アプリに影響する可能性がある動作変更が含まれています。下記の動作変更は、Android 16 以上をターゲットとするアプリにのみ適用されます。アプリが Android 16 以上をターゲットとする場合は、必要に応じてアプリを変更し、下記の動作に適切に対応できるようにしてください。
アプリの targetSdkVersion
に関係なく、Android 16 で実行されるすべてのアプリに影響する動作変更のリストも必ずご確認ください。
ユーザー エクスペリエンスとシステム UI
Android 16 には、より一貫性があり直感的なユーザー エクスペリエンスを実現するための以下の変更が含まれています。
エッジ ツー エッジのオプトアウトの廃止
Android 15 enforced edge-to-edge for apps targeting Android 15 (API
level 35), but your app could opt-out by setting
R.attr#windowOptOutEdgeToEdgeEnforcement
to true
. For apps
targeting Android 16,
R.attr#windowOptOutEdgeToEdgeEnforcement
is deprecated and disabled, and your
app can't opt-out of going edge-to-edge.
For testing in Android 16 Beta 2, ensure your app supports edge-to-edge and
remove any use of R.attr#windowOptOutEdgeToEdgeEnforcement
. To support
edge-to-edge, see the Compose and Views guidance. Let
us know about concerns in our issue tracker on the feedback page.
予測型「戻る」に移行またはオプトアウトが必要
Android 16 以降をターゲットとし、Android 16 以降のデバイスで実行されるアプリの場合、予測型「戻る」システム アニメーション(ホームに戻る、タスク間、アクティビティ間)はデフォルトで有効になっています。また、onBackPressed
は呼び出されず、KeyEvent.KEYCODE_BACK
はディスパッチされなくなります。
アプリが「戻る」イベントをインターセプトしていて、予測型「戻る」にまだ移行していない場合は、サポートされている「戻る」ナビゲーション API を使用するようにアプリを更新するか、アプリの AndroidManifest.xml
ファイルの <application>
タグまたは <activity>
タグで android:enableOnBackInvokedCallback
属性を false
に設定して、一時的にオプトアウトします。
Elegant フォント API の非推奨と無効化
以 Android 15(API 级别 35)为目标平台的应用的 elegantTextHeight
TextView
属性默认设置为 true
,从而将紧凑字体替换为更易于阅读的字体。您可以通过将 elegantTextHeight
属性设置为 false
来替换此设置。
Android 16 弃用了 elegantTextHeight
属性,并且在您的应用以 Android 16 为目标平台后,系统会忽略该属性。这些 API 控制的“界面字体”即将停用,因此您应调整所有布局,以确保以阿拉伯语、老挝语、缅甸语、泰米尔语、古吉拉特语、卡纳达语、马拉雅拉姆语、奥里亚语、泰卢固语或泰语呈现一致且可持续的文字。

elegantTextHeight
属性设置为 false
而替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight
行为。
elegantTextHeight
属性设置为 false
来替换默认值的以 Android 15(API 级别 35)为目标平台的应用,elegantTextHeight
行为。コア機能
Android 16 には、Android システムのさまざまなコア機能を変更または拡張する次の変更が含まれています。
固定レートの勤務スケジュールの最適化
Prior to targeting Android 16, when scheduleAtFixedRate
missed a task execution due to being outside a valid
process lifecycle, all missed executions immediately
execute when the app returns to a valid lifecycle.
When targeting Android 16, at most one missed execution of
scheduleAtFixedRate
is immediately executed when the app
returns to a valid lifecycle. This behavior change is expected to improve app
performance. Test this behavior in your app to check if your app is impacted.
You can also test by using the app compatibility framework
and enabling the STPE_SKIP_MULTIPLE_MISSED_PERIODIC_TASKS
compat flag.
大画面とフォーム ファクタ
Android 16 では、大画面デバイスに表示されるアプリについて、次の変更が加えられています。
アダプティブ レイアウト
Android アプリは、さまざまなデバイス(スマートフォン、タブレット、折りたたみ式デバイス、デスクトップなど)と大画面のウィンドウ モード(分割画面やデスクトップ ウィンドウなど)で実行されるため、デベロッパーは、デバイスの向きに関係なく、あらゆる画面とウィンドウ サイズに適応する Android アプリを構築する必要があります。画面の向きやサイズ変更を制限するようなパラダイムは、今日のマルチデバイスの世界では制限が厳しすぎます。
画面の向き、サイズ変更、アスペクト比の制限を無視する
Android 16 をターゲットとするアプリの場合、Android 16 では、システムが向き、サイズ変更、アスペクト比の制限を管理する方法が変更されています。最小幅が 600dp 以上のディスプレイでは、この制限は適用されなくなります。また、アプリは、アスペクト比やユーザーが選択した画面の向きに関係なく、ディスプレイ ウィンドウ全体に表示されます。ピラーボックス表示は使用されません。
この変更により、新しい標準のプラットフォーム動作が導入されます。Android は、アプリがさまざまな画面の向き、表示サイズ、アスペクト比に適応することが期待されるモデルに移行しています。固定の画面の向きやサイズ変更の制限などの制約は、アプリの適応性を妨げるため、可能な限り優れたユーザー エクスペリエンスを提供するために、アプリを適応性のあるものにすることをおすすめします。
アプリの互換性フレームワークを使用して UNIVERSAL_RESIZABLE_BY_DEFAULT
互換性フラグを有効にすることで、この動作をテストすることもできます。
一般的な破壊的変更
向き、サイズ変更、アスペクト比の制限を無視すると、一部のデバイスでアプリの UI に影響する可能性があります。特に、縦向きでロックされた小さなレイアウト用に設計された要素に影響する可能性があります。たとえば、レイアウトの引き伸ばし、画面外のアニマーションやコンポーネントなどの問題が発生する可能性があります。アスペクト比や画面の向きについて想定すると、アプリの視覚的な問題が発生する可能性があります。これらの問題を回避し、アプリの適応型動作を改善する方法について詳細をご覧ください。
デバイスの回転を許可すると、アクティビティの再作成が増え、適切に保存されない場合、ユーザーの状態が失われる可能性があります。UI の状態を正しく保存する方法については、UI の状態を保存するをご覧ください。
実装の詳細
次のマニフェスト属性とランタイム API は、大画面デバイスで全画面モードとマルチウィンドウ モードの両方で無視されます。
screenOrientation
resizableActivity
minAspectRatio
maxAspectRatio
setRequestedOrientation()
getRequestedOrientation()
screenOrientation
、setRequestedOrientation()
、getRequestedOrientation()
の次の値は無視されます。
portrait
reversePortrait
sensorPortrait
userPortrait
landscape
reverseLandscape
sensorLandscape
userLandscape
ディスプレイのサイズ変更に関しては、android:resizeableActivity="false"
、android:minAspectRatio
、android:maxAspectRatio
は効果がありません。
Android 16 をターゲットとするアプリの場合、デフォルトでは、大画面でアプリの向き、サイズ変更、アスペクト比の制約は無視されますが、完全に準備ができていないすべてのアプリは、オプトアウトすることでこの動作を一時的にオーバーライドできます(これにより、互換モードに置かれるという以前の動作になります)。
例外
Android 16 の画面の向き、サイズ変更、アスペクト比の制限は、次の状況では適用されません。
- ゲーム(
android:appCategory
フラグに基づく) - ユーザーがデバイスのアスペクト比設定でアプリのデフォルトの動作を明示的に有効にしている
sw600dp
より小さい画面
一時的にオプトアウトする
特定のアクティビティをオプトアウトするには、PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY
マニフェスト プロパティを宣言します。
<activity ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
...
</activity>
アプリの多くの部分が Android 16 に対応していない場合は、アプリケーション レベルで同じプロパティを適用して、完全にオプトアウトできます。
<application ...>
<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESTRICTED_RESIZABILITY" android:value="true" />
</application>
健康&フィットネス
Android 16 では、健康とフィットネスのデータに関連する次の変更が加えられています。
健康とフィットネスの権限
Android 16 以降をターゲットとするアプリの場合、BODY_SENSORS
権限は、ヘルスコネクトでも使用される android.permissions.health
のきめ細かい権限に移行されます。以前 BODY_SENSORS
または BODY_SENSORS_BACKGROUND
を必要としていた API には、対応する android.permissions.health
権限が必要になります。これは、次のデータ型、API、フォアグラウンド サービス タイプに影響します。
- Wear ヘルスサービスから
HEART_RATE_BPM
- Android Sensor Manager の
Sensor.TYPE_HEART_RATE
- Wear
ProtoLayout
のheartRateAccuracy
とheartRateBpm
FOREGROUND_SERVICE_TYPE_HEALTH
:BODY_SENSORS
の代わりに、それぞれのandroid.permission.health
権限が必要
アプリがこれらの API を使用している場合は、それぞれ詳細な権限をリクエストする必要があります。
- 心拍数、血中酸素ウェルネス、皮膚温の使用中のモニタリングの場合:
android.permissions.health
で詳細な権限をリクエストします(BODY_SENSORS
ではなくREAD_HEART_RATE
など)。 - バックグラウンド センサーへのアクセスの場合:
BODY_SENSORS_BACKGROUND
ではなくREAD_HEALTH_DATA_IN_BACKGROUND
をリクエストします。
これらの権限は、健康、フィットネス、ウェルネス データ用の Android データストアである ヘルスコネクトからのデータの読み取りアクセスを保護する権限と同じです。