最終更新日: 2025 年 12 月 2 日
2. デバイスタイプ
2.2. ハンドヘルドの要件
2.2.1. ハードウェア
(32 ビット ABI の有無にかかわらず)64 ビット ABI のサポートを宣言し、ActivityManager.isLowRamDevice() で false を返す場合、ハンドヘルド デバイス実装は:
- [7.1.4.2/H-2-1] Vulkan 1.1 をサポートしなければなりません。
2.2.3. ソフトウェア
アプリのライブ情報通知は、アプリがプロモーションの特性をすべて満たしている場合にプロモートできます。このドキュメントでは、このような通知のことをプロモートされたライブ更新通知と呼びます。ハンドヘルド デバイス実装は、次の要件に従ってプロモートされたライブ情報通知を目立つように表示しなければなりません。
API レベル 36.1 以上を宣言する場合、ハンドヘルド デバイス実装は:
[3.8.3.1/H-0-1] プロモートされたライブ情報通知をロック画面の目立つ場所に表示しなければなりません。
[3.8.3.1/H-0-12] プロモートされたライブ情報通知が他の通知とともに表示される場合は、通知スタックのヘッドアップ通知の一番上、および色付き通知(
setColorizedがtrueの場合)の上に表示しなければなりません。- 複数のアプリがプロモートされたライブ情報通知の対象となる場合、通知シェードとロック画面内に表示するプロモートされたライブ情報通知の順序を決定しても構いません。
[3.8.3.1/H-0-2] プロモートされたライブ情報通知を開いた状態で表示しなければなりません。
[3.8.3.1/H-0-3] 上記の開かれた通知を閉じるためのユーザー アフォーダンスを提供してはなりません。
[3.8.3.1/H-0-4] プロモートされたライブ情報通知では、
StyleSpanまたはUnderlineSpanで提供されるとおり、テキスト コンテンツの基本スタイル(太字、斜体、下線)を表示しなければなりません。[3.8.3.1/H-0-5] プロモートされたライブ情報通知には、標準アクション オブジェクトのみを(
Notification.Actionを介して)表示し、入力ボックス、返信ボタン、コンテキスト アクションなどの標準以外のアクション オブジェクトを(addRemoteInput()、setContextual()を介して)非表示にしなければなりません。通知に標準以外のアクション オブジェクトが含まれている場合も同様です。[3.8.3.1/H-0-6]
Notification.getSmallIcon()を含まなければならないプロモートされたライブ情報通知については(SDK ドキュメントではステータス チップと呼ばれる)コンパクトな表現を表示しなければなりません。[3.8.3.1/H-0-7] 他のフィールドはコンパクトな表現では省略可能ですが、コンパクトな表現を開くことが可能な場合は必ず、
Notification.getShortCriticalText()が存在する場合はそれを、Notification.getShortCriticalTextが存在しない場合はNotification.whenを表示しなければなりません。[3.8.3.1/H-0-8] プロモートされたライブ表示通知が複数ある場合は、そのうちの少なくとも 1 つをステータスバーにコンパクトな表現として表示しなければなりません。
[3.8.3.1/H-0-9] ユーザーがコンパクトな表現をタップしたときに、関連付けられた通知を表示するか(推奨)、関連付けられたアプリを(
Notification.contentIntentを介して)開かなければなりません。[3.8.3.1/H-0-13] 関連付けられた通知には、通知シェードで利用可能なものと同じコンテンツをすべて表示しなければなりません。
[3.8.3.1/H-0-10] 個々のアプリの通知のプロモートされた表示を無効または有効にするユーザー アフォーダンスを提供しなければなりません。
[3.8.3.1/H-0-11] すべてのライブ情報通知を正しく表示しなければなりません。これには、プロモーション特性を満たしていない、または一部しか満たしていない、プロモート対象外のライブ情報通知も含まれます(ただし、これらに限定されません)。このようなプロモート対象外の通知は、プロモート対象外の状態で表示しなければなりません。
2.2.5. セキュリティ モデル
android.hardware.telephony のサポートを宣言する場合、デバイス実装は:
- [9.5/H-1-1]
UserManager.isHeadlessSystemUserModeをtrueに設定してはなりません。
2.5. 自動車の要件
2.5.1. ハードウェア
自動車デバイス実装は:
- [7.1.1.1/A-0-3] グラフィック バッファが内蔵ディスプレイの最高解像度と同程度以上である GPU 合成をサポートしなければなりません。
Vulkan のサポートが含まれる場合、自動車デバイス実装は:
- [7.1.4.2/A-1-1] Android ベースライン 2021 プロファイルで規定されている要件を満たさなければなりません。
Configuration.isScreenHdr() を通じてハイ ダイナミック レンジ表示のサポートを主張する場合、自動車デバイス実装は:
- [7.1.4.5/A-1-1] 拡張機能
EGL_EXT_gl_colorspace_bt2020_pq、EGL_EXT_surface_SMPTE2086_metadata、EGL_EXT_surface_CTA861_3_metadata、VK_EXT_swapchain_colorspace、VK_EXT_hdr_metadataのサポートをアドバタイズしなければなりません。
自動車デバイス実装は:
- [7.1.4.6/A-0-1] システム プロパティ
graphics.gpu.profiler.supportを介して、デバイスが GPU プロファイリングをサポートしているかどうかをレポートしなければなりません。
システム プロパティ graphics.gpu.profiler.support を介してサポートを宣言する場合、自動車デバイス実装は:
[7.1.4.6/A-1-1] Perfetto ドキュメントで規定されている GPU カウンタと GPU RenderStages のスキーマに準拠する protobuf トレースを出力としてレポートしなければなりません。
[7.1.4.6/A-1-2]
gpu counter traceパケット proto に従い、デバイスの GPU カウンタに沿う値をレポートしなければなりません。[7.1.4.6/A-1-3] レンダリング ステージ トレース パケット proto に従い、デバイスの GPU RenderStage に沿う値をレポートしなければなりません。
[7.1.4.6/A-1-4] power/gpu_frequency の形式で指定した GPU 周波数トレースポイントをレポートしなければなりません。
自動車デバイス実装は:
- [7.1.5/A-0-1] アップストリームの Android オープンソース コードで実装されたレガシーアプリ互換モードのサポートを含まなければなりません。つまり、デバイス実装は、互換モードが有効になるトリガーまたはしきい値を変更してはなりません。また、互換モード自体の動作を変更してはなりません。
ペリフェラル モードで動作するコントローラを備えた USB ポートを含む場合、自動車デバイス実装は:
- [7.7.1/A-1-1] Android Open Accessory(AOA)API を実装しなければなりません。
ホストモードをサポートする USB ポートが含まれる場合、自動車デバイス実装は:
- [7.7.2/A-1-1] Android SDK ドキュメントに記載されているとおり、USB オーディオ クラスを実装しなければなりません。
USB 周辺機器が接続されている間に API AudioManager.getDevices() が呼び出された場合:
[7.8.2.2/A-1-1] USB オーディオ端子タイプのフィールドが
0x0302であれば、タイプAudioDeviceInfo.TYPE_USB_HEADSET、ロールisSink()のデバイスをリストしなければなりません。[7.8.2.2/A-1-2] USB オーディオ端子タイプのフィールドが
0x0402であれば、タイプAudioDeviceInfo.TYPE_USB_HEADSET、ロールisSink()のデバイスをリストしなければなりません。[7.8.2.2/A-1-3] USB オーディオ端子タイプのフィールドが
0x0603であれば、タイプAudioDeviceInfo.TYPE_USB_HEADSET、ロールisSink()のデバイスをリストしなければなりません。[7.8.2.2/A-1-4] USB オーディオ端子タイプのフィールドが
0x0400であれば、タイプAudioDeviceInfo.TYPE_USB_HEADSET、ロールisSink()のデバイスをリストしなければなりません。
2.5.3. ソフトウェア
自動車デバイス実装は:
- [3.2.3.1/A-0-2] SDK ドキュメントに記載されているとおり、インテント
ACTION_GET_CONTENT、ACTION_OPEN_DOCUMENT、ACTION_OPEN_DOCUMENT_TREE、ACTION_CREATE_DOCUMENTを処理するアプリを持ち、DocumentsProviderAPI を使用してドキュメント プロバイダ データにアクセスするユーザー アフォーダンスを提供しなければなりません。
アクティビティの埋め込みを使用して、自動車デバイス実装の設定アプリに分割機能を実装する場合、デバイス実装は:
- [3.2.3.1/A-1-1] 分割機能がオンの場合に、
Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITYインテントを処理するアクティビティがなければなりません。アクティビティはandroid.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINKで保護しなければならず、Settings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URIから解析したインテントのアクティビティを開始しなければなりません。
ユーザーが任意の種類の通話をできるようにする場合、自動車デバイス実装は:
[7.4.1.2/A-1-1] フィーチャー トグル
android.software.telecomを宣言しなければなりません。[7.4.1.2/A-1-2] telecom フレームワークを実装しなければなりません。
2.5.4. パフォーマンスと電力
[8.1/A-0-1] 一貫したフレーム レイテンシ。一貫性のないフレーム レイテンシ、またはフレームのレンダリングの遅延は、1 秒間に 5 フレームを超えて発生してはならず、1 秒間に 1 フレーム未満であるべきです。
[8.1/A-0-2] ユーザー インターフェースのレイテンシ。デバイス実装は、Android 互換性テストスイート(CTS)で定義された 10,000 リストエントリのリストを 36 秒未満でスクロールすることで、低レイテンシのユーザー エクスペリエンスを実現しなければなりません。
[8.1/A-0-3] タスクの切り替え。複数のアプリが起動されている場合、起動後に実行中のアプリを再起動するまでにかかる時間は 1 秒未満でなければなりません。
自動車デバイス実装は:
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS について android.os.Build.VERSION_CODES.U を返す場合、自動車デバイス実装は:
[8.2/A-1-1] 少なくとも 150 MB/s のシーケンシャル書き込みパフォーマンスを実現しなければなりません。
[8.2/A-1-2] 少なくとも 10 MB/s のランダム書き込みパフォーマンスを実現しなければなりません。
[8.2/A-1-3] 少なくとも 250 MB/s のシーケンシャル読み取りパフォーマンスを実現しなければなりません。
[8.2/A-1-4] 少なくとも 100 MB/s のランダム読み取りパフォーマンスを実現しなければなりません。
[8.2/A-1-5] 少なくとも 50 MB/s の並列シーケンシャル読み取り / 書き込みパフォーマンス(2 つの読み取りと 1 つの書き込み)を実現しなければなりません。
2.5.5. セキュリティ モデル
複数ユーザーをサポートする場合、自動車デバイス実装は:
システム API VisualQueryDetectionService、または、マイクやカメラへのアクセスを示さないクエリ検出の別のメカニズムをサポートする場合、自動車デバイス実装は:
[9.8/A-1-1] クエリ検出サービスがデータを送信できる対象を、システム、
ContentCaptureService、またはデバイス上の音声認識サービス(SpeechRecognizer#createOnDeviceSpeechRecognizer()によって作成されるサービス)に限定しなければなりません。[9.8/A-3-2]
ContentCaptureServiceまたはデバイス上の音声認識サービスを除き、音声情報または動画情報をVisualQueryDetectionServiceから送信できるようにしてはなりません。[9.8/A-3-3] デジタル アシスタント アプリを使用しようとするユーザーの意図をデバイスが検出したとき(カメラを介してユーザーの存在を検出したときなど)は、システム UI にユーザー通知を表示しなければなりません。
[9.8/A-1-4] ユーザークエリが検出された直後に、マイク インジケーターを表示し、検出されたユーザークエリを UI に表示しなければなりません。
[9.8/A-1-5] ユーザーがインストール可能なアプリが、ビジュアル クエリ検出サービスを提供できるようにしてはなりません。
3. ソフトウェア
3.4. ウェブの互換性
3.4.1. WebView の互換性
android.webkit.Webview API の完全な実装を提供する場合、デバイス実装は:
[C-1-3] SDK レベル 35 以下をターゲットとするアプリの WebView がレポートするユーザー エージェント文字列は、次の形式でなければなりません。
Mozilla/5.0 (Linux; Android $(VERSION); \[$(MODEL)\] \[Build/$(BUILD)\]; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 $(CHROMIUM_VER) Mobile Safari/537.36$(VERSION)文字列の値は、android.os.Build.VERSION.RELEASEの値と同じでなければなりません。$(MODEL)文字列は空にしても構いませんが、空でない場合は、値がandroid.os.Build.MODELと同じでなければなりません。「Build/$(BUILD)」は省略しても構いませんが、存在する場合、
$(BUILD)文字列はandroid.os.Build.IDの値と同じでなければなりません。$(CHROMIUM_VER)文字列の値は、アップストリームの Android オープンソース プロジェクトの Chromium バージョンでなければなりません。デバイス実装は、ユーザー エージェント文字列で Mobile を省略しても構いません。
3.8. ユーザー インターフェースの互換性
3.8.14. マルチウィンドウ
- [C-1-2] こちらの SDK に記載されているとおり、
AndroidManifest.xmlファイル内の、アプリによって設定されたandroid:resizeableActivityを使用しなければなりません。
3.9. デバイス管理
3.9.1. デバイスのプロビジョニング
3.9.1.2. 管理対象プロファイルのプロビジョニング
android.software.managed_users を宣言する場合、デバイス実装は:
- [C-1-1]
android.software.device_adminを宣言し、Device Policy Controller(DPC)アプリを新しい管理対象プロファイルの所有者にできる API を実装しなければなりません。
3.9.4. デバイス ポリシー管理ロールの要件
android.software.device_adminまたは android.software.managed_users を宣言する場合、デバイス実装は:
- [C-1-1] セクション 9.1 で定義されているとおり、デバイス ポリシー管理のロールをサポートしなければなりません。デバイス ポリシー管理ロールを保持するアプリは、
config_devicePolicyManagementをパッケージ名に設定することで定義しても構いません。アプリがプリロードされていない限り、パッケージ名の後にコロン(:)と署名証明書を付けなければなりません。
3.9.5. デバイス ポリシー解決フレームワーク
android.software.device_adminまたは android.software.managed_users を宣言する場合、デバイス実装は:
- [C-1-1] デバイス ポリシー解決フレームワークに記載されているようにデバイス ポリシーの競合を解決しなければなりません。
3.18. 連絡先
カスタム ローカル アカウント: デバイスにのみ保存され、AccountManager のアカウントに関連付けられていない未加工連絡先のアカウントであって、ACCOUNT_NAME 列と ACCOUNT_TYPE 列の両方が少なくとも 1 つの非 null 値で作成されるもの。
デバイス実装がカスタム ローカル アカウントを使用する場合:
- [C-1-3] デフォルト ローカル アカウントでサードパーティ アプリによって挿入される(
ACCOUNT_NAMEとACCOUNT_TYPEに null 値を設定することで挿入される)未加工連絡先は、カスタム ローカル アカウントに挿入されなければなりません。
- [C-1-3] アカウントの指定なしでサードパーティ アプリによって挿入される未加工連絡先は、デバイスのデフォルトの連絡先アカウントに挿入されなければなりません。デフォルトの連絡先アカウントが
DEFAULT_ACCOUNT_STATE_LOCALまたはDEFAULT_ACCOUNT_STATE_NOT_SETである場合、これらの未加工連絡先はカスタム ローカル アカウントに保存されなければなりません。
5. マルチメディアの互換性
5.1. メディア コーデック
5.1.3. オーディオ コーデックの詳細
| 形式 / コーデック | 詳細 | サポートされるファイル形式 / コンテナ形式 |
|---|---|---|
| G.711 μ-law および A-law | 8 kHz でサンプリングしたモノラル / ステレオ / 5.1 コンテンツをサポート |
|
| MPEG-4 AAC プロファイル (AAC LC) |
標準サンプリング レート 8~48 kHz のモノラル / ステレオ / 5.0 / 5.1 コンテンツをサポート。 |
|
| MPEG-4 HE AAC プロファイル(AAC+) | 標準サンプリング レート 16~48 kHz のモノラル / ステレオ / 5.0 / 5.1 コンテンツをサポート。 |
|
| MPEG-4 HE AACv2 プロファイル(Enhanced AAC+) |
標準サンプリング レート 16~48 kHz のモノラル / ステレオ / 5.0 / 5.1 コンテンツをサポート。 |
|
| AAC-ELD(Enhanced Low Delay AAC) | 標準サンプリング レート 16~48 kHz のモノラル / ステレオ コンテンツをサポート。 |
|
| USAC | 標準サンプリング レート 16~48 kHz のモノラル / ステレオ / 5.0 / 5.1 コンテンツをサポート。 | MPEG-4(.mp4、.m4a) |
| AMR-NB | 8 kHz でサンプリングされた 4.75~12.2 kbps | 3GPP(.3gp) |
| AMR-WB | 16 kHz でサンプリングされた、6.60 kbit/s~23.85 kbit/s の 9 種類のレート(AMR-WB、Adaptive Multi-Rate - Wideband Speech Codec で定義) | 3GPP(.3gp) |
| FLAC | エンコーダとデコーダの両方について: 少なくともモノラルモードとステレオモードをサポートしなければなりません。192 kHz までのサンプルレートをサポートしなければなりません。16 ビットと 24 ビットの解像度をサポートしなければなりません。FLAC 24 ビット オーディオ データ処理が浮動小数点オーディオ構成で利用できなければなりません。 |
|
| MP3 | モノラル / ステレオの 8~320 Kbps 固定ビットレート(CBR)または可変ビットレート(VBR) |
|
| MIDI | MIDI タイプ 0 と 1。DLS バージョン 1 と 2。XMF と Mobile XMF。着信音形式 RTTTL/RTX、OTA、iMelody をサポート。 |
|
| Vorbis | デコード: サンプリング レート 8,000、12,000、16,000、24,000、48,000 Hz のモノラル、ステレオ、5.0、5.1 のコンテンツをサポート。 エンコード: サンプリング レート 8,000、12,000、16,000、24,000、48,000 Hz のモノラル、ステレオのコンテンツをサポート。 |
|
| PCM(WAVE) | PCM コーデックは 16 ビットのリニア PCM と 16 ビット浮動小数点をサポートしなければなりません。WAVE エクストラクタは 16 ビット、24 ビット、32 ビットのリニア PCM と 32 ビット浮動小数点をサポートしなければなりません(最大レートはハードウェアの上限値)。サンプリング レートは 8 kHz から 192 kHz までをサポートしなければなりません。 | WAVE(.wav) |
| Opus | デコード: サンプリング レート 8,000、12,000、16,000、24,000、48,000 Hz のモノラル、ステレオ、5.0、5.1 のコンテンツをサポート。 エンコード: サンプリング レート 8,000、12,000、16,000、24,000、48,000 Hz のモノラル、ステレオのコンテンツをサポート。 |
|
5.5. オーディオの再生
5.5.4. オーディオ オフロード
オーディオ オフロード再生をサポートする場合、デバイス実装は:
- [C-SR-2] AAC、MP3、OPUS、PCM 形式のオフロード再生を実装することを強く推奨します。
5.6. オーディオの再生
| デバイスと宣言 | RTL(ミリ秒) | MAD(ミリ秒) | ループバック パス |
|---|---|---|---|
| ハンドヘルド | 250 200 | 30 25 | スピーカー / マイク、アナログ 3.5 mm(サポートされている場合)、USB(サポートされている場合) |
| >= MPC_T (13) | 80 | 15 | 少なくとも 1 つのパス |
| FEATURE_AUDIO_LOW_LATENCY | 50 | 10 | 少なくとも 1 つのパス |
| FEATURE_AUDIO_PRO | 25 | 5 | 少なくとも 1 つのパス |
| FEATURE_AUDIO_PRO | 20 | 5 | アナログ(サポートされている場合) |
| FEATURE_AUDIO_PRO | 25 | 5 | USB(アナログがサポートされていない場合) |
5.12. HDR 動画
デバイス実装に FEATURE_HdrEditing をサポートするコーデックが含まれる場合、デバイスは:
HDR ディスプレイの要件
デバイス実装が ADATASPACE_TRANSFER_HLG でエンコードされたバッファ コンテンツを受け取り、そのコンテンツが SurfaceControl.Transaction#setBuffer を通じてディスプレイに送信される場合、以下の要件が適用されます。
- [C-8-1] BT.2408-7 のグラフィック ホワイトに関する推奨事項に従わなければなりません。また、そのコンテンツを表示する際は必ず、最大で SDR コンテンツの 4.926 倍の大きさにしなければなりません。
6. デベロッパー ツール、開発者向けオプションの互換性
6.1. デベロッパー ツール
デバイス実装は:
- [C-0-10] 次のイベントを省略せずに記録し、
cmd statsシェルコマンドとStatsManagerシステム API クラスからアクセスして利用できるようにしなければなりません。- ActivityForegroundStateChanged
- AnomalyDetected
- AppBreadcrumbReported
- AppCrashOccurred
- AppStartOccurred
- BatteryLevelChanged
- BatterySaverModeStateChanged
- BleScanResultReceived
- BleScanStateChanged
- ChargingStateChanged
- DeviceIdleModeStateChanged
- ForegroundServiceStateChanged
- GpsScanStateChanged
- InputDeviceUsageReported
- JobStateChanged
- KeyboardConfigured
- KeyboardSystemsEventReported
- PluggedStateChanged
- PressureStallInformation
- ScheduledJobStateChanged
- ScreenStateChanged
- SyncStateChanged
- SystemElapsedRealtime
- TouchpadUsage
- UidProcessStateChanged
- WakelockStateChanged
- WakeupAlarmOccurred
- WifiLockStateChanged
- WifiMulticastLockStateChanged
- WifiScanStateChanged
7. ハードウェアの互換性
7.1. ディスプレイとグラフィック
7.1.3. 画面の向き
画面の向きを両方ともサポートする場合、デバイス実装は:
- [C-1-1] アプリが画面の向きを動的に横向きまたは縦向きに変更することをサポートしなければなりません。つまり、デバイスは、特定の画面の向きに関するアプリのリクエストを尊重しなければなりません。
7.3. センサー
7.3.5. 気圧計
システム プロパティ sensor.barometer.high_quality.implemented を宣言しているデバイス実装は:
[C-2-1] 300 hPa から 1100 hPa までの圧力測定値を、絶対正確度 +/- 1 hPa でレポートしなければなりません。
[C-2-2] 相対正確度は 100 hPa の範囲で 0.15 hPa でなければなりません。これは、海面における ~1000 m の変化で正確度 ~1 m に相当します。
[C-2-3] ユーザーがデバイスをタップ、スクイーズ、または押したときは、+/- 0.5 hPa の範囲で安定していなければなりません。
[C-2-4] ユーザーがデバイスを手またはポケットで持ち歩いているときは、+/- 0.15 hPa の範囲で安定していなければなりません。
[C-2-5] 5 Hz を超える有効化において 300 ms を超える時定数で平滑化してはなりません。また、センサーの有効化を超えて平滑化を漏洩させてはなりません。
[C-2-6] 日常的な照明や、一般的なソース(Bluetooth、モバイル接続、Wi-Fi など)により導入された無線周波数にさらされるときは、+/- 0.15 hPa の範囲で安定していなければなりません。
7.3.14. カスタム センサー [新規セクション]
差別化されたエクスペリエンスを提供できるようにするため、Android または Wear OS の対象でない追加のセンサーをデバイス実装に含め、プリロードされたアプリからアクセスしても構いません。
このようなセンサーのセンサー ID は:
- [C-0-1] 65536 より大きな値にしなければなりません。
カスタム センサーを健康またはフィットネス関連の目的に使用する場合、そのセンサーを:
- [C-0-2] プラットフォーム権限またはシステム権限で保護しなければなりません。
7.4. データ接続
7.4.3. Bluetooth
FEATURE_BLUETOOTH_LE を宣言する場合、デバイス実装は:
FEATURE_BLUETOOTH_LE_CHANNEL_SOUNDING を宣言する場合、デバイス実装は:
[C-11-1] ハードウェア機能フラグ
android.hardware.bluetooth_le.channel_soundingをレポートしなければなりません。[C-11-2] 1 m の距離における範囲を累積分布関数で計算し、90 パーセンタイルで正確度 +/- 0.5 m 以内でレポートしなければなりません。
7.5. カメラ
デバイス実装にカメラが 1 つ以上含まれ、プリインストールされたカメラアプリが MediaStore.ACTION_MOTION_PHOTO_CAPTURE インテントまたは MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE インテントを処理する場合、デバイス実装は:
[C-1-4] これらのインテントを処理する際、
ACCESS_FINE_LOCATION権限のないアプリに送信する前に、画像メタデータ内のユーザーの位置情報がプリインストールされたカメラアプリによって削除されるようにしなければなりません。[C-1-5] 返されたモーション フォトがモーション フォト形式 1.0 仕様を使用していることを確認しなければなりません。
9. セキュリティ モデルの互換性
9.1. 権限
デバイスに、健康に関連する生体認証データ(心拍数、皮膚温など)を公開するデータ センサーが含まれている場合、それらの生体認証データには以下の要件が適用されます。
[C-0-16] 対応する権限が
HealthPermissionsにある場合は、android.permission-group.HEALTHからのプラットフォーム権限で保護しなければなりません。[C-0-17] 目的のデータ・タイプに該当するプラットフォーム権限がない場合は、カスタムのシステム権限(たとえば
ELECTROCARDIOGRAM)で保護しなければなりません。
android.software.managed_users をレポートする場合、デバイスは:
[C-1-1] 次の権限が管理者によって暗黙的に付与されてはなりません。
- 位置情報(
ACCESS_BACKGROUND_LOCATION、ACCESS_COARSE_LOCATION、ACCESS_FINE_LOCATION) - カメラ(
CAMERA) - マイク(
RECORD_AUDIO) - ボディセンサー(
BODY_SENSORS) - 健康(
HealthPermissions) - 身体活動(
ACTIVITY_RECOGNITION)
- 位置情報(
9.5. マルチユーザー サポート
デバイス実装で上記の追加プロファイルを作成した場合に、デバイス実装にカメラが 1 つ以上含まれ、プリインストールされたカメラアプリが MediaStore.ACTION_MOTION_PHOTO_CAPTURE インテントまたは MediaStore.ACTION_MOTION_PHOTO_CAPTURE_SECURE インテントを処理する場合、デバイス実装は:
- [C-5-1] 追加のユーザー プロファイルからのこれらのインテントの処理を、プライマリ ユーザーのアプリに許可しなければなりません。
9.7. セキュリティ機能
カーネルの整合性と自己保護機能は Android のセキュリティに不可欠です。デバイス実装は:
- [C-0-8] 実行可能コードが読み取り専用、読み取り専用データが実行不可かつ書き込み不可、書き込み可能データが実行不可である場合、厳格なカーネルメモリ保護を実装しなければなりません(例:
CONFIG_DEBUG_RODATAまたはCONFIG_STRICT_KERNEL_RWX)(例:rodataとCONFIG_STRICT_KERNEL_RWXの両方が有効である。
9.8. プライバシー
9.8.2. 記録
デバイス実装は:
- [C-0-2]
MediaProjection.createVirtualDisplay()、VirtualDeviceManager.createVirtualDisplay()、MediaProjection.createVirtualDisplay()、または独自の API を介して、画面キャストまたは画面録画をキャプチャするセッションを開始する有効にするたびに、ユーザーに警告を表示し、ユーザーの画面に表示されているすべての機密情報がキャプチャされることについて、ユーザーの明示的な同意を得なければなりません。
- [C-0-4] 画面キャプチャへのユーザーの同意の表示を今後無効にするアフォーダンスをユーザーに提供してはなりません。ただし、ユーザーが
android.app.role.COMPANION_DEVICE_APP_STREAMINGまたはandroid.app.role.COMPANION_DEVICE_NEARBY_DEVICE_STREAMINGデバイス プロファイルでassociate()を許可したシステムアプリによってセッションが開始される場合を除きます。
9.11. 鍵と認証情報
セキュアロック画面をサポートする場合、デバイス実装は:
[C-1-6] 次のいずれかをサポートしなければなりません。
- IKeymasterDevice 3.0、
- IKeymasterDevice 4.0、
- IKeymasterDevice 4.1、
- IKeyMintDevice version 1、または
- IKeyMintDevice version 2。
- [C-1-6] IKeymasterDevice 3.0 以上、または IKeyMintDevice バージョン 1 以上をサポートしなければなりません。
- [C-SR-1] IKeyMintDevice バージョン 1 をサポートすることが強く推奨されます。
9.11.1. セキュアロック画面、認証、仮想デバイス
アプリによるセカンダリ仮想ディスプレイの作成を許可し、関連する入力イベント(VirtualDeviceManager 経由など)をサポートする場合、デバイス実装は:
[C-10-2] アイドル タイムアウト時にすべての仮想デバイスを切断しなければなりません。
[C-10-3] アイドル タイムアウトがなければなりません。
[C-10-7] 次のいずれかでなければなりません。
- クリップボードの使用を無効にする
- クリップボードをサポートするデバイスごとに、個別のクリップボードを有効にする
- [C-10-15] デバイス間でクリップボードのデータがアクセスされた場合、通知しなければならず、最初の共有時間から 1 分が経過するとコンテンツにアクセスできないようにしなければなりません。
- [C-10-15] クリップボードのデータが、アクセス元のデバイスとクリップボードの保存元デバイスの両方からアクセスされた場合は、通知しなければなりません。
9.18. デベロッパーの確認 [新規セクション]
API レベル 36.1 以上を宣言する場合、デバイス実装は:
- 既知のデベロッパーがアプリの提供元であることを証明するためにデベロッパー確認サービスのサポートを含めても構いません。
API レベル 36.1 以上を宣言し、config.xml で config_developerVerificationServiceProviderPackageName を定義してデベロッパー確認ツールを設定する場合、デバイス実装は:
- [9.18/C-1-1] 新規インストールと既存のアプリのアップデートの両方を含む、アプリ パッケージのインストールごとに、設定済みの
android.content.pm.verify.developer.DeveloperVerifierServiceを呼び出さなければなりません。
API レベル 36.1 以上を宣言する場合、デバイス実装は:
config.xmlでconfig_developerVerificationPolicyDelegatePackageNameを定義して、アクティブなポリシーを設定するためのデリゲートも設定しても構いません。
デベロッパー確認ツールが設定されている場合、デバイス実装は:
- [9.18/C-2-1]
android.content.pm.PackageInstallerで定義されているとおり、デベロッパー確認ツールまたはその設定済みのデリゲートのみがインストール ポリシーを設定できるようにしなければなりません。
パッケージ インストール セッションの一部として確認ツールが呼び出された場合、デバイス実装は:
[9.18/C-3-1] 次の場合はアプリ パッケージをインストールできないようにしなければなりません。
- インストールでデベロッパーの身元確認に失敗した場合。
- インストール セッションのデベロッパーの確認ポリシーが
DEVELOPER_VERIFICATION_POLICY_NONE以外の値に設定されている場合。 - 9.18/C-3-2 または 9.18/C-3-3 のいずれかが適用される場合を除きます。
[9.18/C-3-2] 次の場合はポリシーや確認ステータスに関係なく、アプリ パッケージをインストールできないようにしてはなりません。
- パッケージが Android Debug Bridge(ADB)を介してインストールされる場合。
- パッケージが、設定済みのデベロッパー確認ツールまたはそのインストーラである場合。
[9.18/C-3-3] 次の条件をすべて満たす場合は、アプリ パッケージをインストールできないようにしてはなりません。
- ポリシーが
DEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_WARNまたはDEVELOPER_VERIFICATION_POLICY_BLOCK_FAIL_OPENに設定されている場合。 - 確認が未完了と報告されている場合。
- インストーラが、
DEVELOPER_VERIFICATION_USER_RESPONSE_INSTALL_ANYWAYをレポートして、ユーザーがインストールの続行を明示的にリクエストしたことを示している場合。
- ポリシーが
管理対象デバイスのデバイス オーナーまたは管理対象プロファイルのプロファイル オーナーによって開始されたインストールについては、ポリシーや確認ステータスに関係なく、アプリ パッケージのインストールを許可しても構いませんが、9.18/C-3-1 で説明されているように、インストールできないようにすることが強く推奨されます。