デバイス互換性モード

Android では、画面の向きまたは値を宣言するアプリに対して、互換モードが有効になります。 サイズ変更の制限。互換性モードは、 大画面デバイスと折りたたみ式折りたたみ式スマートフォンです。ただし、ユーザビリティは最適ではありません。

アプリごとのオーバーライドにより、デバイス メーカーは設定を変更可能 ユーザー エクスペリエンスを向上させたり、アプリが動作を停止しないようにしたりするための 特定できます。

参照デバイス

次のデバイスでは、異常な動作により、アプリごとのオーバーライドが必要になる場合があります アプリで十分にサポートされていない構成や構成:

  • タブレット: Google Pixel Tablet など、一部のタブレットの自然な向き。 横向きですデバイスは自然な向きで Display#getRotation() の返品 Surface.ROTATION_0.アプリで ROTATION_0 が縦向きであると想定すると、 アプリのレイアウトやカメラ プレビューが、デバイスのディスプレイと一致しないことがあります。
  • 横向きの折りたたみ式: Google Pixel Fold など一部の折りたたみ式デバイスは、 折りたたみ時は縦向き、展開時は横向き。 広げた状態の向きが縦向きであるとアプリで想定すると、ちらつく ループやレイアウトの問題が発生する可能性があります。
  • 折りたたみ式折りたたみ式スマートフォン: 折りたたまれた折りたたみ式スマートフォンは通常、縦向きです。 方向です。ただし、折りたたんだ状態ではディスプレイが小さく、 横向き。アプリはさまざまなアプリケーションを識別し、 画面の向きに応じて異なります。

互換性に関する一般的な問題

互換性の問題は、主にアプリの向きが原因で発生する 制限、サイズ変更とアスペクト比の制限、 カメラ プレビューの向き、API の誤用など、さまざまな問題が含まれます。

レターボックス表示

レターボックス表示にするとアプリは画面の中央に配置されます。大画面の場合は 簡単にアクセスできます。マット(単色の棒) 使用されていないディスプレイ領域の側面や上部全体を埋めます。 クリックします。

大画面のデバイスではレターボックス表示が頻繁に発生します。これは デバイスのディスプレイのアスペクト比は通常、標準のアスペクト比と異なります。 携帯電話向けのアプリです。

図 1. アプリが縦向きに制限されているため、横向きのタブレットや折りたたみ式デバイスではレターボックス表示されます。

問題

修正済みのため、一部のディスプレイ構成はサポートされていません 固定されている、またはサイズ変更不可であるなどの理由が考えられます。

アプリの向きとサイズ変更を制御する構成設定には、 次のとおりです。

  • screenOrientation: 固定の向きを指定します。 できます。アプリでは、 Activity#setRequestedOrientation().

  • resizeableActivity: システムが次の処理を実行できるかどうかを示します。 さまざまなサイズのウィンドウに合わせてアプリのサイズを変更できます。Android 11(API レベル)の場合 30)以下では、アプリがマルチ ウィンドウ モードをサポートするかどうかを指定します。オン Android 12(API レベル 31)以降では、アプリが 小画面(画面幅 600 dp 未満)でのマルチ ウィンドウ モード。Android 12 以降の場合 それより高く、アプリは大画面でのマルチウィンドウ モードをサポートします(画面幅 600 dp 以上) 常に適用されます。

  • maxAspectRatio: 最大アスペクト比を指定します。 確認します。resizeableActivityfalse に設定されているアプリのみ可能 maxAspectRatio を設定します。

  • minAspectRatio: 最小アスペクト比を指定します 確認します。resizeableActivityfalse に設定されているアプリのみ可能 minAspectRatio を設定します。

最適化

アプリは、すべてのデバイスとマルチ ウィンドウ モードのディスプレイの向きと、 あります。画面の向きと固定アスペクト比の制限をアプリからすべて削除する レイアウトとアプリ マニフェスト ファイルです。

互換性の対応策

画面の向きやアスペクト比が固定されているアプリが、 アプリがウィンドウのサイズまたは向きを直接サポートしていない場合、Android 継続性を維持するために、アプリがレターボックス表示されます。

Android 12(API レベル 31)以降、12L(API レベル 32)以降、 プラットフォームでは、レターボックス表示のアプリに対してさまざまな機能強化が行われています。デバイス 各メーカーが UI 拡張機能を実装しています。追加の操作をする必要はありません。 改善案をアプリ開発に活かすことができます

Android 12(API レベル 31)では、以下のデザインが強化されました。 デバイス メーカーが設定できます。

  • 角丸: アプリ ウィンドウの角が洗練された印象になっています。
  • システムバーの透明度: システムバーの上に重ねて表示されるステータスバーとナビゲーション バーです。 半透明であるため、バーのアイコンが画面上に常に レターボックス表示の背景。
  • アスペクト比の設定が可能: アプリのアスペクト比を調整可能 アプリの見た目を良くすることができます。

図 2. UI の機能が強化されたレターボックス表示のアプリ

12L(API レベル 32)では、次のような機能が改善されています。

  • 構成可能な配置: デバイス メーカーは大画面向けに アプリをディスプレイの左右に配置して、 やり取りが容易になります

  • 再起動ボタンのデザイン変更: デバイス メーカーは再起動を可能にできます。 サイズ互換モードのボタンのデザインを一新しました 認識しやすいように工夫されています

Android 13(API レベル 33)では、 画面上にレターボックス表示されたアプリ、または分割画面モードでレターボックスが表示される:

図 3. ユーザー向け情報ダイアログが表示された、レターボックス表示のアプリ。

サイズ互換モード

サイズ互換モードは、再起動コントロールを含むレターボックス表示です。「 コントロールにより、ユーザーはアプリを再起動してディスプレイを再描画できます。Android が呼び出す サイズ変更不可と判断されたアプリのサイズ互換モード。特定の アクティビティが、そのアクティビティの 場合、システムはアプリを再スケーリングしてデバイスのディスプレイを 少なくとも 1 つのディメンションが必要です

たとえば、次のようなデバイス設定を変更すると、サイズ互換モードがトリガーされます。

  • デバイスの回転
  • 折りたたみ式デバイスの折りたたみと展開
  • 全画面モードと分割画面モードの切り替え

問題

サイズ互換モードは通常、 設定(またはシステムによって決定)されます。 サイズ変更不可にします。

アプリはサイズ変更可能とみなされ、サイズ内に配置されません 互換モード(次のいずれかの条件を満たす場合)

アプリがいずれかの条件を満たさない場合は、満たしていないと見なされます。 サイズ変更が可能で、サイズ互換モードに配置できます。

最適化

アプリはすべてのディスプレイ サイズをサポートする必要があります。 <activity>android:resizeableActivity 属性 または <application> 要素を true に 指定します。アプリのレスポンシブ/アダプティブ レイアウトを設計します。詳細情報 詳しくは、 各種の画面サイズのサポートマルチウィンドウのサポート

互換性の対応策

Android では、アプリがサイズ互換モードであると判断されると、 アプリを再スケーリングして画面全体を埋めることで、レターボックス表示の 少なくとも 1 つのディメンションが必要ですシステムが再起動のコントロールを表示する これにより、アプリのプロセスが再作成され、アクティビティが再作成されて 表示されます。プロセスとスレッドの概要もご覧ください。

ちらつきループ

アプリでサポートされていないディスプレイの向きがある場合、 設定変更の発生時に新しい画面の向きをリクエストして 無限ループが発生すると、ディスプレイのちらつきやアプリが無限に回転します。

問題

Android 12(API レベル 31)以降では、デバイス メーカーは アプリが指定した画面の向きの制限が無視されるようにし、代わりに 互換モードを適用します。たとえば、折りたたみ式デバイスは アクティビティの android:screenOrientation="portrait" (デバイスの横向きのタブレット サイズでアクティビティを表示する場合の設定) 操作できます。

アプリの向きの制限が無視されると、アプリは 画面の向きを設定するには、 Activity#setRequestedOrientation().コール アプリが構成の変更を処理していない場合、アプリの再起動をトリガーします( 構成の変更に対処する)。 アプリの向きの制限が再び無視され、アプリが setRequestedOrientation() の呼び出し。その呼び出しによってアプリの再起動がトリガーされ、 自己永続ループに組み込まれます。

もう一つの方法としては、 自然な向き(通常の向き) (Android によって判別される)が横向きである(つまり、 Display#getRotation() の返品 Surface.ROTATION_0(デバイスが横向きである) 比率)。これまで、アプリでは Display.getRotation() = Surface.ROTATION_0 はデバイスが縦向きになっていると想定されていましたが、そうではありません たとえば一部の折りたたみ式デバイスのインナー ディスプレイや 一部のタブレットでは利用できません。

折りたたみ式のインナー ディスプレイで横向きになっているアプリの場合、 画面の回転、ROTATION_0 の値を受け取り、自然な向きを想定 デバイスが縦向きになり、 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT ): アプリのレイアウトを再構成します。アプリが再起動した後(横向き) 画面の回転を再度確認し、 ROTATION_0、呼び出し setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) 無限ループに入ります

最適化

アプリが以下のことを行わないようにする必要があります。

  • Activity#setRequestedOrientation() を使用してデフォルトの向きを設定する アクティビティの onCreate() メソッド。これは、画面の向きのリクエストに対して 未処理の構成変更によって予期せぬトリガーを
  • デバイスの自然な向き(ROTATION_0)が縦向きであると想定する
  • 現在のウィンドウ サイズに関係のないシグナルに基づいて向きを設定する Display#getRotation()FoldingFeature、または非推奨 API

互換性の対応策

次の場合、Android は Activity#setRequestedOrientation() の呼び出しを無視します。 次のような状況になります。

  • 前回のメソッド呼び出しから、アクティビティがすでに再起動されている、または カメラの互換力回転処理が有効になっている(カメラ プレビューをご覧ください)。

    デバイス メーカーは、以下を含むアプリにもこの動作を適用できます。 OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION.

  • アクティビティが 1 秒間に 3 回以上画面の向きのリクエストを行ったため、 ループが発生したことを示します。ループ内の 2 つのリクエストのうち、Android は アプリの表示領域を最大化します

    デバイス メーカーは、以下を含むアプリにもこの動作を適用できます。 OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED.

カメラ プレビュー

カメラアプリのカメラ プレビュー(またはビューファインダー)がずれたり、歪んだりすることがあります。 タブレット、ノートパソコン、折りたたみ式ディスプレイです

問題

Android 互換性定義ドキュメントには、 カメラのイメージ センサーは、カメラの長辺が 画面の長辺にぴったりです。」

多くの場合、アプリはデバイスの向きとカメラのセンサーの向きを 縦向き(標準的なスマートフォンでは合理的な想定)です。しかし、 タブレットやノートパソコン、カメラセンサーの自然な向きが 見ていきますまた、折りたたみ式デバイスなどの新しいフォーム ファクタでは、 複数のカメラセンサーをさまざまな向きで表示できます。

アプリが想定していないカメラの向きや、カメラの向きでアクティビティを開始する 複数のカメラやデバイス画面(折りたたみ式デバイスの場合)を切り替えると、 カメラ プレビューの位置がずれたり歪んだりします。

最適化

カメラアプリは、デバイスの向きとカメラを正しく識別して管理する必要があります 適切に調整、拡大縮小されたカメラ プレビューを表示できます。 アプリは、デバイスの回転、センサーの回転、画面またはウィンドウを計算する必要があります。 その結果をカメラ プレビューに適用します。詳細な ガイダンスについては、カメラ プレビューカメラの概要をご覧ください ビューファインダー

互換性の対応策

Display#getRotation() の場合、デバイスは自然な向きです は、Surface.ROTATION_0 を返します。システムで次の計算が行われます。 CameraCharacteristics.SENSOR_ORIENTATION 画面の向きが変わらないことがありますAndroid では、デバイスの縦向きウィンドウに デバイスの自然な向きが適用されている、縦向き限定のアプリ 多くのアプリで期待されていますまた、Android は、 センサーの向きが横向きで、カメラ プレビューが縦向きになっている。具体的な 次のような回避策があります。

  • 縦向き限定のアプリでカメラ プレビューを強制的に回転する: アプリ 縦向きに制限され、デバイスの自然な向きが想定されます カメラセンサーの向きが縦向きになりますただし Android 12 では (API レベル 31)以降では、アプリを複数のデバイスの画面の向きで実行できます。 デバイス メーカーは画面の向きの指定を無視します。

    縦向き限定のアプリがカメラに接続されている場合、Android は アプリが回転し、アプリの縦向きのウィンドウが 方向によって異なります。

    一部のタブレット(参照デバイスを参照)では、 縦向きウィンドウが回転して全画面表示の縦向きに調整されます 画面の自然な向きに調節できますアプリが強制適用後に全画面表示されます 作成できます。

    折りたたみ式デバイスの横向きのインナー ディスプレイ( デバイスなど)では、縦向き限定のアクティビティが 広げた自然な向きに合わせて横向きにします。このアプリ 強制回転後にレターボックス表示されます。

  • 内側の前面カメラの切り抜き: 一部の背面カメラセンサーで 折りたたみ式は横向きですコンテナを強制的に回転させるだけでなく、 折りたたみ式インナー ディスプレイのカメラ プレビュー。Android がインナー ディスプレイを切り抜く (横向き)カメラの画角(センサーが反対側の視野を捉える) デバイスの向き。

  • カメラ プレビューを強制的に更新する: システムがアクティビティを繰り返します。 メソッド onStop()onStart()(デフォルト)、または onPause() メソッド onResume()OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE アプリごとのオーバーライド)を強制回転した後、カメラ プレビューが 表示されます。

  • アスペクト比のスケーリング: 画面のアスペクト比は、 カメラ プレビューを高い最小アスペクト比に強制回転させ、 カメラ プレビューが適切に拡大縮小されます。

アプリがカメラ プレビューを処理する場合、アプリ デベロッパーはこれらの回避策をオーバーライドできます 確認します。アプリごとのオーバーライドをご覧ください。

よく誤用される API

Android では、マルチ ウィンドウ モードや 従来の API は非推奨となり、代わりに あらゆるディスプレイ サイズとデバイス フォームに対応する最新の API 判断できますただし、非推奨の API も引き続き下位互換性を サポートしています。

一部の View API は、必ずしも適切とは限らない特別な目的のために設計されています デベロッパーが理解できるようにします。

問題

デベロッパーは非推奨の Display API を引き続き使用し、 API は、デバイスの表示領域の境界ではなく、アプリの境界を返します。デベロッパー 特別な用途の View API を誤って使用して一般的なディスプレイの指標を取得してしまうことがあります。 アプリ ウィンドウの後で UI 要素を再配置すると計算が不正確になる レイアウトの問題を引き起こします。

非推奨でよく誤用される Display API:

詳細については、次をご覧ください: マルチウィンドウのサポート

誤用される View API:

最適化

UI 要素の配置に、物理的なディスプレイ サイズを使用しないでください。アプリケーションを WindowMetrics に基づいて、アプリから API にアクセスできます。たとえば、 WindowManager API:

互換性の対応策

2 つのオーバーライドで、非推奨の Display API と誤用された View API を調整し、 アプリの境界を返します。 ALWAYS_SANDBOX_DISPLAY_APISDisplay) APIOVERRIDE_SANDBOX_VIEW_BOUNDS_APIS View API 用。ALWAYS_SANDBOX_DISPLAY_APIS はデフォルトで以下に適用されます。 サイズ互換モードの対象となるアプリです。

透明アクティビティ

透明アクティビティは、透明な背景スタイルの結果です。 例:

<style name="Transparent" parent="AppTheme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

ダイアログに関連するテーマ(Theme.MaterialComponents.Dialog など)は、 アクティビティを透明にするスタイルを含めます。

透明アクティビティは利用可能なディスプレイ領域をすべてカバーするとは限らないため、 使用可能な表示領域は状態によって変化するため、管理が難しくなります。 デバイスの回転、デバイスの折りたたみと展開、 サポートしています。

問題

透明アクティビティは、最初の不透明アクティビティの境界に従う必要があります。 タスク アクティビティ スタック内で透明アクティビティの下に配置されます。ただし、 権限ダイアログを起動するアクティビティは、 トランポリン(別のアクティビティを起動した後、消えるアクティビティ)および そのため、システムは対象のトランポリン アクティビティの境界を 透過的な権限ダイアログ アクティビティを起動しました。

最適化

透明アクティビティは、最上位の不透明アクティビティから制約を継承する タスクのアクティビティ スタック内でその下位のアクティビティとして識別されます。不透明アクティビティは ライフサイクル全体にわたって利用できるため、 あります。このため、権限のリクエストを開始しないでください。 トランポリン

トランポリン アクティビティによって権限リクエストが起動された場合、ユーザーは 権限ダイアログが表示されます。これは、トランポリン アクティビティが ユーザーがダイアログに応答できるようになる前に破棄され、 ダイアログ アクティビティのディメンションと位置が計算されている可能性があります。 誤りです。

アプリは必ず、残っているアクティビティから権限のリクエストを開始すべきです。 ユーザーが権限を決定するまで表示されます。

角丸

背景を指定するスタイルにより、アクティビティを透明にできる アクティビティの内容が利用可能な情報に埋もれていないことが原因です。 表示されます。透明なアクティビティが使用可能なディスプレイ領域を埋める場合、 次のように設定すると、アクティビティに角の丸みが自動的に適用されます。 デバイス メーカーにお問い合わせください。ただし、透過的なアクティビティ( 権限ダイアログなど)が使用可能なスペースを埋めることができない場合、そのかどうかはユーザーが 角丸を適用するかどうかを指定します。

利用可能なディスプレイ スペースが権限ダイアログで埋められることがその理由です。 通常は、代わりに LayoutParams.WRAP_CONTENTLayoutParams.MATCH_PARENT

互換性の対応策

ダイアログ アクティビティを起動するアクティビティは、ユーザーが操作するまで表示したままにする 回答しました。

システムにより、透過的なアクティビティはすべての制約を アクティビティ スタック内の透明アクティビティの下にある最初の不透明アクティビティ。 次に関連する制約が含まれます。

  • サイズ互換モード
  • 向き
  • アスペクト比

Unity ゲーム

Unity ゲームは Android 全画面モードまたはマルチウィンドウ モードで動作します。ただし、 多くの Unity ゲームは、アプリがメインのスペースに配置されると、フォーカスを喪失してコンテンツの描画を停止します。 サポートしています。

問題

Unity に Resizable Window が追加されました Unity 2019.4 のオプションを追加しました。ただし、 初期実装は、アクティビティのライフサイクルに マルチウィンドウ モードが正しく機能しないため、 UnityPlayer は、アプリがフォーカスを喪失したときに再生を一時停止します。プレーヤーは動画をレンダリングしました。 ゲームの最後のフリーズしたフレームが 表示されなくなるという問題ですゲームプレイが次の場合にのみ再開される ユーザーが画面をタップしたことを示します。Unity エンジンを使用する多くのアプリでこの問題に直面しています。 マルチ ウィンドウ モードでは黒いウィンドウとしてレンダリングされます。

最適化

Unity を 2019.4.40 以降にアップグレードして、ゲームを再エクスポートします。現在の Resizable Window オプションがオンになりました Android Player 設定、それ以外の場合は ゲームが完全に表示されているにもかかわらず、フォーカスされていないときはゲームが一時停止する サポートしています。

互換性の対応策

デバイス メーカーは、 OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS アプリごとのオーバーライドを使用して、偽のフォーカス イベントを サポートしています。オーバーライドすると、アクティビティはコンテンツを再描画できるようになり、 隠さないようにします。

互換性の問題がないかアプリをテストする

アプリをテストして、さまざまなフォーム ファクタでどのように動作するかを把握するには、以下を行います。 次のリソースを利用できます

レターボックス表示になっているか

各アクティビティが、アプリで使用可能なディスプレイ領域をすべて使用できることを確認してください。まず、テストフォルダで次のコードを宣言します。

Kotlin

fun Activity.isLetterboxed() : Boolean {
    if (isInMultiWindowMode) return false

    val wmc = WindowMetricsCalculator.getOrCreate()
    val currentBounds = wmc.computeCurrentWindowMetrics(this).bounds
    val maxBounds = wmc.computeMaximumWindowMetrics(this).bounds

    val isScreenPortrait = maxBounds.height() > maxBounds.width()

    return if (isScreenPortrait) {
        currentBounds.height() < maxBounds.height()
    } else {
        currentBounds.width() < maxBounds.width()
    }
}

Java

public boolean isLetterboxed(Activity activity) {
    if (activity.isInMultiWindowMode()) {
        return false;
    }

    WindowMetricsCalculator wmc = WindowMetricsCalculator.getOrCreate();
    Rect currentBounds = wmc.computeCurrentWindowMetrics(activity).getBounds()
    Rect maxBounds = wmc.computeMaximumWindowMetrics(activity).getBounds();

    boolean isScreenPortrait = maxBounds.height() > maxBounds.width();

    return (isScreenPortrait)
        ? currentBounds.height() < maxBounds.height()
        : currentBounds.width() < maxBounds.width();
}

次に、テストを実行して動作をアサートし、ターゲット アクティビティが レターボックス表示:

Kotlin

@get:Rule
val activityRule = ActivityScenarioRule(MainActivity::class.java)

@Test
fun activity_launched_notLetterBoxed() {
    activityRule.scenario.onActivity {
        assertThat(it.isLetterboxed()).isFalse()
    }
}

Java

@Rule
public ActivityScenarioRule<MainActivity> rule = new ActivityScenarioRule<>(MainActivity.class);

public void activity_launched_notLetterBoxed() {
    try (ActivityScenario<MainActivity> scenario = ActivityScenario.launch(MainActivity.class)) {
        scenario.onActivity(activity -> {
            assertThat(isLetterboxed(activity)).isFalse();
        });
    }
}

理想的には、この種のテストは合格して、アプリが アクティビティは、アプリが使用できるディスプレイ領域全体を占有します。アプリをテストする 一貫した動作を保証します。

アプリごとのオーバーライド

Android には、アプリの構成済み動作を変更するオーバーライドが用意されています。対象 FORCE_RESIZE_APP オーバーライドは、 システムにより、サイズ互換モードを回避し、ディスプレイに合わせてアプリのサイズを変更する (resizeableActivity="false" が 必要があります。

デバイス メーカーは、一部のアプリまたはすべてのアプリにオーバーライドを適用する 対応しています。Android 14(API レベル 34)以降では、ユーザーは デバイスの設定でアプリにオーバーライドを適用できます。

アプリごとのユーザー オーバーライド

Android 14 以降では、設定メニューでアスペクトを変更できる 割合ですリファレンスなどの大画面デバイス メニューを実装します。

メニューには、デバイスにインストールされているすべてのアプリのリストが表示されます。ユーザーは以下を選択します。 アプリのアスペクト比を 3:4、1:1、全画面などの値に設定する デバイス メーカーによって設定されます。ユーザーはアスペクト比を アプリのデフォルト(アプリ マニフェストで指定)

アプリで次の PackageManager.Property タグを設定すると、互換性のオーバーライドをオプトアウトできます。

  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE

    ユーザー アスペクト比の互換性のオーバーライドをオプトアウトするには、プロパティを追加します。 アプリ マニフェストに追加し、値を false に設定します。

    <application>
        <property
            android:name="android.window.
            PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE"
            android:value="false" />
    </application>
    

    アプリは、デバイスの設定でアプリのリストから除外されます。ユーザー アプリのアスペクト比をオーバーライドできなくなります。

    このプロパティを true に設定しても効果はありません。

  • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE

    ユーザーのアスペクト比の互換性に関する全画面オプションを無効にする オーバーライドするには、プロパティをアプリ マニフェストに追加して、値を false:

    <application>
        <property
            android:name="android.window.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE"
            android:value="false" />
    </application>
    

    全画面オプションが、 。ユーザーは全画面表示のオーバーライドを 説明します。

    このプロパティを true に設定しても効果はありません。

すべての画面向けにアプリを最適化する: アスペクト比の制限を設定しない 説明します。ウィンドウ サイズクラスを使用して、さまざまなウィンドウ サイズを 基づいて調整します。

デバイス メーカーによるアプリごとのオーバーライド

デバイス メーカーは、一部のデバイスでアプリごとにオーバーライドを適用します。 参照デバイスは、オーバーライドの一部を 簡単に実装できます。

アプリはほとんどのオーバーライドをオプトアウトできます( オーバーライドの表をご覧ください)。

互換性アプリを使用して、オーバーライドを有効または無効にしてアプリをテストできます。 (互換性フレームワーク ツールをご覧ください)。 有効にすると、オーバーライドがアプリ全体に適用されます。

また、Android Debug Bridge(adb)を使用して、デバッグの有効化または無効化もできます。 オーバーライドを無効にし、アプリに適用するオーバーライドを決定します。

オーバーライドを有効または無効にする方法は次のとおりです。

adb shell am compat enable/disable <override name/id> <package>

参照デバイスで、適用されるオーバーライドを確認します。 必要があります。

adb shell dumpsys platform_compat | grep <package name>

次の表に、使用可能なオーバーライドと、その方法のガイダンスを示します。 アプリがオーバーライドに依存する必要がないようにアプリを最適化します。追加できるアセットは、 プロパティ フラグを追加して、オーバーライドをオプトアウトすることもできます。

アプリごとのオーバーライド
タイプ 名前 ID 説明
サイズ変更 FORCE_RESIZE_APP 174042936 構成変更時にアプリのサイズ互換モードをバイパスします。
FORCE_NON_RESIZE_APP 181136395 構成を変更するとアプリを強制的にサイズ互換モードにします。
アスペクト比 OVERRIDE_MIN_ASPECT_RATIO 174042980 他のアスペクト比のオーバーライドを適用するには、ゲートキーパーのオーバーライドを有効にする必要があります。
OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY 203647190 有効(デフォルト)に設定した場合、スコープが縦向き限定のアクティビティにオーバーライドされます。
OVERRIDE_MIN_ASPECT_RATIO_MEDIUM 180326845 最小アスペクト比を 3:2 に変更します。
OVERRIDE_MIN_ASPECT_RATIO_LARGE 180326787 最小アスペクト比を 16:9 に変更します。
OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN 208648326 最小アスペクト比をディスプレイ サイズの 50%(分割画面のアスペクト比)に変更します。
OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN 218959984 最小アスペクト比のオーバーライドを無効にし、デバイスが縦向きのときにアプリが全画面表示されるようにします。
向き OVERRIDE_ANY_ORIENTATION 265464455 任意の向きのオーバーライドを有効にします。
<ph type="x-smartling-placeholder"></ph> OVERRIDE_ANY_ORIENTATION_TO_USER 310816437 向き、サイズ変更、アスペクト比の制限をオーバーライドします。
OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT 265452344 アクティビティの向きが未定義の場合、向きが縦向きになるようにオーバーライドします。
OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR 265451093 アクティビティの向きが未定義の場合、向きを nosensor(デバイスの自然な向きを使用)にオーバーライドします。
OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE 266124927 横向き限定のアプリを 180 度回転します。
OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA 265456536 向きのオーバーライドのスコープを、アプリがカメラに接続している場合に限定します。
OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION 255940284 タスクが全画面表示の場合(レターボックス表示の場合も含む)に、ディスプレイを自然な横向きで固定します。
OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION 254631730 回転の無限ループを避けるため、アプリからの向きのリクエストは無視されます。
OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED 273509367 アクティビティが再起動されている間、向きのリクエストの繰り返しを無視します。アプリが 1 秒以内に 2 つ以上の新しい画面の向きをリクエストしていることを Android が検出した場合、システムはこれを回転無限ループとみなし、オーバーライドを適用します。
OVERRIDE_RESPECT_REQUESTED_ORIENTATION 236283604 デバイス メーカーが画面の向きのリクエストを無視する設定を無効にすることで、レターボックス表示されないようにします。
サンドボックス API NEVER_SANDBOX_DISPLAY_APIS 184838306 Display API の動作が変更されないようにします。
ALWAYS_SANDBOX_DISPLAY_APIS 185004937 アプリ内の Display API が強制的にアプリの境界を返すようにします。Display API は論理ディスプレイ領域の境界を返しますが、場合によっては、Display API がアプリの境界を返すものとアプリが想定するため、UI の問題が発生することがあります。
OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS 237531167 アプリで使用される View API が強制的にアプリの境界を返すようにします。View API は論理ディスプレイ領域の境界を返しますが、場合によっては、View API がアプリの境界を返すものとアプリが想定するため、UI の問題が発生することがあります。
カメラ互換性 OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION 263959004 強制回転をオフにします。デフォルトでは、カメラ プレビューが開いているときに、向きが固定されているすべてのカメラアプリが強制的に回転します。
OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH 264304459 カメラ プレビューが強制回転されたときに適用されるデフォルトのハード更新を削除します。
OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE 264301586 カメラ プレビューが強制的に回転されると、ハード更新がソフト更新に切り替わります。これにより、強制回転中の状態を保持できます。デフォルトでは、カメラ プレビューが強制的に回転されると、Android はハード更新を適用します。ハード更新を行うと、アプリが以前の状態をキャッシュに保存する方法によっては、アプリの状態が失われたり、停止したりする問題が発生することがあります。
OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT 250678880 内部の前面カメラの画像バッファを切り抜きます。オーバーライドを無効にすると、内部の前面カメラの切り抜きが解除され、カメラ プレビューの画角が広がります。一部の折りたたみ式デバイス(参照デバイスを参照)では、インナーの前面カメラを使用している場合、デフォルトですべてのカメラアプリのカメラ プレビューが切り抜かれます。
その他 OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS 263259275 分割画面モードでアプリがフォーカスを喪失したときにアプリが黒く表示されないようにします。アプリは、フォーカスされてから、アプリのコンテンツを描画します。そのため、アプリはフリーズしたり、黒く表示されることがあります。このオーバーライドにより、Android はアプリに偽のフォーカス イベントを送信して、アプリにコンテンツの描画を再開するようシグナルを送ることができます。

FORCE_RESIZE_APP

オーバーライドが適用されるパッケージを強制的にサイズ変更可能にします。しない アプリをマルチ ウィンドウ モードにできるかどうかを変更できますが、 画面のサイズ変更時にサイズ互換モードに入らずにサイズ変更できます。

アプリでオーバーライドと同じ結果を得る方法

アプリ マニフェストで、 android:resizeableActivity 属性を true に設定するか、 マルチ ウィンドウ モードを無効にしながらサイズ変更をサポート android:resizeableActivity=false さん、android.supports_size_changes を設定してください メタデータ フラグを true に設定します。

アプリを最適化する方法

レスポンシブ/アダプティブ レイアウトを使用して、アプリがすべてのディスプレイ サイズと アスペクト比。詳しくは、 各種の画面サイズのサポート

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグ PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES を設定します。 false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用してアプリのサイズを変更可能にするには:

adb shell am compat enable FORCE_RESIZE_APP <package>

オーバーライドを削除するには:

adb shell am compat disable FORCE_RESIZE_APP <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

FORCE_NON_RESIZE_APP

オーバーライドが適用されるパッケージを強制的にサイズ変更不可にして、 構成変更時にサイズ互換モードに入る。

アプリでオーバーライドと同じ結果を得る方法

android:resizeableActivity 属性と アプリ マニフェストの android.supports_size_changes メタデータ フラグを false に設定。 向きまたはアスペクト比の制限を宣言します。

アプリを最適化する方法

サイズ変更時に正常に動作するすべてのアプリは、 android:resizeableActivity または android.supports_size_changestrue に設定します。 それ以外のアプリは、サイズ変更時に適切に動作するように改善する必要があります。詳しくは、 android:resizeableActivity

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグ PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES を設定します。 false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_RESIZEABLE_ACTIVITY_OVERRIDES"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用してアプリのサイズを変更できないようにするには:

adb shell am compat enable FORCE_NON_RESIZE_APP <package>

オーバーライドを削除するには:

adb shell am compat disable FORCE_NON_RESIZE_APP <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_MIN_ASPECT_RATIO

指定された最小アスペクト比を強制的に適用するすべてのオーバーライドのゲートキーパー。

アプリでオーバーライドと同じ結果を得る方法

android:minAspectRatio をアクティビティ単位またはアプリ単位で設定します。

アプリを最適化する方法

アプリでアスペクト比の制限を設定しないでください。アプリが 画面サイズを選択します。ウィンドウ サイズクラスを使用する スペースの大きさに応じてさまざまなレイアウトをサポートできます。 表示されます。Compose WindowSizeClass API をご覧ください。 と WindowSizeClass API を表示します。

オーバーライドを無効化またはオプトアウトする方法

アスペクト比の制限を指定するか、プロパティ フラグを設定してください PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE から false に変更。

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_MIN_ASPECT_RATIO_OVERRIDE"
  android:value="false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY

アクティビティに対して所定の最小アスペクト比を強制するアプリの設定を制限します。 縦向きのみに配置されます。デフォルトで有効。有効 OVERRIDE_MIN_ASPECT_RATIO も有効になっている場合。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

アプリを最適化する方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_PORTRAIT_ONLY <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_MIN_ASPECT_RATIO_MEDIUM

アクティビティの最小アスペクト比を中程度の値(3:2)に設定します。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

アプリを最適化する方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_MEDIUM <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_MIN_ASPECT_RATIO_LARGE

アクティビティの最小アスペクト比を大きな値(16:9)に設定します

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

アプリを最適化する方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_LARGE <package>`

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN

分割画面のアスペクト比の使用を有効にします。すべての機能の使用をアプリに許可 余白を調整できるようにしました。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

アプリを最適化する方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_TO_ALIGN_WITH_SPLIT_SCREEN <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN

縦向きの全画面表示での最小アスペクト比のオーバーライドを無効にして、すべてを使用します 利用可能な画面スペースが表示されます。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

アプリを最適化する方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_MIN_ASPECT_RATIO をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_MIN_ASPECT_RATIO_EXCLUDE_PORTRAIT_FULLSCREEN <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_ANY_ORIENTATION

次のオーバーライドを有効にして、すべての向きをオーバーライドします。

アプリでオーバーライドと同じ結果を得る方法

activity:screenOrientation マニフェスト属性を設定する。 Activity#setRequestedOrientation() API を使用します。

アプリを最適化する方法

アプリはすべての画面の向きをサポートする必要があります。画面の向きの変更は、 この処理は、次の 2 つの方法のいずれかで行えます。 アプリの破棄と再作成、または構成変更の管理 できます。構成の変更を自分で管理する場合、アプリの状態を ViewModel を使用して保持します。ごく限られたケースですが、 画面の向きは小型ディスプレイでのみ表示されますが、画面のサイズが足りない場合や ユーザーが必要に応じてアプリを回転できるようにします。Android 12L 以降のバージョンでは、 デバイス設定でオーバーライドできます。詳細情報 構成変更の処理とサポートに関するすべての 構成の変更を処理するをご覧ください。 ViewModel の概要アプリの向きの制限オン 大画面デバイスでは対応しません

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定する PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE 宛先: false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_ORIENTATION_OVERRIDE"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_ANY_ORIENTATION <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_ANY_ORIENTATION <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_ANY_ORIENTATION_TO_USER

アプリが利用可能なディスプレイ スペース全体に表示されるようにします。すべての向きをオーバーライドします。 アプリ マニフェストで指定されているサイズ変更可能性、アスペクト比の制限。また、 呼び出しはすべて無視されます。 Activity#setRequestedOrientation().

アプリでオーバーライドと同じ結果を得る方法

  • android:screenOrientation マニフェストを設定しない 属性を "user" に設定します。

  • android:resizeableActivity マニフェストを設定する 属性を true に追加します。

  • 小画面で、マルチウィンドウを無効にしながらアプリのサイズ変更をサポートする モードを使用android:resizeableActivity=falseするには、 android.supports_size_changes メタデータ フラグを true に設定。設定しない minAspectRatiomaxAspectRatio

アプリを最適化する方法

アプリがすべての画面の向きをサポートするようにします。screenOrientation を設定しない 仕様に追加します。アプリのサイズ変更をサポートする マルチ ウィンドウ モード、すべてのディスプレイのアスペクト比を アプリのマニフェストの android:resizeableActivity 属性を true に設定してください。詳しくは、 各種の画面サイズのサポート

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_ANY_ORIENTATION_TO_USER <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_ANY_ORIENTATION_TO_USER <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT

パッケージ内のすべてのアクティビティに対して縦向きを有効にします。ただし、 OVERRIDE_ANY_ORIENTATION が有効になっている場合、オーバーライドします。 アクティビティで他の固定の向きが指定されていない場合のみ使用されます。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR

内のすべてのアクティビティに対して nosensor の向きを有効にします。 パッケージ化されています。OVERRIDE_ANY_ORIENTATION が 有効にすると、画面の向きが固定されていない場合にのみオーバーライドが使用されます。 渡す必要があります。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE

すべてのアクティビティに対して reverseLandscape の向きを有効にします。 提供します。OVERRIDE_ANY_ORIENTATION が 有効にすると、画面の向きが固定されていない場合にのみオーバーライドが使用されます。 渡す必要があります。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA

制限 OVERRIDE_UNDEFINED_ORIENTATION_TO_PORTRAIT OVERRIDE_UNDEFINED_ORIENTATION_TO_NOSENSOR および OVERRIDE_LANDSCAPE_ORIENTATION_TO_REVERSE_LANDSCAPE オーバーライドは、カメラ接続がアクティブな場合にのみ有効になります。

アプリでオーバーライドと同じ結果を得る方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを調整するプロパティ フラグ

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_ORIENTATION_ONLY_FOR_CAMERA <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION

次の場合に、ディスプレイの向きを自然な横向きに制限します。 次の条件が満たされています。

  • アクティビティが全画面表示である
  • オプトアウト コンポーネント プロパティ PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE が有効になっていません
  • デバイス メーカーによる画面の向きのリクエストの無視の設定が ディスプレイ
  • ディスプレイの自然な向きが横向きである

アプリでオーバーライドと同じ結果を得る方法

該当なし。この問題はアプリケーション ロジックで解決する必要があります。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定する PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE 宛先: false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_DISPLAY_ORIENTATION_OVERRIDE"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_USE_DISPLAY_LANDSCAPE_NATURAL_ORIENTATION <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION

アプリに応じてアプリの向きの更新をスキップする互換ポリシーを有効にします アプリによるActivity#setRequestedOrientation()の呼び出し 再起動中であるか、有効なカメラ互換処理が適用されているデバイスです。

アプリでオーバーライドと同じ結果を得る方法

プロパティ フラグを設定 PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION 宛先: true

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION 宛先: false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_IGNORE_REQUESTED_ORIENTATION"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_REQUESTED_ORIENTATION <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED

アプリがリクエストした画面の向きを無視する互換性ポリシーを有効にします。 呼び出しに対するレスポンスを Activity#setRequestedOrientation() 3 回以上 アクティビティが固定の向きでレターボックス表示されていない場合に 1 秒以内で送信されます。

アプリでオーバーライドと同じ結果を得る方法

該当なし。この問題はアプリケーション ロジックで解決する必要があります。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTEDfalse

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED"
  android:value="false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_IGNORE_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_RESPECT_REQUESTED_ORIENTATION

有効にできる画面の向きのリクエスト動作の無視からパッケージを除外します ディスプレイ領域、またはディスプレイ全体のサイズです。

アプリでオーバーライドと同じ結果を得る方法

該当なし。この問題はアプリケーション ロジックで解決する必要があります。

アプリを最適化する方法

OVERRIDE_ANY_ORIENTATION をご覧ください。

オーバーライドを無効化またはオプトアウトする方法

オプトアウトはできません。アプリに互換性がない場合、オーバーライドを無効にすると危険が伴う可能性がある デバイス メーカーがデバイスの向きのリクエストを無視する 設定を有効にする必要があります。Android デベロッパーに問い合わせる Relations を使用してオーバーライドを無効にします。

オーバーライドを調整するプロパティ フラグ

このオーバーライドにプロパティ フラグはありません。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_RESPECT_REQUESTED_ORIENTATION <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

NEVER_SANDBOX_DISPLAY_APIS

パッケージに Display API サンドボックスが適用されなくなります レターボックス表示またはサイズ互換モードのアクティビティに対して 使用できますDisplay API 引き続き表示領域の境界を指定します。

アプリでオーバーライドと同じ結果を得る方法

サイズの変更が可能なアクティビティを宣言するには、 trueandroid:resizeableActivity マニフェスト属性 android.supports_size_changes メタデータ フラグを true に設定します。

アプリを最適化する方法

完全にサイズ変更可能であると宣言しているアプリは、決してディスプレイ サイズに依存してはなりません。 UI 要素を配置できます。アプリを最新の API に移行して、 WindowMetrics を指定します。Jetpack Compose を使用している場合は、 画面のサイズに基づいて UI を描画する WindowSizeClass API 現在のディスプレイ上のアプリの領域です。詳しくは、 ウィンドウ サイズクラス

オーバーライドを無効化またはオプトアウトする方法

オプトアウトはできません。非推奨の API から移行してください。

オーバーライドを調整するプロパティ フラグ

このオーバーライドにプロパティ フラグはありません。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable NEVER_SANDBOX_DISPLAY_APIS <package>

オーバーライドを削除するには:

adb shell am compat disable NEVER_SANDBOX_DISPLAY_APIS <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

ALWAYS_SANDBOX_DISPLAY_APIS

パッケージに Display API サンドボックスが必ず適用されるようにする 常に同じですDisplay API では常にアプリの境界が設定されます。

アプリでオーバーライドと同じ結果を得る方法

サイズ変更不可のアクティビティを宣言するには、 android:resizeableActivity 属性を false または android.supports_size_changes メタデータ フラグを false に設定。

アプリを最適化する方法

完全なサイズ変更が可能であると宣言しているアプリは、ディスプレイ サイズに依存してはならない。 配置するための UI 要素です。非推奨の API から WindowMetrics を提供する最新の API。詳しくは、 WindowMetricsCalculator.

オーバーライドを無効化またはオプトアウトする方法

オプトアウトはできません。非推奨の API から移行してください。

オーバーライドを調整するプロパティ フラグ

このオーバーライドにプロパティ フラグはありません。

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable ALWAYS_SANDBOX_DISPLAY_APIS <package>

オーバーライドを削除するには:

adb shell am compat disable ALWAYS_SANDBOX_DISPLAY_APIS <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS

パッケージが次の View API をアクティビティの境界でサンドボックス化するよう設定します。

アプリでオーバーライドと同じ結果を得る方法

境界を指定する API を使用して、アプリケーション コードの問題を解決します。 アプリ ウィンドウの境界ではなく、アプリ ウィンドウに対する相対オフセットを デバイス ディスプレイと、デバイス ディスプレイに対する相対オフセット。

アプリを最適化する方法

アプリでは、レターボックス表示の可能性を考慮し、View API を使用する必要があります マルチウィンドウ モードがアプリに適用されています。詳しくは、 WindowMetricsCalculator.

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS 宛先: false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ALLOW_SANDBOXING_VIEW_BOUNDS_APIS"
  android:value="false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_SANDBOX_VIEW_BOUNDS_APIS <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

強制回転を無効にします。一部のアプリでユーザー エクスペリエンスが向上します。

アプリでオーバーライドと同じ結果を得る方法

プロパティ フラグを設定 PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION 宛先: false

アプリを最適化する方法

キャッシュされたカメラセンサーの向きやデバイス情報を使用しないでください。対象 カメラの互換性に関するガイダンスについては、以下をご覧ください。 カメラのビューファインダーの概要サポート カメラ内のサイズ変更可能なサーフェス アプリ

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION 宛先: true

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_FORCE_ROTATION"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用して、強制回転を解除するには:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

オーバーライドを解除して、強制回転を発生させるには:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH

強制回転後にアクティビティの更新を無効にします。ユーザー エクスペリエンスの向上 更新によってアプリで状態が失われます。

アプリでオーバーライドと同じ結果を得る方法

プロパティ フラグを設定 PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH 宛先: false

アプリを最適化する方法

詳しくは、 OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH 宛先: true

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ALLOW_REFRESH"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用して、アクティビティの更新を解除するには:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

オーバーライドを解除して、アクティビティの更新を許可するには:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_DISABLE_REFRESH <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE

適用されるパッケージに、onResume() を使用してアクティビティの更新を実行させます。 → onPause()onResume() のサイクル(onResume() から変更) → カメラ互換性が強制回転した後、onStop()onResume()

アプリでオーバーライドと同じ結果を得る方法

プロパティ フラグを設定 PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE 宛先: true

アプリを最適化する方法

詳しくは、 OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE 宛先: false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_CAMERA_COMPAT_ENABLE_REFRESH_VIA_PAUSE <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT

縦向きの場合に、カメラ出力が反対方向に切り抜かれます カメラの向きがデバイスの自然な向きと一致していません。多数のアプリ この状況を処理せず、引き伸ばされた画像を表示します。

アプリでオーバーライドと同じ結果を得る方法

プロパティ フラグを設定 PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT 宛先: true

アプリを最適化する方法

詳しくは、 OVERRIDE_CAMERA_COMPAT_DISABLE_FORCE_ROTATION

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT 宛先: false

オーバーライドを調整するプロパティ フラグ

<property android:name="android.camera.PROPERTY_COMPAT_OVERRIDE_LANDSCAPE_TO_PORTRAIT"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用して、内部の前面カメラの切り抜きを適用するには:

adb shell am compat enable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

オーバーライドを解除して、内部の前面カメラの切り抜きを解除するには:

adb shell am compat disable OVERRIDE_CAMERA_LANDSCAPE_TO_PORTRAIT <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION

アプリがアプリの画面共有をオプトアウトできないようにします( メディア プロジェクション)。アプリが createConfigForDefaultDisplay() API を使用して強制 全画面表示でキャプチャし、コンテンツを公開してユーザーのプライバシーを危険にさらす 全画面でキャプチャされるが、アプリ画面ではキャプチャされない通知の割合 すべてのアプリを一元管理できます。

アプリでオーバーライドと同じ結果を得る方法

デフォルトのメディア プロジェクション動作を許可(Android 14、API に実装) レベル 34、createScreenCaptureIntent() を使用)、 ユーザーは全画面表示と単一のアプリのどちらを共有するかを決定できます。 ウィンドウ処理モードに関係なくまたは createScreenCaptureIntent(MediaProjectionConfig) から返された MediaProjectionConfig 引数で、 createConfigForUserChoice() への呼び出し。

アプリを最適化する方法

デバイスのディスプレイ全体を共有するか、アプリを共有するかをユーザーが選択できるようにする ウィンドウに表示されます。Android 14 では、これがデフォルトの動作です。

アプリをサイズ変更可能(resizeableActivity="true")にして、 マルチウィンドウモードをサポートします

オーバーライドを無効化またはオプトアウトする方法

ユーザーのプライバシーが重視されるため、アプリで無効化またはオプトアウトすることはできません オーバーライドできます

オーバーライドを調整するプロパティ フラグ

なし。

オーバーライドをテストする adb コマンド

オーバーライドを適用する(部分的な画面共有のオプトアウトを無効にする) (部分的な画面共有を有効にする):

adb shell am compat enable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

オーバーライドを解除して、アプリが部分的な画面を無効にできるようにします。 共有:

adb shell am compat disable OVERRIDE_DISABLE_MEDIA_PROJECTION_SINGLE_APP_OPTION <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS

分割画面モードで、フォーカスされていないアプリに対して偽のフォーカスを送信できるようになります。一部 ゲームエンジンは、フォーカスを取得するのを待ってから、アプリのコンテンツを描画します。です。 フェイク フォーカスは、アプリが再開しても何も表示されないときに黒く塗りつぶされた状態にならないようにするのに役立ちます。 焦点を絞ることができます

アプリでオーバーライドと同じ結果を得る方法

プロパティ フラグを設定 PROPERTY_COMPAT_ENABLE_FAKE_FOCUStrue

アプリを最適化する方法

この問題は、アプリが複数の画面の向きと 適切に構成する必要があります。以下の手順に沿って、アプリを大画面に対応させます。 大画面のアプリの品質に関するガイドライン。

Unity ゲームエンジンを実行している場合は、バージョン 2019.4.40 以降にアップグレードし、 ゲームを再エクスポートする。Resizable Window オプションをそのまま使用する Android Player で確認済み 設定。

オーバーライドを無効化またはオプトアウトする方法

プロパティ フラグを設定 PROPERTY_COMPAT_ENABLE_FAKE_FOCUSfalse

オーバーライドを調整するプロパティ フラグ

<property android:name="android.window.PROPERTY_COMPAT_ENABLE_FAKE_FOCUS"
  android:value="true|false"/>

オーバーライドをテストする adb コマンド

オーバーライドを適用するには:

adb shell am compat enable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>

オーバーライドを削除するには:

adb shell am compat disable OVERRIDE_ENABLE_COMPAT_FAKE_FOCUS <package>

注: これらのコマンドによるオーバーライドの適用や削除はあくまで一時的なものです。

参考情報