タブレットと大画面のサポート

Android 13 は大画面での Android の性能をさらに高めます

Android 13 は、Android 12 と 12L の Feature Drop で導入されたタブレット最適化をベースにしています。これには、システム UI の最適化、マルチタスクと互換モードの改善も含まれています。テストの一環として、アプリがタブレットや他の大画面デバイスで最適に表示されることを確認してください。

まずは Android Studio で Android Emulator 用に仮想デバイスをセットアップするか、デバイス メーカー パートナーの大画面デバイスの Android 13 を用意します。

大画面向けの開発を始めたばかりの場合は、大画面と折りたたみ式デバイスに関するガイドを確認して、最新のデバイスで優れたエクスペリエンスを構築する最新のガイダンスと手法をご覧ください。

ここでは、アプリの新機能やテスト項目に関するアイデアを紹介します。

大画面向けに最適化された OS

システム UI の改良により、通知、クイック設定、ロック画面、概要、ホーム画面などが、大画面でも美しく簡単に表示されるようになっています。

大画面では、通知シェードがスペースを効果的に利用して、クイック設定と通知が新たに 2 列のレイアウトで表示されます。ロック画面でも 2 列の大きなレイアウトを使用して通知と時計をハイライト表示するほか、設定などのシステムアプリも最適化されています。

大画面のレイアウトでは、2 列レイアウトでより多くのコンテンツが表示されます。

その他の変更についても、大画面での重要な操作を容易にすることを重視しています。たとえば、タブレットのロック画面のパターンと PIN コントロールが画面の端に表示され、簡単にアクセスできるようになりました。また、画面の反対側をタップするだけで、PIN / パターン コントロールをその位置に表示できます。

折りたたみ式デバイスについては、ホーム画面のグリッドを最適化し、折りたたみと展開の切り替えをスムーズにして、ユーザーが外部の 1 画面から展開した大きな画面にシームレスに移行できるようにしました。これにより、ユーザーの選択の柔軟性を維持しながら連続性が強化されました。

デベロッパー向け: メディア プロジェクションの変更

12L 以降では、サーフェスで仮想ディスプレイをレンダリングする際に、ImageViewcenterInside オプションと同様のプロセスを使用して、仮想ディスプレイがサーフェスに合わせてスケーリングされます。

この新しいスケーリング方法により、適切なアスペクト比を維持しながら、サーフェス画像のサイズを最大化することで、テレビや他の大型ディスプレイに画面をキャストしやすくなります。

詳しくは、大画面でのメディア プロジェクションをご覧ください。

パワフルで直感的なマルチタスク

大画面のタブレット、Chromebook、折りたたみ式デバイスは、マルチタスクに使用されることが多くなっています。新しい生産性向上機能により、マルチタスクがさらに強力かつ直感的になります。

新しいタスクバーが導入され、アプリの起動と切り替えが簡単になっています。ジェスチャーを使用すれば、タスクバーがさらに便利になります。ドラッグ&ドロップで分割画面モードに切り替えられ、上にスワイプすればホームに戻ります。ジェスチャー ナビゲーションでは、クイック スイッチ ジェスチャーによって、最近使ったアプリをすばやく切り替えることができます。タスクバーを長押しすれば、表示 / 非表示をいつでも切り替えられます。

タスクバーを使用すると、アプリの起動と切り替えをすばやく行い、ドラッグ&ドロップで分割画面モードに切り替え、上にスワイプしてホームに戻ることができます。

分割画面モードでアプリを実行する方法はマルチタスクでは一般的です。分割画面の検出と使用がこれまでになく簡単になっています。ユーザーは、お気に入りのアプリをタスクバーから分割画面に直接ドラッグ&ドロップできるようになりました。また、概要画面の新しい分割アクションによって、タップするだけで分割画面モードを開始することができます。

分割画面をよりシームレスに使用できるように、Android 12 以降では、サイズ変更可能かどうかに関係なく、すべてのアプリからマルチウィンドウ モードに移行できるようになっています。

デベロッパー向け: 分割画面モードでアプリをテストする

分割画面モードが使いやすくなり、Android 12 ではすべてのアプリを分割画面モードにすることが可能になったことから、アプリを分割画面モードでテストすることを強くおすすめします。

デベロッパー向け: インセット サイズの動的な変更を処理する

新しいインセット API は導入されていませんが、新しいタスクバーがインセットとしてアプリにレポートされます。

ジェスチャー ナビゲーションと併用すると、タスクバーを動的に非表示または表示できます。アプリがすでにインセット情報を使用して UI を描画している場合は、アプリが再開状態になったときにインセットのサイズが変化する可能性があることを考慮する必要があります。このような場合は、システムバー インセットで説明されているように、アプリで setOnApplyWindowInsetsListener を呼び出して、インセットのディメンションの変更を処理する必要があります。

互換性の向上

多くのアプリがすでに大画面デバイス向けに最適化され、レスポンシブ レイアウト、マルチウィンドウ モードのサポート、画面サイズとデバイスの形状の変化に影響を受けない連続性といった優れたエクスペリエンスを提供しています。

まだ最適化されていないアプリのために、互換モードのビジュアルと安定性が改善されました。ユーザーに優れたエクスペリエンスを提供し、デフォルトの状態でもアプリを美しく表示できるようになっています。

互換性モードの改善により、大画面用に最適化されていないアプリのユーザー エクスペリエンスが向上します。

レターボックス表示用の UI を改善するために、デバイス メーカーがオーバーレイ構成を通じてさまざまなオプションをカスタマイズできるようにしました。たとえば、デバイス メーカーはアプリのアスペクト比の構成、アプリ ウィンドウでの角丸の適用、ステータスバーの透明度の構成が可能になっています。

デベロッパー向け: 互換モードでアプリを確認する

アプリが画面サイズやデバイスの形状の変化に合わせて最適化されていない場合は、互換モードで起動することがあります。互換モードでアプリをテストして、アプリが適切に表示されて機能するか、確認することをおすすめします。

詳しくは、レターボックス表示の強化をご覧ください。

パーム リジェクションを改善する

大画面はタッチペン入力に最適なデバイスです。しかし、ユーザーがタッチペンを使用して描画、書き込み、またはアプリの操作を行うと、手のひらが画面に触れることがあります。このタッチイベントが、手のひらでの偶発的なタッチとして認識されて無視される前に、アプリに報告される場合があります。

Android 13(API レベル 33)より前のバージョンでは、ACTION_CANCELMotionEvent をディスパッチすることにより、手のひらでのタッチイベントをキャンセルします。Android 13 では、モーション イベント オブジェクトに FLAG_CANCELED が追加され、パーム リジェクションの識別が強化されています。

手のひらでのタッチが唯一のタッチイベント ポインタである場合、モーション イベント オブジェクトに ACTION_CANCELFLAG_CANCELED が設定され、イベントがキャンセルされます。他のポインタがダウンしている場合、Android 13 では ACTION_POINTER_UPFLAG_CANCELED が設定されます。

デベロッパー向け: タッチイベントのリスナーとハンドラを更新する

Android 12(API レベル 32)以前の場合、パーム リジェクションの検出は、シングル ポインタ タッチイベントでのみ可能です。手のひらでのタッチが唯一のポインタである場合は、モーション イベント オブジェクトに ACTION_CANCEL が設定され、イベントはキャンセルされます。他のポインタがダウンしている場合、システムは ACTION_POINTER_UP を設定しますが、パーム リジェクション検出には不十分です。いずれの場合も、FLAG_CANCELED は設定されません。

Android 13 では、タッチイベントのリスナーとハンドラを更新し、ACTION_POINTER_UP を受信したときに FLAG_CANCELED を確認するようにして、パーム リジェクションやその他のキャンセルされたイベントを検出して処理できるようにしています。

大画面向けのその他のアップデートとリソース

大画面での Google Play の変更点

タブレット、折りたたみ式デバイス、ChromeOS デバイスで最適なアプリ エクスペリエンスを簡単に見つけられるようにするため、Google Play ではデバイス向けに最適化されたアプリをハイライト表示する変更を行っています。

各アプリの品質を大画面アプリの品質に関するガイドラインに基づいて評価する新しいチェックを追加し、Google Play がデバイスに最適なアプリを見つけられるようにしています。アプリが大画面向けに最適化されていない場合、大画面のユーザーにはアプリの Play ストアの掲載情報ページに注意書きが表示され、使用中のデバイスに最適なアプリを見つけることができるようになっています。

また、2021 年 8 月に発表されたとおり、Google Play は、大画面専用アプリのレーティングを導入する予定です。これにより、ユーザーが大画面デバイスでのアプリの動作を評価できるようになります。

Jetpack WindowManager によるアクティビティの埋め込み

アクティビティの埋め込みでは、大画面の広い表示領域を利用して、リスト / 詳細パターンなど複数のアクティビティを一度に表示できます。アプリのリファクタリングはほとんどありません。XML 構成ファイルを作成するか、Jetpack WindowManager API 呼び出しを行うことで、アプリのアクティビティを上下または左右に並べて表示できます。その他はシステムによって処理され、作成した構成に基づいて表示方法が決定されます。アプリが複数のアクティビティを使用している場合は、アクティビティの埋め込みを試してみることをおすすめします。詳細については、アクティビティの埋め込みをご覧ください。

デバイスの向きのリクエスト

標準のスマートフォンとは異なり、折りたたみ式デバイスやタブレットは横向きにも縦向きにも使用されます。タブレットは横長の位置にドッキングされているのが一般的ですが、折りたたみ式デバイスは折りたたまれた向きに合わせた配置になります。

アプリによっては、縦向きまたは横向きに固定することを想定し、デバイスの向きにかかわらず、向きが変わることを望まない場合があります(screenOrientation マニフェストをご覧ください)。これは引き続きサポートされますが、デバイス メーカーには、優先する向きに対するアプリのリクエストをオーバーライドするという選択肢もあります。

Android 12(API レベル 31)以上では、指定されている向きにかかわらず、デバイス メーカーが個々のデバイス画面(折りたたみ式デバイスのタブレット サイズ画面など)を構成できます。縦向きのアプリでディスプレイが横向きである場合、縦向きのレターボックス表示にすることが可能です。仕様を無視することで、Android は、常にアプリの向きを維持しながらアスペクト比は固定してアプリを表示するというデベロッパーの意図に沿いつつ、アプリのユーザビリティを最適に保つことができます。

ただし、最適なユーザー エクスペリエンスを実現するには、レスポンシブ レイアウトでアプリを設計し、600 dp を超えるデバイスの縦向きと横向きの両方で使用できる画面スペースを、フルに活用できるようにします。

大画面のパートナー デバイスで Android 13 を入手する

Google は、デバイス メーカーのパートナーと提携して、大画面デバイスで Android 13 をお試しいただけるようにしました。対象となる大画面デバイスのリストと、利用可能なベータ版ビルドの詳細については、以下のサイトにアクセスしてご確認ください。

アップデートとサポートについては、各デバイス メーカーが Android 13 ベータ版のサイトでリンクしているリソースをご覧ください。なお、ベータ版へのアップデートは各パートナーにより直接提供され、登録やサポートも各パートナーが独自に行います。

テスト項目

テストを開始する前に、Android Studio で Android Emulator 用に仮想デバイスをセットアップするか、デバイス メーカー パートナーの大画面デバイスの Android 13 を用意します。デバイスのセットアップが完了したら、一般的な大画面ユースケースでアプリをテストして、アプリが想定どおりに応答することを確認します。以下に、大画面向けのアプリの最適化に役立つ関連リソースへのリンクとともに、推奨項目をいくつか示します。

テスト項目 リソース
画面サイズ、デバイスの形状、回転

デバイスの形状の変化(折りたたみ式デバイスを広げる、テーブルトップ モードにするなど)によって画面サイズが変わった場合に、アプリがどう応答するかを確認します。また、それぞれの状態でデバイスを回転させて、アプリが最適な応答を行うかを確認してください。

ドキュメント サンプル Codelabs 技術セッション
タスクバーの操作と分割画面モード

タスクバーを大画面に表示したときのアプリの応答を確認します。アプリの UI がタスクバーによってカットされたりブロックされたりしていないことを確認します。タスクバーを使用して分割画面モードとマルチウィンドウ モードの切り替えを試し、またアプリと他のアプリをすばやく切り替えるテストを行います。

アプリの向きが固定されていて、サイズ変更できない場合は、レターボックスなどの互換性モードによる調整にアプリがどのように反応するかを確認します。

ドキュメント サンプル 技術セッション
マルチ ウィンドウ モード

大画面(600 dp 以上)のマルチウィンドウ モードで、特に resizeableActivity="false" を設定した場合のアプリの反応を確認します。

アプリで resizeableActivity="true" を設定する場合は、小さい画面(600 dp 未満)のマルチウィンドウ モードで実行したときのアプリの反応も確認してください。

アプリで Display.getRealSize()Display.getRealMetrics() などの Display API を使用している場合は、代わりに Jetpack WindowManager ライブラリの WindowMetrics API を使用します。

ドキュメント サンプル 技術セッション
メディア プロジェクション

アプリでメディア プロジェクションを使用している場合は、大画面デバイスでメディアの再生、ストリーミング、キャストを行う際のアプリの反応を確認します。折りたたみ式デバイスでのデバイスの形状の変化も考慮する必要があります。

ドキュメント サンプル 技術セッション
カメラ プレビュー

カメラアプリについて、アプリがマルチウィンドウ モードまたは分割画面モードの画面の一部に制限されている場合に、カメラ プレビュー UI が大画面でどのように反応するかを確認します。また、折りたたみ式デバイスの形状の変化にアプリが対応しているかも確認します。

ドキュメント