안드로이드 13
2023년 6월 26일
2. 기기 종류
제거된 요구 사항 7.2.3/H-0-5, 7.2.3/H-0-6, 7.2.3/H-0-7
기타 업데이트:
개정판 보기
Presence Calibration 에 지정된 측정 설정 단계를 따를 것을 적극 권장합니다(STRONGLY RECOMMENDED).
요구 사항.
개정판 보기
자동차 기기 구현이 32비트인 경우:
[7.6.1/A-1-1] 다음 밀도가 사용되는 경우 커널 및 사용자 공간에 사용 가능한 메모리는 최소 512MB여야 합니다(MUST).
- 소형/일반 화면에서 280dpi 이하
- 초대형 화면에서 ldpi 이하
- 대형 화면에서 mdpi 이하
[7.6.1/A-1-2] 다음 밀도가 사용되는 경우 커널 및 사용자 공간에 사용 가능한 메모리는 최소 608MB여야 합니다(MUST).
- 소형/일반 화면에서 xhdpi 이상
- 대형 화면에서 hdpi 이상
- 초대형 화면에서 mdpi 이상
[7.6.1/A-1-3] 다음 밀도가 사용되는 경우 커널 및 사용자 공간에 사용 가능한 메모리는 최소 896MB여야 합니다(MUST).
- 소형/일반 화면에서 400dpi 이상
- 큰 화면에서 xhdpi 이상
- 초대형 화면에서 tvdpi 이상
[7.6.1/A-1-4] 다음 밀도가 사용되는 경우 커널 및 사용자 공간에 사용 가능한 메모리는 최소 1344MB여야 합니다(MUST).
- 소형/일반 화면에서 560dpi 이상
- 대형 화면에서 400dpi 이상
- 초대형 화면에서 xhdpi 이상
3. 소프트웨어
개정판 보기
기기 구현이 android.hardware.telephony.calling을 보고하는 경우
android.hardware.telephony
7. 하드웨어 호환성
개정판 보기
9. 보안 모델 호환성
개정판 보기
장치 구현:
[C-0-5] 런타임 권한을 부여하면 안 됩니다(MUST NOT).
사전 설치된다음을 제외하고 앱:- 장치 배송 시 설치되며, 그리고
- 애플리케이션이 사용하기 전에 사용자의 동의를 얻을 수 있습니다.
그것권한 ,
또는
- 런타임 권한은 기본 권한 부여 정책 에 의해 부여되거나 플랫폼 역할을 보유하기 위해 부여 됩니다.
사전 설치된 애플리케이션이 기본 핸들러로 설정된 인텐트 패턴과 연결됨.
- 요구 사항 [C-13-10] 및 9.11.4를 제거했습니다.
2023년 3월 20일
2. 기기 종류
개정판 보기
휴대기기 구현의 설정 애플리케이션이 활동 임베딩을 사용하여 분할 기능을 구현하는 경우 다음을 충족해야 합니다.
- [
C-17-13.2.3.1/ H-1-1 ] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 의도를 처리하는 활동이 있어야 합니다(MUST). 액티비티는android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK
에 의해 보호되어야 하며 Settings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI 에서 파싱된 인텐트의 액티비티를 시작해야 합니다.
- [
개정판 보기
VP9 하드웨어 디코더가 있는 텔레비전 장치 구현이 VP9 디코딩 및 UHD 디코딩 프로필을 지원하는 경우:
- [ 5.3.7 /T-
2-1SR1 ] 프로필 2(10비트 색 심도)를 사용하여 초당 60프레임의 UHD 디코딩 프로필을 지원할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
- [ 5.3.7 /T-
개정판 보기
자동차 기기 구현:
3. 소프트웨어
개정판 보기
새로운 요구 사항 시작
새 연락처의 기본 계정: 연락처 제공자는 새 연락처를 만들 때 기본 계정 설정을 관리하기 위한 API를 제공합니다.
기기 구현이 연락처 앱을 사전 로드하는 경우 사전 로드된 연락처 앱은 다음을 수행합니다.
[C-2-1] 계정 선택을 위한 UI를 시작하고 계정이 선택되면 설정을 연락처 제공자에 저장하기 위해
ContactsContract.Settings.ACTION_SET_DEFAULT_ACCOUNT
텐트를 처리해야 합니다(MUST).[C-2-2] 초기에 계정을 선택하여
ContactsContracts.Contacts.CONTENT_TYPE
및ContactsContract.RawContacts.CONTENT_TYPE
에 대한Intent.ACTION_INSERT and Intent.ACTION_INSERT_OR_EDIT
처리할 때 기본 계정 설정을 준수해야 합니다(MUST).
개정판 보기
[2.2.3으로 이동]
새로운 요구 사항 시작
기기 구현의 설정 애플리케이션이 활동 임베딩을 사용하여 분할 기능을 구현하는 경우 다음을 충족해야 합니다.
- [C-17-1] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 인텐트를 처리하는 활동이 있어야 합니다(MUST). 액티비티는
android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK
에 의해 보호되어야 하며 Settings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI 에서 파싱된 인텐트의 액티비티를 시작해야 합니다.
- [C-17-1] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 인텐트를 처리하는 활동이 있어야 합니다(MUST). 액티비티는
6. 개발자 도구 및 옵션 호환성
개정판 보기
- 원숭이
- [C-0-8] Monkey 프레임워크를 포함하고 애플리케이션에서 사용할 수 있도록 해야 합니다(MUST).
- 원숭이
7. 하드웨어 호환성
개정판 보기
[7.4.9로 이동]
새로운 요구 사항 시작
802.1.15.4에 대한 지원을 포함하고 타사 애플리케이션에 기능을 노출하는 기기 구현은 다음을 충족해야 합니다.
- [C-1-1] android.uwb에서 해당 Android API를 구현해야 합니다(MUST).
- [C-1-2] 하드웨어 기능 플래그 android.hardware.uwb를 보고해야 합니다(MUST).
- [C-1-3] Android 구현에 정의된 모든 관련 UWB 프로필을 지원해야 합니다(MUST).
- [C-1-4] 사용자가 UWB 라디오 켜기/끄기 상태를 전환할 수 있도록 사용자 어포던스를 제공해야 합니다(MUST).
- [C-1-5] UWB 라디오를 사용하는 앱이 UWB_RANGING 권한(NEARBY_DEVICES 권한 그룹 아래)을 보유하도록 강제해야 합니다(MUST).
- [C-1-6] FIRA , CCC , CSA를 비롯한 표준 조직에서 정의한 관련 적합성 및 인증 테스트를 통과할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
개정판 보기
장치 구현
GSM 또는 CDMA 전화 통신 포함android.hardware.telephony
기능을 보고한 후 다음을 수행합니다.- [C-6-1]
SmsManager#sendTextMessage
및SmsManager#sendMultipartTextMessage
문자 메시지 기능을 제공하기 위해CarrierMessagingService
에 대한 해당 호출을 발생시켜야 합니다(MUST).SmsManager#sendMultimediaMessage
및SmsManager#downloadMultimediaMessage
멀티미디어 메시징 기능을 제공하기 위해CarrierMessagingService
에 대한 해당 호출을 발생시켜야 합니다. - [C-6-2]
android.provider.Telephony.Sms#getDefaultSmsPackage
로 지정된 애플리케이션은 SMS 및 MMS 메시지를 보내고 받을 때 SmsManager API를 사용해야 합니다(MUST). packages/apps/Messaging의 AOSP 참조 구현은 이 요구사항을 충족합니다. - [C-6-3]
Intent#ACTION_DIAL
에 응답하는 애플리케이션은*#*#CODE#*#*
형식의 임의 다이얼러 코드 입력을 지원하고 해당TelephonyManager#ACTION_SECRET_CODE
브로드캐스트를 트리거해야 합니다. - [C-6-4]
Intent#ACTION_DIAL
에 응답하는 애플리케이션은 시각적 음성사서함 텍스트 변환을 지원하는 경우VoicemailContract.Voicemails#TRANSCRIPTION
사용하여 시각적 음성메일 텍스트 변환을 사용자에게 표시해야 합니다. - [C-6-5] SIM 카드 정보를 표시하고 제어하는 모든 사용자에게 표시되는 어포던스에서 동등한 그룹 UUID가 있는 모든 SubscriptionInfo 를 단일 구독으로 나타내야 합니다(MUST). 이러한 어포던스의 예로는
Settings#ACTION_MANAGE_ALL_SIM_PROFILES_SETTINGS
또는EuiccManager#ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS
일치하는 설정 인터페이스가 있습니다. - [C-6-6] SIM 카드 설정의 구성 또는 제어를 허용하는 모든 사용자에게 표시되는 어포던스에서 null이 아닌 그룹 UUID 및 기회적 비트가 있는 SubscriptionInfo의 제어를 표시하거나 허용하면 안 됩니다(MUST NOT).
장치 구현
GSM 또는 CDMA 전화 통신 포함android.hardware.telephony
기능을 보고 하고 시스템 상태 표시줄을 제공한 후 다음을 수행합니다.- [씨-
6-7 -1 ] SIM 상태 정보를 제공하는 모든 어포던스에서 사용자에게 표시할 주어진 그룹 UUID 에 대한 대표 활성 구독을 선택해야 합니다(MUST). 이러한 어포던스의 예로는 상태 표시줄 셀룰러 신호 아이콘 또는 빠른 설정 타일이 있습니다. - [C-SR-1] 기기가 음성 통화 중이 아닌 한 대표 구독을 활성 데이터 구독 으로 선택할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 이 동안 대표 구독이 활성 음성 구독일 것을 적극 권장합니다(STRONGLY RECOMMENDED).
장치 구현
GSM 또는 CDMA 전화 통신 포함android.hardware.telephony
기능을 보고한 후 다음을 수행합니다.- [C-6-
87 ] ETSI TS 102 221에 따라 각 UICC에 대한 논리 채널의 최대 수(총 20개)를 열고 동시에 사용할 수 있어야 합니다(MUST). - [C-6-
108 ] 활성 이동통신사 앱(TelephonyManager#getCarrierServicePackageName
으로 지정됨)에 다음 동작을 자동으로 또는 명시적인 사용자 확인 없이 적용하면 안 됩니다(MUST NOT).- 네트워크 액세스 취소 또는 제한
- 권한 취소
- AOSP에 포함된 기존 전원 관리 기능 이상으로 백그라운드 또는 포그라운드 앱 실행 제한
- 앱 비활성화 또는 제거
장치 구현
GSM 또는 CDMA 전화 통신 포함android.hardware.telephony
기능 및 그룹 UUID를 공유하는 모든 활성 비기회 구독이 비활성화되거나 v기기에서 물리적으로 제거되거나 기회주의로 표시되면 기기가 다음을 수행합니다.- [씨-
78 -1] 동일한 그룹에 남아 있는 모든 활성 기회 구독을 자동으로 비활성화해야 합니다(MUST).
GSM 전화 통신은 포함하지만 CDMA 전화 통신은 포함하지 않는 기기 구현은 다음을 충족해야 합니다.
- [씨-
89 -1]PackageManager#FEATURE_TELEPHONY_CDMA
선언하면 안 됩니다(MUST NOT). - [씨-
89 -2] 선호 또는 허용된 네트워크 유형 비트마스크에서 3GPP2 네트워크 유형을 설정하려는 시도 시IllegalArgumentException
발생시켜야 합니다(MUST). - [씨-
89 -3]TelephonyManager#getMeid
에서 빈 문자열을 반환해야 합니다(MUST).
여러 포트 및 프로필이 있는 eUICC를 지원하는 기기 구현은 다음을 충족해야 합니다.
- [씨-
1110 -1]android.hardware.telephony.euicc.mep
기능 플래그를 선언해야 합니다(MUST).
- [C-6-1]
개정판 보기
기기 구현이802.1.15.4에 대한 지원을 포함하고 타사 애플리케이션에 기능을 노출하는 기기 구현은 다음을 충족해야 합니다.android.content.pm.PackageManager
클래스를 통해android.hardware.uwb
기능에 대한 지원을 보고하는 경우,새로운 요구 사항 시작
- [C-1-1] android.uwb에서 해당 Android API를 구현해야 합니다(MUST).
- [C-1-2] 하드웨어 기능 플래그 android.hardware.uwb를 보고해야 합니다(MUST).
- [C-1-3] Android 구현에 정의된 모든 관련 UWB 프로필을 지원해야 합니다(MUST).
- [C-1-4] 사용자가 UWB 라디오 켜기/끄기 상태를 전환할 수 있도록 사용자 어포던스를 제공해야 합니다(MUST).
- [C-1-5] UWB 라디오를 사용하는 앱이 UWB_RANGING 권한(NEARBY_DEVICES 권한 그룹 아래)을 보유하도록 강제해야 합니다(MUST).
- [C-SR-1] FIRA , CCC , CSA 를 비롯한 표준 조직에서 정의한 관련 적합성 및 인증 테스트를 통과할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
- [C-1-
16 ] 무반사 챔버의 1m 거리에서 가시선 환경에서 측정값의 95%에 대해 거리 측정값이 +/-15cm 이내인지 확인해야 합니다(MUST). - [C-1-
27 ] 참조 장치에서 1m 떨어진 거리 측정의 중앙값이 [0.75m, 1.25m] 이내인지 확인해야 합니다. - [C-SR-2] 존재 보정 요구사항 에 지정된 측정 설정 단계를 따를 것을 적극 권장합니다(STRONGLY RECOMMENDED).
Presence Calibration Requirements 에 지정된 측정 설정 단계를 따를 것을 적극 권장합니다(STRONGLY RECOMMENDED).개정판 보기
Android USB 헤드셋 사양 에 정의된 대로 USB-C 커넥터를 사용하고 Android 에코시스템에서 (USB 오디오 클래스)를 구현하는 헤드셋 및 기타 오디오 액세서리와 호환되기 위해 .
2022년 10월 19일
2. 기기 종류
개정판 보기
휴대기기 구현이 잠금 작업 모드 에서 실행되지 않는 경우 콘텐츠가 클립보드에 복사되면 다음을 수행합니다.
- [3.8.17/H-1-1] 데이터가 클립보드에 복사되었다는 확인을 사용자에게 표시해야 합니다(예: '콘텐츠가 복사됨'이라는 미리보기 이미지 또는 경고). 또한 여기에 클립보드 데이터가 장치 간에 동기화되는지 여부를 표시합니다.
3. 소프트웨어
개정판 보기
기기 구현의 설정 애플리케이션이 활동 임베딩을 사용하여 분할 기능을 구현하는 경우 다음을 충족해야 합니다.
- [C-17-1] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 인텐트를 처리하는 활동이 있어야 합니다(MUST). 액티비티는
android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK
에 의해 보호되어야 하며 Settings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI 에서 파싱된 인텐트의 액티비티를 시작해야 합니다.
기기 구현이
VoiceInteractionService
를 지원하고 이 API를 사용하는 애플리케이션을 한 번에 두 개 이상 설치하는 경우 다음을 충족해야 합니다.- [C-18-1] 음성 입력 및 지원을 위한 기본 앱 설정 메뉴를 표시하려면
android.settings.ACTION_VOICE_INPUT_SETTINGS
준수해야 합니다(MUST).
- [C-17-1] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 인텐트를 처리하는 활동이 있어야 합니다(MUST). 액티비티는
개정판 보기
- [C-1-4] WebView를 인스턴스화하는 애플리케이션과 별개의 프로세스에서 '제공된 콘텐츠 또는 원격 URL 콘텐츠를 렌더링해야 합니다(MUST). 특히 별도의 렌더러 프로세스는 더 낮은 권한을 보유하고 별도의 사용자 ID로 실행되어야 하며 앱의 데이터 디렉토리에 대한 액세스 권한이 없고 직접적인 네트워크 액세스 권한이 없으며 Binder를 통해 필요한 최소 시스템 서비스에만 액세스할 수 있어야 합니다. WebView의 AOSP 구현은 이 요구사항을 충족합니다.
7. 하드웨어 호환성
개정판 보기
IEEE 802.11 표준에 정의된 Wi-Fi 절전 모드 지원을 포함하는 기기 구현은 다음을 충족해야 합니다.
[C-3-1] 필수앱이WifiManager.createWifiLock()
및WifiManager.WifiLock.acquire()
를 통해WIFI_MODE_FULL_HIGH_PERF
잠금 또는WIFI_MODE_FULL_LOW_LATENCY
잠금을 획득할 때마다 Wi-Fi 절전 모드를 꺼야 합니다(SHOULD) .
개정판 보기
저전력 블루투스(BLE) 지원을 포함하는 기기 구현은 다음을 충족해야 합니다.
- [C-3-5] 기기가 스캐닝 또는 광고를 위해 BLE를 적극적으로 사용하는 경우 사용자 개인 정보를 보호하기 위해 15분 이하의 RPA(해결 가능 비공개 주소) 시간 초과를 구현하고 시간 초과 시 주소를 회전해야 합니다(MUST). 타이밍 공격을 방지하기 위해 타임아웃 간격도 5~15분 사이에서 무작위로 지정해야 합니다.
7.5.5 카메라 방향
개정판 보기
기기 구현에 전면 또는 후면 카메라가 있는 경우 이러한 카메라는 다음과 같습니다.
- [C-1-1] 카메라의 긴 치수가 화면의 긴 치수와 정렬되도록 방향을 맞춰야 합니다(MUST). 즉, 기기를 가로 방향으로 잡고 있을 때 카메라는 반드시 가로 방향으로 이미지를 캡처해야 합니다. 이는 장치의 자연스러운 방향에 관계없이 적용됩니다. 즉, 세로 기본 장치뿐만 아니라 가로 기본 장치에도 적용됩니다.
다음 기준을 모두 충족하는 장치는 위의 요구 사항에서 면제됩니다.- 이 장치는 폴더블 또는 힌지 디스플레이와 같은 가변 형상 화면을 구현합니다.
- 장치의 접힘 또는 힌지 상태가 변경되면 장치가 세로 기본 방향에서 가로 기본 방향(또는 그 반대)으로 전환됩니다.
9. 보안 모델 호환성
개정판 보기
기기 구현이 보안 잠금 화면을 지원하는 경우 다음을 충족해야 합니다.
- [C-1-6] IKeymasterDevice 4.0, IKeymasterDevice 4.1, IKeyMintDevice 버전 1 또는 IKeyMintDevice 버전 2를 지원해야 합니다(MUST).
개정판 보기
기기가 Android 가상화 프레임워크 API(
android.system.virtualmachine.*
)에 대한 지원을 구현하는 경우 Android 호스트는 다음을 수행합니다.[C-1-3] 업스트림 Android 오픈소스 프로젝트(AOSP)에서 제공되는 시스템/sepolicy 내에 있는 neverallow 규칙을 수정, 생략 또는 교체하면 안 되며(MUST NOT) 정책은 존재하는 모든 neverallow 규칙으로 컴파일해야 합니다(MUST).
기기가 Android 가상화 프레임워크 API(
android.system.virtualmachine.*
)에 대한 지원을 구현하는 경우 모든 보호된 가상 머신 인스턴스:[C-2-4] 업스트림 Android 오픈소스 프로젝트(AOSP)에서 제공되는 system/sepolicy/microdroid 내에 있는 neverallow 규칙을 수정, 생략 또는 교체하면 안 됩니다(MUST NOT).
기기가 Android 가상화 프레임워크 API에 대한 지원을 구현하는 경우 키 관리에 대해 다음을 수행합니다.
- [C-6-2] DICE를 제대로 수행해야 합니다(즉, 올바른 값을 제공해야 함).
그러나 그 수준의 세부 사항까지 갈 필요는 없을 수도 있습니다.
2022년 8월 15일
2. 기기 종류
2.2.1 하드웨어 : 하드웨어 요구 사항이 다음과 같이 변경됩니다.
입력 장치:
개정판 보기
핸드헬드 장치 구현:
- [ 7.2 .3/H-0-5] 뒤로 제스처가 시작되거나 뒤로 버튼(
KEYCODE_BACK
)이 DOWN으로 눌렸을 때 현재 포커스가 있는 창에서OnBackInvokedCallback.onBackStarted()
호출해야 합니다(MUST). - [ 7.2 .3/H-0-6] 뒤로 제스처가 커밋되거나 뒤로 버튼을 놓을 때(UP)
OnBackInvokedCallback.onBackInvoked()
호출해야 합니다(MUST). - [ 7.2 .3/H-0-7] 뒤로 제스처가 커밋되지 않았거나
KEYCODE_BACK
이벤트가 취소된 경우OnBackInvokedCallback.onBackCancelled()
호출해야 합니다(MUST).
PackageManager.FEATURE_WIFI_AWARE
를 선언하여 WiFi NAN(Neighbor Awareness Networking) 프로토콜을 지원하고PackageManager.FEATURE_WIFI_RTT
선언하여 Wi-Fi 위치(Wi-Fi 왕복 시간 — RTT)를 지원하는 기기는 다음을 충족해야 합니다.[ 7.4 .2.5/H-1-1] 범위를 68번째 백분위수에서 160MHz 대역폭에서 +/-1미터(누적 분포 함수로 계산됨), 80MHz 대역폭에서 +/-2미터 이내로 정확하게 보고해야 합니다(MUST). 68번째 백분위수, 68번째 백분위수에서 40MHz 대역폭에서 +/-4미터, 10cm, 1m, 3m, 5m 거리에서 68번째 백분위수에서 20MHz 대역폭에서 +/-8미터 WifiRttManager#startRanging Android API를 통해 관찰됩니다.
[ 7.4 .2.5/H-SR] 90번째 백분위수(누적 분포 함수로 계산됨)에서 160MHz 대역폭에서 +/-1미터 이내, 80MHz에서 +/-2미터 이내로 범위를 정확하게 보고할 것을 적극 권장합니다(STRONGLY RECOMMENDED). WifiRttManager#startRanging Android API 를 통해 관찰된 대로 90번째 백분위수에서 대역폭, 90번째 백분위수에서 40MHz 대역폭에서 +/-4미터, 10cm 거리에서 90번째 백분위수에서 20MHz 대역폭에서 +/-8미터입니다.
Presence Calibration Requirements 에 지정된 측정 설정 단계를 따를 것을 적극 권장합니다(STRONGLY RECOMMENDED).
- [ 7.2 .3/H-0-5] 뒤로 제스처가 시작되거나 뒤로 버튼(
오디오 대기 시간:
개정판 보기
휴대기기 구현이
android.hardware.audio.output
및android.hardware.microphone
선언하는 경우 다음을 충족해야 합니다.- [ 5.6 /H-1-1] 평균 연속 왕복 대기 시간이 500 이어야 합니다(MUST).
800평균 절대 편차가 50 미만인 5회 측정에서 밀리초 이하100ms, 다음 데이터 경로: "스피커에서 마이크", 3.5mm 루프백 어댑터(지원되는 경우), USB 루프백(지원되는 경우).지원되는 경로가 하나 이상 있습니다.
- [ 5.6 /H-1-1] 스피커에서 마이크까지의 데이터 경로를 통한 최소 5회 측정에서 평균 탭-톤 대기 시간이 500밀리초 이하여야 합니다(MUST).
- [ 5.6 /H-1-1] 평균 연속 왕복 대기 시간이 500 이어야 합니다(MUST).
햅틱 입력:
개정판 보기
햅틱 액추에이터가 하나 이상 포함된 휴대기기 구현은 다음을 충족해야 합니다.
- [ 7.10 /H]* 편심 회전 질량(ERM) 햅틱 액추에이터(진동기)를 사용하면 안 됩니다(SHOULD NOT).
- [ 7.10 /H]* 일반적으로 기기를 손으로 잡거나 만지는 위치 근처에 액추에이터를 배치해야 합니다(SHOULD).
- [ 7.10 /H]* android.view.HapticFeedbackConstants , 즉 ( CLOCK_TICK, CONTEXT_CLICK, KEYBOARD_PRESS, KEYBOARD_RELEASE, KEYBOARD_TAP, LONG_PRESS, TEXT_HANDLE_MOVE, VIRTUAL_KEY, VIRTUAL_KEY_RELEASE, CONFIRM, REJECT, G ESTURE_START 및 GESTURE_END).
- [ 7.10 /H]* android.os.VibrationEffect 의 명확한 햅틱 을 위한 모든 공개 상수, 즉(EFFECT_TICK, EFFECT_CLICK, EFFECT_HEAVY_CLICK 및 EFFECT_DOUBLE_CLICK) 및 android.os.VibrationEffect.Composition 의 풍부한 햅틱 을 위한 모든 실현 가능한 공개
PRIMITIVE_*
상수를 구현해야 합니다(SHOULD).(PRIMITIVE_CLICK 및 PRIMITIVE_TICK)(클릭, 틱, LOW_TICK, QUICK_FALL, QUICK_RISE, SLOW_RISE, SPIN, THUD). LOW_TICK 및 SPIN과 같은 이러한 프리미티브 중 일부는 진동기가 상대적으로 낮은 주파수를 지원할 수 있는 경우에만 실현 가능할 수 있습니다.
- [7.10/H]* 해당 진폭 관계를 사용하여 android.view.HapticFeedbackConstants 의 공개 상수를 권장되는 android.os.VibrationEffect 상수에 매핑하기 위한 지침을 따라야 합니다(SHOULD).
- [ 7.10 /H]* 공개 android.os.Vibrator.hasAmplitudeControl() API의 결과가 진동기의 기능을 올바르게 반영하는지 확인해야 합니다(SHOULD).
- [ 7.10 /H]* android.os.Vibrator.hasAmplitudeControl() 을 실행하여 진폭 확장성의 기능을 확인해야 합니다(SHOULD).
휴대기기 구현에 하나 이상의 선형 공진 액추에이터가 포함된 경우 다음을 충족해야 합니다.
인증 사소한 장치 제어:
개정판 보기
- [ 3.8 .16/H-1-5]
ControlsProviderService
및Control
Control.isAuthRequired
API를 통해 타사 애플리케이션에서 등록한 컨트롤에서 앱 지정 사소한 기기 컨트롤을 옵트아웃할 수 있는 사용자 어포던스를 제공해야 합니다(MUST).
- [ 3.8 .16/H-1-5]
MediaStyle 알림:
개정판 보기
핸드헬드 장치 구현이 MediaStyle 알림을 지원하는 경우:
- [3.8.3.1/H-1-SR] 사용자가 적절한 사용 가능한 미디어 경로(예: Bluetooth 장치 및 MediaRouter2Manager 에 제공된 경로) 간에 전환할 수 있도록 시스템 UI에서 액세스하는 사용자 어포던스(예: "출력 전환기")를 제공할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 앱이 MediaSession 토큰 과 함께 MediaStyle 알림을 게시할 때.
2.2.4 성능 및 성능 : 포그라운드 서비스를 실행하는 앱에 대한 새로운 요구 사항입니다.
개정판 보기
2.2.7.1 미디어 : 휴대용 요구 사항 미디어 섹션이 다음과 같이 업데이트되었습니다.
개정판 보기
휴대기기 구현이
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
에 대해android.os.Build.VERSION_CODES.T
반환하는 경우 다음을 충족해야 합니다.- [5.1/H-1-1]
CodecCapabilities.getMaxSupportedInstances()
및VideoCapabilities.getSupportedPerformancePoints()
메서드를 통해 모든 코덱 조합에서 동시에 실행할 수 있는 하드웨어 동영상 디코더 세션의 최대 수를 광고해야 합니다(MUST). - [5.1/H-1-2] 1080p 해상도@30fps에서 동시에 실행되는 모든 코덱 조합에서 하드웨어 동영상 디코더 세션(AVC, HEVC, VP9, AV1 이상)의 인스턴스 6개를 지원해야 합니다(MUST).
- [5.1/H-1-3]
CodecCapabilities.getMaxSupportedInstances()
및VideoCapabilities.getSupportedPerformancePoints()
메서드를 통해 모든 코덱 조합에서 동시에 실행할 수 있는 최대 하드웨어 동영상 인코더 세션 수를 광고해야 합니다(MUST). - [5.1/H-1-4] 1080p 해상도@30fps에서 동시에 실행되는 모든 코덱 조합에서 하드웨어 동영상 인코더 세션(AVC, HEVC, VP9, AV1 이상)의 인스턴스 6개를 지원해야 합니다(MUST).
- [5.1/H-1-5]
CodecCapabilities.getMaxSupportedInstances()
및VideoCapabilities.getSupportedPerformancePoints()
메서드를 통해 모든 코덱 조합에서 동시에 실행할 수 있는 최대 하드웨어 동영상 인코더 및 디코더 세션 수를 광고해야 합니다(MUST). - [5.1/H-1-6] 1080p@30fps 해상도에서 동시에 실행되는 모든 코덱 조합에서 하드웨어 동영상 디코더 및 하드웨어 동영상 인코더 세션(AVC, HEVC, VP9, AV1 이상)의 인스턴스 6개를 지원해야 합니다(MUST).
- [5.1/H-1-7] 부하가 있을 때 모든 하드웨어 동영상 인코더의 1080p 이하 동영상 인코딩 세션에 대해 코덱 초기화 지연 시간이 40ms 이하여야 합니다(MUST). 여기서 로드는 1080p 오디오-비디오 녹화 초기화와 함께 하드웨어 비디오 코덱을 사용하는 동시 1080p에서 720p 비디오 전용 트랜스코딩 세션으로 정의됩니다.
- [5.1/H-1-8] 부하가 있을 때 모든 오디오 인코더에 대해 128kbps 이하의 비트 전송률 오디오 인코딩 세션에 대해 코덱 초기화 지연 시간이 30ms 이하여야 합니다(MUST). 여기서 로드는 1080p 오디오-비디오 녹화 초기화와 함께 하드웨어 비디오 코덱을 사용하는 동시 1080p에서 720p 비디오 전용 트랜스코딩 세션으로 정의됩니다.
- [5.1/H-1-9] 1080p 해상도@30fps에서 동시에 실행되는 모든 코덱 조합에서 보안 하드웨어 동영상 디코더 세션(AVC, HEVC, VP9, AV1 이상)의 인스턴스 2개를 지원해야 합니다(MUST).
- [5.1/H-1-10] 모든 코덱에서 보안 하드웨어 비디오 디코더 세션 인스턴스 1개(총 4개 인스턴스)(AVC, HEVC, VP9, AV1 이상)와 함께 비보안 하드웨어 비디오 디코더 세션 인스턴스 3개를 지원해야 합니다(MUST). 1080p resolution@30fps에서 동시에 실행되는 조합.
- [5.1/ H-1-11] 기기의 모든 하드웨어 AVC, HEVC, VP9 또는 AV1 디코더에 보안 디코더를 지원해야 합니다(MUST).
- [5.1/H-1-12] 동영상 디코더 초기화 지연 시간이 40ms 이하여야 합니다(MUST).
- [5.1/H-1-13] 오디오 디코더 초기화 지연 시간이 30ms 이하여야 합니다(MUST).
- [5.1/H-1-14] AV1 하드웨어 디코더 Main 10, Level 4.1을 지원해야 합니다(MUST).
- [5.1/H-SR] AV1 하드웨어 디코더용 Film Grain을 지원하는 것이 좋습니다.
- [5.1/H-1-15] 4K60을 지원하는 하드웨어 동영상 디코더가 1개 이상 있어야 합니다(MUST).
- [5.1/H-1-16] 4K60을 지원하는 하드웨어 동영상 인코더가 1개 이상 있어야 합니다(MUST).
- [5.3/H-1-1] 로드 중인 1080p 60fps 동영상 세션에 대해 10초에 1프레임 이상(즉, 0.167% 미만의 프레임 드롭) 드롭하면 안 됩니다(MUST NOT). 부하는 하드웨어 비디오 코덱과 128kbps AAC 오디오 재생을 사용하는 동시 1080p에서 720p 비디오 전용 트랜스코딩 세션으로 정의됩니다.
- [5.3/H-1-2] 로드 중인 60fps 동영상 세션에서 동영상 해상도가 변경되는 동안 10초에 1프레임 이상 드롭하면 안 됩니다(MUST NOT). 부하는 하드웨어 비디오 코덱과 128kbps AAC 오디오 재생을 사용하는 동시 1080p에서 720p 비디오 전용 트랜스코딩 세션으로 정의됩니다.
- [5.6/H-1-1] OboeTester 탭-톤 테스트 또는 CTS Verifier 탭-톤 테스트를 사용하여 탭-톤 대기 시간이 80밀리초 이하여야 합니다(MUST).
- [5.6/H-1-2] 하나 이상의 지원되는 데이터 경로에서 왕복 오디오 지연 시간이 80밀리초 이하여야 합니다(MUST).
- [5.6/H-1-3] 짧은 지연 시간 및 스트리밍 구성을 위해 전체 데이터 경로를 통해 지원되는 경우 3.5mm 오디오 잭(있는 경우) 및 USB 오디오를 통한 스테레오 출력에 >=24비트 오디오를 지원해야 합니다(MUST). 대기 시간이 짧은 구성의 경우 앱에서 대기 시간이 짧은 콜백 모드로 AAudio를 사용해야 합니다. 스트리밍 구성의 경우 앱에서 Java AudioTrack을 사용해야 합니다. 낮은 대기 시간 및 스트리밍 구성 모두에서 HAL 출력 싱크는 대상 출력 형식에 대해
AUDIO_FORMAT_PCM_24_BIT
,AUDIO_FORMAT_PCM_24_BIT_PACKED
,AUDIO_FORMAT_PCM_32_BIT
또는AUDIO_FORMAT_PCM_FLOAT
중 하나를 수락해야 합니다. - [5.6/H-1-4] 4개 이상의 채널 USB 오디오 기기를 지원해야 합니다(DJ 컨트롤러에서 노래 미리보기에 사용됨).
- [5.6/H-1-5] 클래스 호환 MIDI 기기를 지원하고 MIDI 기능 플래그를 선언해야 합니다(MUST).
- [5.7/H-1-2] 아래 콘텐츠 복호화 기능으로
MediaDrm.SECURITY_LEVEL_HW_SECURE_ALL
지원해야 합니다(MUST).
최소 샘플 크기 4MiB 최소 하위 샘플 수 - H264 또는 HEVC 32 최소 하위 샘플 수 - VP9 9 하위 샘플의 최소 수 - AV1 288 최소 하위 샘플 버퍼 크기 1MiB 최소 일반 암호화 버퍼 크기 500KiB 최소 동시 세션 수 30 세션당 최소 키 수 20 최소 총 키 수(모든 세션) 80 최소 총 DRM 키 수(모든 세션) 6 메시지 크기 16KiB 초당 해독된 프레임 60fps - [5.1/H-1-1]
2.2.7.2 카메라 : 미디어 성능 클래스 카메라 요구 사항 업데이트.
개정판 보기
휴대기기 구현이
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
에 대해android.os.Build.VERSION_CODES.T
반환하는 경우 다음을 충족해야 합니다.- [7.5/H-1-1] 4k@30fps에서 동영상 캡처를 지원하는 해상도가 최소 12메가픽셀인 기본 후면 카메라가 있어야 합니다(MUST). 기본 후면 카메라는 카메라 ID가 가장 낮은 후면 카메라입니다.
- [7.5/H-1-2] 최소 5메가픽셀 해상도의 기본 전면 카메라가 있어야 하며 1080p@30fps에서 동영상 캡처를 지원해야 합니다(MUST). 기본 전면 카메라는 카메라 ID가 가장 낮은 전면 카메라입니다.
- [7.5/H-1-3] 두 기본 카메라 모두에 대해
android.info.supportedHardwareLevel
속성을FULL
이상으로 지원해야 합니다(MUST). - [7.5/H-1-4] 두 기본 카메라 모두에 대해
CameraMetadata.SENSOR_INFO_TIMESTAMP_SOURCE_REALTIME
지원해야 합니다(MUST). - [7.5/H-1-5] 두 기본 카메라의 ITS 조명 조건(3000K)에서 CTS 카메라 PerformanceTest로 측정한 1080p 해상도의 camera2 JPEG 캡처 지연 시간이 1000ms 미만이어야 합니다(MUST).
- [7.5/H-1-6] 두 기본 카메라의 ITS 조명 조건(3000K)에서 CTS 카메라 성능 테스트로 측정한 카메라 2 시작 지연 시간(첫 번째 미리보기 프레임에 카메라 열기)이 500ms 미만이어야 합니다(MUST).
- [7.5/H-1-8] 기본 후면 카메라에 대해
CameraMetadata.REQUEST_AVAILABLE_CAPABILITIES_RAW
및android.graphics.ImageFormat.RAW_SENSOR
지원해야 합니다(MUST). - [7.5/H-1-9] 720p 또는 1080p @ 240fps를 지원하는 후면 기본 카메라가 있어야 합니다(MUST).
- [7.5/H-1-10] 동일한 방향을 향하고 있는 초광각 RGB 카메라가 있는 경우 기본 카메라에 대해 최소 ZOOM_RATIO가 1.0 미만이어야 합니다(MUST).
- [7.5/H-1-11] 기본 카메라에서 전면-후면 동시 스트리밍을 구현해야 합니다(MUST).
- [7.5/H-1-12] 기본 전면 및 기본 후면 카메라 모두에 대해
CONTROL_VIDEO_STABILIZATION_MODE_PREVIEW_STABILIZATION
지원해야 합니다(MUST). - [7.5/H-1-13] 동일한 방향을 향하고 있는 RGB 카메라가 1대보다 많은 경우 기본 카메라에 대한
LOGICAL_MULTI_CAMERA
기능을 지원해야 합니다(MUST). - [7.5/H-1-14] 기본 전면 및 기본 후면 카메라 모두에 대해
STREAM_USE_CASE
기능을 지원해야 합니다(MUST).
2.2.7.3 하드웨어 : 하드웨어에 대한 미디어 성능 클래스 요구 사항 업데이트.
개정판 보기
휴대기기 구현이
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
에 대해android.os.Build.VERSION_CODES.T
반환하는 경우 다음을 충족해야 합니다.- [7.1.1.1/H-2-1] 화면 해상도가 1080p 이상이어야 합니다(MUST).
- [7.1.1.3/H-2-1] 화면 밀도가 400dpi 이상이어야 합니다(MUST).
- [7.6.1/H-2-1] 물리적 메모리가 8GB 이상이어야 합니다(MUST).
2.2.7.4 성능 : 성능에 대한 미디어 성능 클래스 업데이트.
개정판 보기
휴대기기 구현이
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
에 대해android.os.Build.VERSION_CODES.T
반환하는 경우 다음을 충족해야 합니다.- [8.2/H-1-1] 최소 125MB/s의 순차 쓰기 성능을 보장해야 합니다(MUST).
- [8.2/H-1-2] 최소 10MB/s의 임의 쓰기 성능을 보장해야 합니다(MUST).
- [8.2/H-1-3] 최소 250MB/s의 순차 읽기 성능을 보장해야 합니다(MUST).
- [8.2/H-1-4] 최소 40MB/s의 임의 읽기 성능을 보장해야 합니다(MUST).
2.5.1 하드웨어 : 3축 가속도계 및 3축 자이로스코프 요구 사항과 외부 카메라 요구 사항을 업데이트합니다.
개정판 보기
자동차 기기 구현:
- [ 7.3 .1/A-0-4] Android 자동차 센서 좌표계를 준수해야 합니다(MUST).
- [ 7.3 /A-SR] 3축 가속도계와 3축 자이로스코프를 포함할 것을 적극 권장합니다(STRONGLY_RECOMMENDED).
- [ 7.3 /A-SR]
TYPE_HEADING
센서를 구현하고 보고할 것을 STRONGLY_RECOMMENDED합니다(STRONGLY_RECOMMENDED).
가속도계가 포함된 자동차 기기 구현은 다음을 충족해야 합니다.
- [ 7.3 .1/A-1-1] 최소 100Hz의 주파수까지 이벤트를 보고할 수 있어야 합니다(MUST).
3축 가속도계를 포함하는 기기 구현은 다음을 충족해야 합니다.
- [ 7.3 .1/A-SR] 제한된 축 가속도계용 복합 센서를 구현할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
축이 3개 미만인 가속도계가 포함된 자동차 기기 구현은 다음을 충족해야 합니다.
- [ 7.3 .1/A-1-3]
TYPE_ACCELEROMETER_LIMITED_AXES
센서를 구현하고 보고해야 합니다(MUST). - [ 7.3 .1/A-1-4]
TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED
센서를 구현하고 보고해야 합니다(MUST).
자이로스코프를 포함하는 자동차 기기 구현은 다음을 충족해야 합니다.
3축 자이로스코프를 포함하는 자동차 기기 구현은 다음을 충족해야 합니다.
- [ 7.3 .4/A-SR] 제한된 축 자이로스코프용 복합 센서를 구현할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
3축 미만의 자이로스코프를 포함하는 자동차 기기 구현은 다음을 충족해야 합니다.
- [ 7.3 .4/A-4-1]
TYPE_GYROSCOPE_LIMITED_AXES
센서를 구현하고 보고해야 합니다(MUST). - [ 7.3 .4/A-4-2]
TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED
센서를 구현하고 보고해야 합니다(MUST).
TYPE_HEADING
센서를 포함하는 자동차 기기 구현은 다음을 충족해야 합니다.외부 보기 카메라는 후방 카메라 와 같이 장치 구현 외부의 장면을 이미지화하는 카메라입니다.
블랙박스.자동차 기기 구현에 외부 카메라가 포함된 경우 이러한 카메라에 대해 다음을 충족해야 합니다.
[ 7.5 .5/A-SR] 카메라의 긴 치수가 수평선과 정렬되도록 방향을 잡을 것을 적극 권장합니다(STRONGLY RECOMMENDED).Android 동기화 프레임워크를 지원해야 합니다(SHOULD).카메라 드라이버에 하드웨어 자동 초점 또는 소프트웨어 자동 초점이 구현되어 있을 수 있습니다(MAY).
자동차 기기 구현에 하나 이상의 외부 보기 카메라가 포함되고 EVS(Exterior View System) 서비스를 로드하는 경우 이러한 카메라에 대해 다음을 수행해야 합니다.
- [ 7.5 /A-2-1] 카메라 미리보기를 회전하거나 수평 미러링하면 안 됩니다(MUST NOT).
자동차 기기 구현:
- 타사 애플리케이션에서 사용할 수 있는 하나 이상의 카메라를 포함할 수 있습니다(MAY).
자동차 장치 구현에 하나 이상의 카메라가 포함되어 있고 이를 타사 애플리케이션에서 사용할 수 있도록 하는 경우 다음을 충족해야 합니다.
2.5.5 보안 모델 : 자동차 장치의 카메라 권한에 대한 새로운 요구 사항.
개정판 보기
자동차 기기 구현이
android.hardware.camera.any
선언하는 경우 다음을 충족해야 합니다.[ 9.8.2 /A-2-1] 앱이 실시간 카메라 데이터에 액세스할 때 카메라 표시기를 표시해야 합니다(MUST). 섹션 9.1 CDD를 통한 권한 에서 호출된 역할을 보유한 앱에서만 카메라에 액세스하는 경우가 아닌 경우 카메라 표시기를 표시해야 합니다. 식별자 [C-3-X].
[ 9.8.2 /A-2-2] 가시적인 사용자 인터페이스 또는 직접적인 사용자 상호작용이 있는 시스템 앱의 카메라 표시기를 숨기면 안 됩니다(MUST).
2.6.1 태블릿 요구 사항 — 하드웨어 : 태블릿 화면 크기 요구 사항을 업데이트합니다.
개정판 보기
Android 태블릿 장치는 일반적으로 다음 기준을 모두 충족하는 Android 장치 구현을 나타냅니다.
- 대각선으로 측정한 화면 디스플레이 크기가 7인치 이상 18인치 미만이어야 합니다.
화면 크기
- [ 7.1 .1.1/Tab-0-1] 7~18인치 범위의 화면이 있어야 합니다(MUST).
3. 소프트웨어
3.2.2 빌드 매개변수 :
getSerial()
의 업데이트된 ASCII 문자.개정판 보기
- [C-0-1] 기기 구현 전체에서 일관되고 의미 있는 값을 제공하기 위해 아래 표에는 기기 구현이 준수해야 하는 이러한 값의 형식에 대한 추가 제한사항이 포함되어 있습니다.
모수 세부 getSerial() 모델 및 제조업체가 동일한 장치에서 사용 가능하고 고유한 하드웨어 일련 번호여야 합니다(또는 반환해야 함). 이 필드의 값은 7비트 ASCII로 인코딩할 수 있어야 하며 "^[a-zA-Z0-9]+$" 정규식과 일치해야 합니다. 3.2.3.5 조건부 적용 의도 : 조건부 적용 의도에 대한 요구 사항 업데이트.
개정판 보기
대형 디스플레이(일반적으로 디스플레이 너비와 높이가 600dp+ 이상)를 포함하고 분할 기능을 지원하는 기기 구현은 다음을 충족해야 합니다.
- [C-17-1] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 인텐트를 처리하는 활동이 있어야 합니다(MUST). 액티비티는
android.permission.LAUNCH_MULTI_PANE_SETTINGS_DEEP_LINK
에 의해 보호되어야 하며 Settings#EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_INTENT_URI 에서 파싱된 인텐트의 액티비티를 시작해야 합니다.
- [C-17-1] 분할 기능이 켜져 있을 때 Settings#ACTION_SETTINGS_EMBED_DEEP_LINK_ACTIVITY 인텐트를 처리하는 활동이 있어야 합니다(MUST). 액티비티는
3.5.1 애플리케이션 제한 : 애플리케이션 제한 업데이트.
개정판 보기
앱을 제한하는 독점 메커니즘 (예: SDK에 설명된 API 동작 변경 또는 제한)을 구현하고 해당 메커니즘이 제한된 앱 대기 버킷 보다 더 제한적인 경우 기기 구현은 다음을 충족해야 합니다.
- [C-1-1] 사용자가 제한된 앱 목록을 볼 수 있도록 허용해야 합니다(MUST).
- [C-1-2] 각 앱에서 이러한 독점 제한을 모두 켜거나 끌 수 있는 사용자 어포던스를 제공해야 합니다(MUST).
- [C-1-3] 열악한 시스템 상태 동작의 증거 없이 이러한 독점 제한을 자동으로 적용하면 안 되지만(MUST(MUST)), 중단된 wakelock, 장기 실행 서비스, 기타 기준과 같은 열악한 시스템 상태 동작이 감지되면 앱에 제한을 적용할 수 있습니다(MAY). 기준은 기기 구현자에 의해 결정될 수 있지만(MAY) 시스템 상태에 대한 앱의 영향과 관련되어야 합니다(MUST). 시장에서 앱의 인기 부족과 같이 시스템 상태와 순전히 관련되지 않은 다른 기준을 기준으로 사용해서는 안 됩니다(MUST NOT).
- [C-1-4] 사용자가 앱 제한을 수동으로 해제한 경우 앱에 대해 이러한 독점 제한을 자동으로 적용하면 안 되며(MUST NOT) 사용자에게 이러한 독점 제한을 적용하도록 제안할 수 있습니다(MAY).
[C-1-5] 이러한 독점 제한이 앱에 자동으로 적용되는 경우 사용자에게 알려야 합니다(MUST). 이러한 정보는 이러한 소유권 제한이 적용되기 24시간 전에 제공되어야 합니다.
[C-1-6] 앱의 모든 API 호출에 대한 ActivityManager.isBackgroundRestricted() 메서드에 대해 true를 반환해야 합니다(MUST).
[C-1-7] 사용자가 명시적으로 사용하는 상위 포그라운드 앱을 제한하면 안 됩니다(MUST NOT).
[C-1-8] 사용자가 앱을 명시적으로 사용하기 시작할 때마다 앱에 대한 이러한 독점 제한을 정지하여 최상위 포그라운드 애플리케이션으로 만들어야 합니다(MUST).
[C-1-9] UsageStats를 통해 이러한 모든 독점 제한 이벤트를 보고해야 합니다(MUST).
[C-1-10] 독점 제한이 적용되는 방식을 설명하는 공개적이고 명확한 문서 또는 웹사이트를 제공해야 합니다(MUST). 이 문서 또는 웹사이트는 Android SDK 문서에서 링크할 수 있어야 하며 다음을 포함해야 합니다.
- 소유권 제한에 대한 트리거링 조건.
- 앱을 제한할 수 있는 대상과 방법.
- 앱이 이러한 제한에서 제외되는 방법.
- 앱이 사용자가 설치할 수 있는 앱에 대해 이러한 면제를 지원하는 경우 독점 제한 면제를 요청할 수 있는 방법.
앱이 기기에 사전 설치되어 있고 사용자가 30일 이상 명시적으로 사용하지 않은 경우 [C-1-3] [C-1-5]가 면제됩니다.
3.8.1 런처(홈 화면) :
monochrome/adaptive-icon
지원 업데이트.개정판 보기
기기 구현이 흑백 아이콘을 지원하는 경우 다음 아이콘은 다음과 같습니다.
- [C-6-1] 사용자가 명시적으로 활성화하는 경우에만 사용해야 합니다(예: 설정 또는 배경화면 선택기 메뉴를 통해).
3.8.2 위젯 : 실행기에서 타사 앱 위젯 존재로 업데이트합니다.
개정판 보기
타사 앱 위젯을 지원하는 기기 구현은 다음을 충족해야 합니다.
- [C-1-2] AppWidgets에 대한 기본 제공 지원을 포함하고 AppWidgets를 추가, 구성, 보기 및 제거하기 위한 사용자 인터페이스 어포던스를 노출해야 합니다(MUST).
실행기 내에서 직접.
- [C-1-2] AppWidgets에 대한 기본 제공 지원을 포함하고 AppWidgets를 추가, 구성, 보기 및 제거하기 위한 사용자 인터페이스 어포던스를 노출해야 합니다(MUST).
3.8.3.1 알림 표시 : 헤드업 알림의 정의를 명확히 합니다.
개정판 보기
헤드업 알림은 사용자가 있는 표면과 독립적으로 들어올 때 사용자에게 표시되는 알림입니다.
3.8.3.3 DND(방해 금지)/우선 모드 : DND(방해 금지) 요구 사항에 우선 모드를 포함하도록 업데이트합니다.
개정판 보기
3.8.3.3. DND(방해 금지) /우선 모드
DND 기능 (우선 모드라고도 함) 을 지원하는 기기 구현은 다음을 충족해야 합니다.
3.8.6 테마 : 동적 색조 팔레트에 대한 새로운 요구 사항.
개정판 보기
화면 또는 동영상 출력이 포함된 기기 구현은 다음을 충족해야 합니다.
[C-1-4]
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
의 AOSP 문서에 지정된 대로 동적 색상 톤 팔레트를 생성해야 합니다(android.theme.customization.system_palette
및android.theme.customization.theme_style
참조).[C-1-5]
Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
문서(android.theme.customization.theme_styles
참조)에 열거된 색상 테마 스타일, 즉TONAL_SPOT
,VIBRANT
,EXPRESSIVE
,SPRITZ
,RAINBOW
,FRUIT_SALAD
를 사용하여 동적 색조 팔레트를 생성해야 합니다(MUST).android.theme.customization.system_palette
(Settings.THEME_CUSTOMIZATION_OVERLAY_PACKAGES
에 설명된 대로)와 함께 전송될 때 동적 색상 톤 팔레트를 생성하는 데 사용되는 "원본 색상".[C-1-6]
CAM16
채도 값이 5 이상이어야 합니다(MUST).선택할 수 있는 여러 유효한 소스 색상을 제공하는
com.android.systemui.monet.ColorScheme#getSeedColors
통해 배경화면에서 파생되어야 합니다(SHOULD).제공된 색상이 위의 소스 색상 요구 사항을 충족하지 않는 경우 값
0xFF1B6EF3
사용해야 합니다(SHOULD).
3.8.17 클립보드 : 클립보드 콘텐츠에 대한 새로운 요구 사항 섹션을 추가했습니다.
개정판 보기
3.8.17. 클립보드
장치 구현:
- [C-0-1] 9.8.6 콘텐츠 에 언급된 서비스를 제외하고 명시적인 사용자 작업(예: 오버레이의 버튼 누르기) 없이 구성요소, 활동, 서비스 또는 네트워크 연결을 통해 클립보드 데이터를 보내면 안 됩니다(MUST NOT). 캡처 및 앱 검색 .
ClipData.getDescription().getExtras()
에android.content.extra.IS_SENSITIVE
포함된ClipData
항목의 클립보드에 콘텐츠를 복사할 때 사용자에게 표시되는 미리보기를 생성하는 기기 구현은 다음을 충족해야 합니다.- [C-1-1] 사용자에게 표시되는 미리보기를 수정해야 합니다(MUST).
AOSP 참조 구현은 이러한 클립보드 요구사항을 충족합니다.
3.9.1.1 장치 소유자 프로비저닝 : 장치 소유자 프로비저닝 요구 사항 업데이트.
개정판 보기
android.software.device_admin
선언하는 기기 구현은 다음을 충족해야 합니다.- [C-1-1] 아래에 설명된 대로 기기 정책 클라이언트(DPC)를 기기 소유자 앱 으로 등록하는 것을 지원해야 합니다(MUST).
- 기기 구현에 구성된 사용자와 사용자 데이터가 모두 없는 경우:
- [C-1-5] 기기가 기능을 통해 근거리 통신(NFC) 지원을 선언하는 경우 DPC 애플리케이션을 기기 소유자 앱으로 등록 하거나 DPC 앱이 기기 소유자 또는 프로필 소유자가 될지 여부를 선택하도록 설정해야 합니다(MUST).
android.hardware.nfc
플래그를 지정하고 MIME 유형이MIME_TYPE_PROVISIONING_NFC
인 레코드가 포함된 NFC 메시지를 수신합니다. - [C-1-8] 기기 소유자 프로비저닝이 트리거된 후 DPC 앱이
android.app.extra.PROVISIONING_ALLOWED_PROVISIONING_MODES
의 값에 따라 기기 소유자 또는 프로필 소유자가 될지 여부를 선택할 수 있도록 ACTION_GET_PROVISIONING_MODE 인 텐트를 전송해야 합니다(MUST). 유효한 옵션이 하나만 있다는 것은 컨텍스트에서 확인할 수 있습니다.(예: 프로필 소유자 프로비저닝이 지원되지 않는 NFC 기반 프로비저닝). - [C-1-9] 사용된 프로비저닝 방법에 관계없이 프로비저닝 중에 기기 소유자가 설정된 경우 기기 소유자 앱에 ACTION_ADMIN_POLICY_COMPLIANCE 인텐트를 보내야 합니다(MUST). 기기 소유자 앱이 완료될 때까지 사용자는 설정 마법사를 진행할 수 없어야 합니다.
- [C-1-5] 기기가 기능을 통해 근거리 통신(NFC) 지원을 선언하는 경우 DPC 애플리케이션을 기기 소유자 앱으로 등록 하거나 DPC 앱이 기기 소유자 또는 프로필 소유자가 될지 여부를 선택하도록 설정해야 합니다(MUST).
- 기기 구현에 사용자 또는 사용자 데이터가 있는 경우:
- [C-1-7] DPC 애플리케이션을 기기 소유자 앱으로 더 이상 등록하면 안 됩니다(MUST).
- 기기 구현에 구성된 사용자와 사용자 데이터가 모두 없는 경우:
- [C-1-2] 앱이 기기 소유자로 설정되기 전에 적절한 공개 알림(예 : AOSP 참조 )을 표시하고 최종 사용자로부터 긍정적인 동의를 얻어야 합니다(MUST). 화면상의 최종 사용자 상호 작용.
장치 소유자로 설정되는 앱에 동의하려면 프로비저닝 프로세스 전이나 도중에 긍정적인 조치를 취해야 합니다. 동의는 사용자 작업 또는 일부 프로그래밍 방식을 통해 이루어질 수 있지만 기기 소유자 프로비저닝이 시작되기 전에 적절한 공개 알림(AOSP 참조)이 표시되어야 합니다. 또한 장치 소유자 프로비저닝을 위해 (기업이) 사용하는 프로그래밍 방식 장치 소유자 동의 메커니즘은 기업용이 아닌 사용을 위한 Out-Of-Box Experience를 방해해서는 안 됩니다(MUST NOT). [C-1-3] 동의를 하드 코딩하거나 다른 기기 소유자 앱의 사용을 방지하면 안 됩니다(MUST NOT).
기기 구현에서
android.software.device_admin
선언하지만 독점장치 소유자기기 관리 솔루션을 제공하고 표준 Android DevicePolicyManager API에서 인식하는 표준 "기기 소유자"와 동등한 '기기 소유자'로 솔루션에 구성된 애플리케이션을 승격하는 메커니즘을 제공합니다.- [C-2-1] 승격 중인 특정 앱이 합법적인 엔터프라이즈 기기 관리 솔루션에 속하고 '기기 소유자'와 동등한 권한을 갖도록 독점 솔루션에 구성되었는지 확인하는 프로세스가 있어야 합니다(MUST).
- [C-2-2] DPC 애플리케이션을 '기기 소유자'로 등록하기 전에
android.app.action.PROVISION_MANAGED_DEVICE
에서 시작한 흐름과 동일한 AOSP 기기 소유자 동의 공개를 표시해야 합니다(MUST). - [C-2-3] 동의를 하드 코딩하거나 다른 기기 소유자 앱의 사용을 방지하면 안 됩니다(MUST NOT).
DPC 애플리케이션을 "기기 소유자"로 등록하기 전에 기기에 사용자 데이터가 있을 수 있습니다(MAY).
- [C-1-1] 아래에 설명된 대로 기기 정책 클라이언트(DPC)를 기기 소유자 앱 으로 등록하는 것을 지원해야 합니다(MUST).
3.9.4 장치 관리 역할 요구 사항 : 장치 관리 역할 요구 사항에 대한 섹션이 추가되었습니다.
개정판 보기
3.9.4 장치 정책 관리 역할 요구 사항
android.software.device_admin
또는android.software.managed_users
보고하는 기기 구현은 다음을 충족해야 합니다.- [C-1-1] 섹션 9.1 에 정의된 기기 정책 관리 역할을 지원해야 합니다(MUST). 장치 정책 관리 역할을 보유한 애플리케이션은
config_devicePolicyManagement
패키지 이름으로 설정하여 정의할 수 있습니다(MAY). 애플리케이션이 미리 로드되지 않은 경우 패키지 이름 뒤에는:
및 서명 인증서가 와야 합니다.
위에서 설명한 대로
config_devicePolicyManagement
에 대해 패키지 이름이 정의되지 않은 경우:- [C-2-1] 기기 구현은 기기 정책 관리 역할 소유자 애플리케이션 없이 프로비저닝을 지원해야 합니다( AOSP는 참조 구현 제공 ).
위에서 설명한 대로
config_devicePolicyManagement
에 대해 패키지 이름이 정의된 경우:- [C-3-1] 사용자 의 모든 프로필 에 애플리케이션을 설치해야 합니다(MUST).
- [C-3-2] 기기 구현은
config_devicePolicyManagementUpdater
설정하여 프로비저닝 전에 기기 정책 관리 역할 보유자를 업데이트하는 애플리케이션을 정의할 수 있습니다(MAY).
위에서 설명한 대로
config_devicePolicyManagementUpdater
에 대해 패키지 이름이 정의된 경우:- [C-4-1] 애플리케이션이 기기에 사전 설치되어 있어야 합니다(MUST).
- [C-4-2] 애플리케이션은
android.app.action.UPDATE_DEVICE_POLICY_MANAGEMENT_ROLE_HOLDER
를 해결하는 인텐트 필터를 구현해야 합니다(MUST).
- [C-1-1] 섹션 9.1 에 정의된 기기 정책 관리 역할을 지원해야 합니다(MUST). 장치 정책 관리 역할을 보유한 애플리케이션은
3.18 연락처 : 새 연락처에 대한 정보를 추가합니다.
개정판 보기
새 연락처의 기본 계정: 연락처 제공자는 새 연락처를 만들 때 기본 계정 설정을 관리하기 위한 API를 제공합니다.
기기 구현이 연락처 앱을 사전 로드하는 경우 사전 로드된 연락처 앱은 다음을 수행합니다.
[C-2-1] 계정 선택을 위한 UI를 시작하고 계정이 선택되면 설정을 연락처 제공자에 저장하기 위해
ContactsContract.Settings.ACTION_SET_DEFAULT_ACCOUNT
텐트를 처리해야 합니다(MUST).[C-2-2] 초기에 계정을 선택하여
ContactsContracts.Contacts.CONTENT_TYPE
및ContactsContract.RawContacts.CONTENT_TYPE
에 대한Intent.ACTION_INSERT and Intent.ACTION_INSERT_OR_EDIT
처리할 때 기본 계정 설정을 준수해야 합니다(MUST).
4. 애플리케이션 패키징 호환성
4. 애플리케이션 패키징 호환성 : APK 서명 체계 버전 업데이트.
개정판 보기
장치 구현:
[C-0-2] APK 서명 체계 v3.1 , APK 서명 체계 v3 , APK 서명 체계 v2 및 JAR 서명을 사용하여 '.apk' 파일 확인을 지원해야 합니다(MUST).
[C-0-9] APK 서명 체계 v4 및 APK 서명 체계 v4.1을 사용하여 .apk 파일 확인을 지원해야 합니다(MUST).
5. 멀티미디어 호환성
5.1.2 오디오 디코딩 : 다중 채널 오디오를 출력할 수 있는 디코더에 대한 새로운 요구 사항이 추가되었습니다.
개정판 보기
기기 구현이
android.media.MediaCodec
API의 기본 AAC 오디오 디코더를 통해 다중 채널 스트림(예: 2개 이상의 채널)의 AAC 입력 버퍼를 PCM으로 디코딩하는 것을 지원하는 경우 다음이 지원되어야 합니다(MUST).- [C-7-1]
KEY_MAX_OUTPUT_CHANNEL_COUNT
키로 디코딩을 사용하여 콘텐츠를 스테레오로 다운믹스할지(값 2를 사용하는 경우) 또는 기본 채널 수를 사용하여 출력할지를 제어하는 애플리케이션에서 구성할 수 있어야 합니다(MUST). 해당 숫자와 같거나 큰 값을 사용할 때). 예를 들어 6 이상의 값은 5.1 콘텐츠를 공급할 때 디코더가 6개 채널을 출력하도록 구성합니다. - [C-7-2] 디코딩 시 디코더는
android.media.AudioFormat
상수(예:CHANNEL_OUT_5POINT1
)를 사용하여KEY_CHANNEL_MASK
키로 출력 형식에 사용되는 채널 마스크를 광고해야 합니다(MUST).
기기 구현이 기본 AAC 오디오 디코더 이외의 오디오 디코더를 지원하고 압축된 다중 채널 콘텐츠를 제공할 때 다중 채널 오디오(예: 2개 이상의 채널)를 출력할 수 있는 경우:
- [C-SR] 디코더는
KEY_MAX_OUTPUT_CHANNEL_COUNT
키로 디코딩하여 콘텐츠를 스테레오로 다운믹싱할지(값 2 사용 시) 또는 기본 숫자를 사용하여 출력할지를 제어하는 애플리케이션에서 구성할 수 있도록 할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 채널 수(해당 숫자와 같거나 큰 값을 사용하는 경우). 예를 들어 6 이상의 값은 5.1 콘텐츠를 공급할 때 디코더가 6개 채널을 출력하도록 구성합니다. - [C-SR] 디코딩할 때 디코더는 android.media.AudioFormat 상수(예:
CHANNEL_OUT_5POINT1
)를 사용하여KEY_CHANNEL_MASK
키로 출력 형식에 사용되는 채널 마스크를 광고할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
- [C-7-1]
5.4.1 원시 오디오 캡처 및 마이크 정보 : 오디오 입력 스트림에 대해 지원되는 오디오 소스 업데이트.
개정판 보기
android.hardware.microphone
선언하는 기기 구현은 다음을 충족해야 합니다.[C-1-1] 성공적으로 열린 모든
AudioRecord
또는AAudio
INPUT 스트림에 대해 다음 특성을 가진 원시 오디오 콘텐츠의 캡처를 허용해야 합니다(MUST). 최소한 다음 특성이 지원되어야 합니다 .- 형식: 선형 PCM, 16비트
- 샘플링 속도: 8000, 11025, 16000, 44100, 48000Hz
- 채널: 모노
- 오디오 소스:
DEFAULT
,MIC
,CAMCORDER
,VOICE_RECOGNITION
,VOICE_COMMUNICATION
,UNPROCESSED
또는VOICE_PERFORMANCE
. 이는AAUDIO_INPUT_PRESET_CAMCORDER
와 같은AAudio
의 동등한 입력 사전 설정에도 적용됩니다. - [C-1-4
AudioManager.getMicrophones()
MicrophoneInfo
MediaRecorder.AudioSources DEFAULT
MIC
,CAMCORDER
,VOICE_RECOGNITION
,VOICE_COMMUNICATION
,UNPROCESSED
또는VOICE_PERFORMANCE
.AudioRecord.getActiveMicrophones()
및MediaRecorder.getActiveMicrophones()
API를 통해 타사 애플리케이션에 액세스할 수 있는 현재 활성 마이크.
5.4.2 음성 인식을 위한 캡처 : 음성 인식 오디오 스트림에 대한 요구 사항 업데이트 및 마이크 게인 수준에 대한 요구 사항 추가.
개정판 보기
android.hardware.microphone
선언하는 기기 구현은 다음을 충족해야 합니다.- 대략적인 진폭 대 주파수 특성(구체적으로 ±3dB, 100Hz ~ 4000Hz)으로 음성 인식 오디오 스트림을 녹음해야 합니다(SHOULD).
- 1000Hz에서 90dB 음력 레벨(SPL) 소스가 16비트 샘플에 대해 2500의 RMS를 생성하도록 입력 감도가 설정된 음성 인식 오디오 스트림을 녹음해야 합니다(SHOULD).
- 중간 주파수 범위에서 거의 평탄한 진폭 대 주파수 특성을 나타내야 합니다(SHOULD). 구체적으로 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크에 대해 100Hz~4000Hz에서 ±3dB입니다.
- [C-SR]은 저주파 범위에서 진폭 수준을 표시할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 특히 음성 인식 오디오 소스를 녹음하는 데 사용되는 각각의 모든 마이크에 대해 중간 주파수 범위와 비교하여 30Hz~100Hz에서 ±20dB입니다.
- [C-SR]은 고주파수 범위에서 진폭 수준을 표시할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 특히 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크의 중간 주파수 범위와 비교하여 4000Hz~22KHz에서 ±30dB입니다.
- 90dB 음압 수준(SPL)(마이크 옆에서 측정)에서 재생되는 1000Hz 사인파 톤 소스가 16비트 샘플에 대해 1770 및 3530 범위 내에서 RMS 2500의 이상적인 응답을 생성하도록 오디오 입력 감도를 설정해야 합니다(SHOULD). 또는 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크에 대해 -22.35db ±3dB 풀 스케일(부동 소수점/배정밀도 샘플의 경우).
5.4.6 마이크 게인 레벨 : 마이크 게인 레벨에 대한 요구 사항이 섹션 5.4.2로 이동되었습니다.
개정판 보기
5.4.6. 마이크 게인 레벨 [5.4.2로 이동]
android.hardware.microphone
선언하는 기기 구현은 다음을 충족해야 합니다.- 중간 주파수 범위에서 거의 평탄한 진폭 대 주파수 특성을 나타내야 합니다(SHOULD). 구체적으로 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크에 대해 100Hz~4000Hz에서 ±3dB입니다.
- [C-SR]은 저주파 범위에서 진폭 수준을 표시할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 특히 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크의 중간 주파수 범위와 비교하여 5Hz~100Hz에서 ±20dB입니다.
- [C-SR]은 고주파수 범위에서 진폭 수준을 표시할 것을 적극 권장합니다(STRONGLY RECOMMENDED). 특히 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크의 중간 주파수 범위와 비교하여 4000Hz~22KHz에서 ±30dB입니다.
- 90dB 음압 레벨(SPL)에서 재생되는 1000Hz 사인파 톤 소스가 16비트 샘플에 대해 2500의 RMS(또는 부동 소수점/배정밀도 샘플에 대해 -22.35dB 풀 스케일)로 응답을 생성하도록 오디오 입력 감도를 설정해야 합니다(SHOULD). 음성 인식 오디오 소스를 녹음하는 데 사용되는 모든 마이크에 대해.
5.5.4 오디오 오프로드 : 오디오 오프로드 재생 요구 사항을 업데이트합니다.
개정판 보기
오디오 오프로드 재생을 지원하는 기기 구현은 다음을 충족해야 합니다.
- [C-SR] AudioTrack 끊김 없는 API 및 MediaPlayer용 미디어 컨테이너에서 지정한 경우 동일한 형식의 두 클립 간에 재생된 끊김 없는 오디오 콘텐츠를 트리밍할 것을 적극 권장합니다(STRONGLY RECOMMENDED).
5.6 오디오 대기 시간 : 오디오 대기 시간 요구 사항 업데이트.
개정판 보기
이 섹션의 목적을 위해 다음 정의를 사용합니다.
- 콜드 출력 지터 . 콜드 출력 대기 시간 값의 개별 측정 간의 변동성.
- 콜드 입력 지터 . 콜드 입력 대기 시간 값의 개별 측정 간의 변동성.
기기 구현이
android.hardware.audio.output
선언하는 경우 다음 요구사항을 충족하거나 초과해야 합니다(MUST).- [C-1-2] 500밀리초 이하의 콜드 출력 지연 시간.
- [C-1-3] Opening an output stream using
AAudioStreamBuilder_openStream()
MUST take less than 1000 milliseconds.
If device implementations declare
android.hardware.audio.output
they are STRONGLY RECOMMENDED to meet or exceed the following requirements:- [C-SR] Cold output latency of 100 milliseconds or less over the speaker data path.
Existing and new devices that run this version of Android are VERY STRONGLY RECOMMENDED to meet these requirements now. In a future platform release, we will require Cold output latency of 200 ms or less as a MUST. [C-SR] Minimize the cold output jitter.
If device implementations include
android.hardware.microphone
, they MUST meet these input audio requirements:- [C-3-2] Cold input latency of 500 milliseconds or less.
- [C-3-3] Opening an input stream using
AAudioStreamBuilder_openStream()
MUST take less than 1000 milliseconds.
If device implementations include
android.hardware.microphone
, they are STRONGLY RECOMMENDED to meet these input audio requirements:- [C-SR] Cold input latency of 100 milliseconds or less over the microphone data path.
Existing and new devices that run this version of Android are VERY STRONGLY RECOMMENDED to meet these requirements now. In a future platform release we will require Cold input latency of 200 ms or less as a MUST.
- [C-SR] Continuous input latency of 30 milliseconds or less.
- [C-SR] Minimize the cold input jitter.
5.10 Professional Audio : Updates to audio latency requirements for professional audio support.
See revision
If device implementations report support for feature
android.hardware.audio.pro
via the android.content.pm.PackageManager class, they:- [C-1-2] MUST have the continuous round-trip audio latency, as defined in section 5.6 Audio Latency of 25 milliseconds or less
and SHOULD be 10 milliseconds or lessover at least one supported path. - [C-1-5] MUST meet latencies and USB audio requirements using the AAudio native audio API and
AAUDIO_PERFORMANCE_MODE_LOW_LATENCY
. - [C-1-8] MUST have an average Tap-to-tone latency of 80 milliseconds or less over at least 5 measurements over the speaker to microphone data path.
- [C-SR] Are STRONGLY RECOMMENDED to provide a consistent level of CPU performance while audio is active and CPU load is varying. This should be tested using the Android app SynthMark . SynthMark uses a software synthesizer running on a simulated audio framework that measures system performance. See the SynthMark documentation for an explanation of the benchmarks. The SynthMark app needs to be run using the “Automated Test” option and achieve the following results: * voicemark.90 >= 32 voices * latencymark.fixed.little <= 15 msec * latencymark.dynamic.little <= 50 msec
SHOULD have a latency from touch input to audio output of less than or equal to 40 ms.
If device implementations include a 4 conductor 3.5mm audio jack, they:
- [C-2-1] MUST have a mean Continuous Round-trip Audio Latency, as defined in section 5.6 Audio Latency , of 20 milliseconds or less, over 5 measurements with a Mean Absolute Deviation less than 5 milliseconds over the audio jack path using an audio loopback dongle .
- [C-1-2] MUST have the continuous round-trip audio latency, as defined in section 5.6 Audio Latency of 25 milliseconds or less
5.12 HDR Video : Added a new section for HDR Video requirements.
6. Developer Tools and Options Compatibility
6.1 Developer Tools : Updates to connectivity and GPU Kernel requirements.
See revision
If device implementations support adb connections to a host machine via Wi-Fi or Ethernet , they:
- [C-4-1] MUST have the
AdbManager#isAdbWifiSupported()
method returntrue
.
If device implementations support adb connections to a host machine via Wi-Fi or Ethernet , and includes at least one camera, they:
- [C-5-1] MUST have the
AdbManager#isAdbWifiQrSupported()
method returntrue
.
GPU work information
장치 구현:
- [C-6-1] MUST implement the shell command
dumpsys gpu --gpuwork
to display the aggregated GPU work data returned by thepower/gpu_work_period
kernel tracepoint, or display no data if the tracepoint is not supported. The AOSP implementation isframeworks/native/services/gpuservice/gpuwork/
.
- [C-6-1] MUST implement the shell command
- [C-4-1] MUST have the
7. Hardware Compatibility
7.1.4.1 OpenGL ES : Update to recommended extensions.
See revision
If device implementations support any of the OpenGL ES versions, they:
- SHOULD support the
EGL_IMG_context_priority
andEGL_EXT_protected_content
extensions.
- SHOULD support the
7.1.4.2 Vulkan : Updates to version supported for Vulkan.
See revision
If device implementations support OpenGL ES 3.1, they:
- [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 .
Vulkan 1.1 - MUST NOT support a Vulkan Variant version (ie the variant part of the Vulkan core version MUST be zero).
화면 또는 동영상 출력이 포함된 기기 구현은 다음을 충족해야 합니다.
- [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 .
Vulkan 1.1
If device implementations include support for Vulkan 1.0 or higher, they:
- SHOULD support
VkPhysicalDeviceProtectedMemoryFeatures
andVK_EXT_global_priority
. - [C-1-12] MUST NOT enumerate support for the
VK_KHR_performance_query
extension. - [C-SR] Are STRONGLY RECOMMENDED to satisfy the requirements specified by the Android Baseline 2021 profile.
- [SR] Are STRONGLY RECOMMENDED to include support for Vulkan 1.3 .
7.2.3 Navigation Keys :
See revision
장치 구현:
- [C-SR] Are STRONGLY RECOMMENDED to provide all navigation functions as cancellable. 'Cancellable' is defined as the user's ability to prevent the navigation function from executing (eg going home, going back, etc.) if the swipe is not released past a certain threshold.
If the back navigation function is provided and the user cancels the Back gesture, then:
- [C-8-1]
OnBackInvokedCallback.onBackCancelled()
MUST be called. - [C-8-2]
OnBackInvokedCallback.onBackInvoked()
MUST NOT be called. - [C-8-3] KEYCODE_BACK event MUST NOT be dispatched.
If the back navigation function is provided but the foreground application does NOT have an
OnBackInvokedCallback
registered, then:- The system SHOULD provide an animation for the foreground application that suggests that the user is going back, as provided in AOSP.
If device implementations provide support for the system API
setNavBarMode
to allow any system app withandroid.permission.STATUS_BAR
permission to set the navigation bar mode, then they:- [C-9-1] MUST provide support for kid-friendly icons or button-based navigation as provided in the AOSP code.
7.3.1 Accelerometer : Updates to sensor requirements for accelerometers.
See revision
If device implementations include an accelerometer,
a 3-axis accelerometer,they:[C-1-2] MUST implement and reportTYPE_ACCELEROMETER
sensor.[SR] are STRONGLY RECOMMENDED to implement theTYPE_SIGNIFICANT_MOTION
composite sensor.[SR] are STRONGLY RECOMMENDED to implement and reportTYPE_ACCELEROMETER_UNCALIBRATED
sensor. Android devices are STRONGLY RECOMMENDED to meet this requirement so they will be able to upgrade to the future platform release where this might become REQUIRED.SHOULD implement theTYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
composite sensors as described in the Android SDK document.
3축 가속도계를 포함하는 기기 구현은 다음을 충족해야 합니다.
- [C-2-1] MUST implement and report
TYPE_ACCELEROMETER
sensor. - [C-SR] Are STRONGLY RECOMMENDED to implement the
TYPE_SIGNIFICANT_MOTION
composite sensor. - [C-SR] Are STRONGLY RECOMMENDED to implement and report
TYPE_ACCELEROMETER_UNCALIBRATED
sensor. Android devices are STRONGLY RECOMMENDED to meet this requirement so they will be able to upgrade to the future platform release where this might become REQUIRED. - SHOULD implement the
TYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
composite sensors as described in the Android SDK document.
If device implementations include an accelerometer with less than 3 axes, they:
- [C-3-1] MUST implement and report
TYPE_ACCELEROMETER_LIMITED_AXES
sensor. - [C-SR] Are STRONGLY_RECOMMENDED to implement and report
TYPE_ACCELEROMETER_LIMITED_AXES_UNCALIBRATED
sensor.
If device implementations include a 3-axis accelerometer and any of the
TYPE_SIGNIFICANT_MOTION
,TYPE_TILT_DETECTOR
,TYPE_STEP_DETECTOR
,TYPE_STEP_COUNTER
composite sensors are implemented:- [C-4-1] The sum of their power consumption MUST always be less than 4 mW.
If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:
- [C-5-1] MUST implement the
TYPE_GRAVITY
andTYPE_LINEAR_ACCELERATION
composite sensors.
If device implementations include a 3-axis accelerometer, a 3-axis gyroscope sensor, and a magnetometer sensor, they:
- [C-6-1] MUST implement a
TYPE_ROTATION_VECTOR
composite sensor.
7.3.4 Gyroscopes : Updates to sensor requirements for gyroscopes.
See revision
If device implementations include a gyroscope, they:
- [C-1-1] MUST be able to report events up to a frequency of at least 50 Hz.
- [C-1-4] MUST have a resolution of 12-bits or more.
- [C-1-5] MUST be temperature compensated.
- [C-1-6] MUST be calibrated and compensated while in use, and preserve the compensation parameters between device reboots.
- [C-1-7] MUST have a variance no greater than 1e-7 rad^2 / s^2 per Hz (variance per Hz, or rad^2 / s). The variance is allowed to vary with the sampling rate, but MUST be constrained by this value. In other words, if you measure the variance of the gyro at 1 Hz sampling rate it SHOULD be no greater than 1e-7 rad^2/s^2.
- [C-SR] Calibration error is STRONGLY RECOMMENDED to be less than 0.01 rad/s when device is stationary at room temperature.
- [C-SR] Are STRONGLY RECOMMENDED to have a resolution of 16-bits or more.
- SHOULD report events up to at least 200 Hz.
If device implementations include a 3-axis gyroscope, they:
- [C-2-1] MUST implement the
TYPE_GYROSCOPE
sensor.
If device implementations include a gyroscope with less than 3 axes, they:
- [C-3-1] MUST implement and report
TYPE_GYROSCOPE_LIMITED_AXES
sensor. - [C-SR] Are STRONGLY_RECOMMENDED to implement and report
TYPE_GYROSCOPE_LIMITED_AXES_UNCALIBRATED
sensor.
If device implementations include a 3-axis gyroscope, an accelerometer sensor and a magnetometer sensor, they:
- [C-4-1] MUST implement a
TYPE_ROTATION_VECTOR
composite sensor.
If device implementations include a 3-axis accelerometer and a 3-axis gyroscope sensor, they:
- [C-5-1] MUST implement the
TYPE_GRAVITY
andTYPE_LINEAR_ACCELERATION
composite sensors.
7.3.10 Biometric Sensors : Updates to sensor requirements for biometric sensors.
See revision
Biometric sensors can be classified as Class 3 (formerly Strong ), Class 2 (formerly Weak ), or Class 1 (formerly Convenience ) based on their spoof and imposter acceptance rates, and on the security of the biometric pipeline. This classification determines the capabilities the biometric sensor has to interface with the platform and with third-party applications. Sensors need to meet additional requirements as detailed below if they wish to be classified as either Class 1 , Class 2 or Class 3 .
Sensors are classified as Class 1 by default, and need to meet additional requirements as detailed below if they wish to be classified as either Class 2 or Class 3 . Both Class 2 and Class 3 biometrics get additional capabilities as detailed below.If device implementations wish to treat a biometric sensor as Class 1 (formerly Convenience ), they:
- [C-1-11] MUST have a spoof and imposter acceptance rate not higher than 30%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 30%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 40%, as measured by the Android Biometrics Test Protocols.
If device implementations wish to treat a biometric sensor as Class 2 (formerly Weak ), they:
- [C-2-2] MUST have a spoof and imposter acceptance rate not higher than 20%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 20%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 30%, as measured by the Android Biometrics Test Protocols .
If device implementations wish to treat a biometric sensor as Class 3 (formerly Strong ), they:
- [C-3-3] MUST have a spoof and imposter acceptance rate not higher than 7%, with (1) a spoof and imposter acceptance rate for Level A presentation attack instrument (PAI) species not higher than 7%, and (2) a spoof and imposter acceptance rate of Level B PAI species not higher than 20%, as measured by the Android Biometrics Test Protocols .
7.3.13 IEEE 802.1.15.4 (UWB) : Added a new requirements section for UWB.
See revision
7.3.13. IEEE 802.1.15.4 (UWB)
If device implementations include support for 802.1.15.4 and expose the functionality to a third-party application, they:
- [C-1-1] MUST implement the corresponding Android API in android.uwb.
- [C-1-2] MUST report the hardware feature flag android.hardware.uwb.
- [C-1-3] MUST support all the relevant UWB profiles defined in Android implementation.
- [C-1-4] MUST provide a user affordance to allow the user to toggle the UWB radio on/off state.
- [C-1-5] MUST enforce that apps using UWB radio hold UWB_RANGING permission (under NEARBY_DEVICES permission group).
- [C-1-6] Are STRONGLY RECOMMENDED to pass the relevant conformance and certification tests defined by standard organizations, including FIRA , CCC and CSA .
7.4.1 Telephony : Updates to telephony requirements for GSM and CDMA telephony, and cellular usage settings.
See revision
If device implementations support eUICCs or eSIMs/embedded SIMs and include a proprietary mechanism to make eSIM functionality available for third-party developers, they:
- [C-3-1] MUST declare the
android.hardware.telephony.euicc
feature flag.provide a complete implementation of theEuiccManager API
.
If device implementations include GSM or CDMA telephony, then:
- [C-6-1] The
SmsManager#sendTextMessage
andSmsManager#sendMultipartTextMessage
MUST result in corresponding calls toCarrierMessagingService
for providing text messaging functionality.SmsManager#sendMultimediaMessage
andSmsManager#downloadMultimediaMessage
MUST result in corresponding calls toCarrierMessagingService
for providing multimedia messaging functionality. - [C-6-2] The application designated by
android.provider.Telephony.Sms#getDefaultSmsPackage
MUST use SmsManager APIs when sending and receiving SMS and MMS messages. The AOSP reference implementation in packages/apps/Messaging meets this requirement. - [C-6-3] The application which responds to
Intent#ACTION_DIAL
MUST support entry of arbitrary dialer codes formatted as*#*#CODE#*#*
and trigger a correspondingTelephonyManager#ACTION_SECRET_CODE
broadcast. - [C-6-4] The application which responds to
Intent#ACTION_DIAL
MUST useVoicemailContract.Voicemails#TRANSCRIPTION
to display visual voicemail transcription to users if it supports visual voicemail transcriptions. - [C-6-5] MUST represent all SubscriptionInfo with equivalent group UUIDs as a single subscription in all user-visible affordances that display and control SIM card information. Examples of such affordances include settings interfaces that match
Settings#ACTION_MANAGE_ALL_SIM_PROFILES_SETTINGS
orEuiccManager#ACTION_MANAGE_EMBEDDED_SUBSCRIPTIONS
. - [C-6-6] MUST NOT display or allow control of any SubscriptionInfo with a non-null group UUID and opportunistic bit in any user-visible affordances that allow configuration or control of SIM card settings.
If the device device implementations include GSM or CDMA telephony and provide a system status bar, then:
- [C-6-7] MUST select a representative active subscription for a given group UUID to display to the user in any affordances that provide SIM status information. Examples of such affordances include the status bar cellular signal icon or quick settings tile.
- [C-SR] It is STRONGLY RECOMMENDED that the representative subscription is chosen to be the active data subscription unless the device is in a voice call, during which it is STRONGLY RECOMMENDED that the representative subscription is the active voice subscription.
If device implementations include GSM or CDMA telephony, then:
- [C-6-8] MUST be capable of opening and concurrently utilizing the maximum number of logical channels (20 in total) for each UICC per ETSI TS 102 221.
- [C-6-10] MUST NOT apply any of the following behaviors to active carrier apps (as designated by
TelephonyManager#getCarrierServicePackageName
) automatically or without explicit user confirmation:- Revoke or limit network access
- Revoke permissions
- Restrict background or foreground app execution beyond the existing power management features included in AOSP
- Disable or uninstall the app
If device device implementations include GSM or CDMA telephony and all active, non-opportunistic subscriptions that share a group UUID are disabled, physically removed from the device, or marked opportunistic, then the device:
- [C-7-1] MUST automatically disable all remaining active opportunistic subscriptions in the same group.
If device implementations include GSM telephony but not CDMA telephony, they:
- [C-8-1] MUST NOT declare
PackageManager#FEATURE_TELEPHONY_CDMA
. - [C-8-2] MUST throw an
IllegalArgumentException
upon attempts to set any 3GPP2 network types in preferred or allowed network type bitmasks. - [C-8-3] MUST return an empty string from
TelephonyManager#getMeid
.
If the device implementations support eUICCs with multiple ports and profiles, they:
- [C-11-1] MUST declare the
android.hardware.telephony.euicc.mep
feature flag.
- [C-3-1] MUST declare the
7.4.1.1 Number Blocking Compatibility : Updates to the number blocking requirements.
See revision
If device implementations report the
android.hardware.telephony feature
, they:- [C-1-4] MUST NOT write to the platform call log provider for a blocked call.
- [C-1-4] MUST write to the platform call log provider for a blocked call and MUST filter calls with
BLOCKED_TYPE
out of the default call log view in the pre-installed dialer app. - SHOULD provide a user affordance to show blocked calls in the pre-installed dialer app.
7.4.1.3 Cellular NAT-T Keepalive Offload : New section for Cellular NAT-T Keepalive Offload.
See revision
7.4.1.3. Cellular NAT-T Keepalive Offload
장치 구현:
- SHOULD include support for Cellular keepalive offload.
If device implementations include support for Cellular keepalive offload and exposes the functionality to third-party apps, they:
- [C-1-1] MUST support the SocketKeepAlive API.
- [C-1-2] MUST support at least one concurrent keepalive slot over cellular.
- [C-1-3] MUST support as many concurrent cellular keepalive slots as are supported by the Cellular Radio HAL.
- [C-SR] Are STRONGLY RECOMMENDED to support at least three cellular keepalive slots per radio instance.
If device implementations do not include support for cellular keepalive offload, they:
- [C-2-1] MUST return ERROR_UNSUPPORTED.
7.4.2.5 Wi-Fi Location (Wi-Fi Round Trip Time - RTT) : Updates to Wi-Fi location accuracy.
See revision
If device implementations include support for Wi-Fi Location and expose the functionality to third-party apps, then they:
- [C-1-4] MUST be accurate to within 2 meters at 80 MHz bandwidth at the 68th percentile (as calculated with the Cumulative Distribution Function).
- [C-SR] Are STRONGLY RECOMMENDED to report it accurately to within 1.5 meters at 80 MHz bandwidth at the 68th percentile (as calculated with the Cumulative Distribution Function).
7.4.2.6 Wi-Fi Keepalive Offload : Updated to add cellular keepalive offload requirements.
See revision
장치 구현:
- SHOULD include support for Wi-Fi keepalive offload.
If device implementations include support for Wi-Fi keepalive offload and expose the functionality to third-party apps, they:
- [C-1-1] MUST support the SocketKeepAlive API.
- [C-1-2] MUST support at least three concurrent keepalive slots over Wi-Fi
and at least one keepalive slot over cellular.If device implementations do not include support for Wi-Fi keepalive offload, they:
- [C-2-1] MUST return
ERROR_UNSUPPORTED
.
7.4.2.9 Trust On First Use (TOFU) : Added Trust on First Use requirements section.
See revision
7.4.2.9 Trust On First Use (TOFU)
If device implementations support Trust on first usage (TOFU) and allow the user to define WPA/WPA2/WPA3-Enterprise configurations, then they:
- [C-4-1] MUST provide the user an option to select to use TOFU.
7.4.3 Bluetooth : Update to Bluetooth requirements.
See revision
If device implementations support Bluetooth Audio profile, they:
- SHOULD support Advanced Audio Codecs and Bluetooth Audio Codecs (eg LDAC) with A2DP.
If device implementations return
true
for theBluetoothAdapter.isLeAudioSupported()
API, then they:- [C-7-1] MUST support unicast client.
- [C-7-2] MUST support 2M PHY.
- [C-7-3] MUST support LE Extended advertising.
- [C-7-4] MUST support at least 2 CIS connections in a CIG.
- [C-7-5] MUST enable BAP unicast client, CSIP set coordinator, MCP server, VCP controller, CCP server simultaneously.
- [C-SR] Are STRONGLY RECOMMENDED to enable HAP unicast client.
If device implementations return
true
for theBluetoothAdapter.isLeAudioBroadcastSourceSupported()
API, then they:- [C-8-1] MUST support at least 2 BIS links in a BIG.
- [C-8-2] MUST enable BAP broadcast source, BAP broadcast assistant simultaneously.
- [C-8-3] MUST support LE Periodic advertising.
If device implementations return
true
for theBluetoothAdapter.isLeAudioBroadcastAssistantSupported()
API, then they:- [C-9-1] MUST support PAST (Periodic Advertising Sync Transfer).
- [C-9-2] MUST support LE Periodic advertising.
If device implementations declare
FEATURE_BLUETOOTH_LE
, they:- [C-10-1] MUST have RSSI measurements be within +/-9dB for 95% of the measurements at 1m distance from a reference device transmitting at
ADVERTISE_TX_POWER_HIGH
in line of sight environment. - [C-10-2] MUST include Rx/Tx corrections to reduce per-channel deviations so that the measurements on each of the 3 channels, on each of the antennas (if multiple are used), are within +/-3dB of one another for 95% of the measurements.
- [C-SR] Are STRONGLY RECOMMENDED to measure and compensate for Rx offset to ensure the median BLE RSSI is -60dBm +/-10 dB at 1m distance from a reference device transmitting at
ADVERTISE_TX_POWER_HIGH
, where devices are oriented such that they are on 'parallel planes' with screens facing the same direction. - [C-SR] Are STRONGLY RECOMMENDED to measure and compensate for Tx offset to ensure the median BLE RSSI is -60dBm +/-10 dB when scanning from a reference device positioned at 1m distance and transmitting at
ADVERTISE_TX_POWER_HIGH
, where devices are oriented such that they are on 'parallel planes' with screens facing the same direction.
Presence Calibration Requirements 에 지정된 측정 설정 단계를 따를 것을 적극 권장합니다(STRONGLY RECOMMENDED).
If device implementations support Bluetooth version 5.0, then they:
- [C-SR] Are STRONGLY RECOMMENDED to provide support for:
- LE 2M PHY
- LE Codec PHY
- LE Advertising Extension
- Periodic advertising
- At least 10 advertisement sets
- At least 8 LE concurrent connections. Each connection can be in either connection topology roles.
- LE Link Layer Privacy
- A "resolving list" size of at least 8 entries
7.4.9 UWB : Added a requirements section for UWB hardware.
See revision
7.4.9. UWB
If device implementations report support for feature
android.hardware.uwb
via theandroid.content.pm.PackageManager
class, then they:- [C-1-1] MUST ensure the distance measurements are within +/-15 cm for 95% of the measurements in the line of sight environment at 1m distance in a non-reflective chamber.
- [C-1-2] MUST ensure that the median of the distance measurements at 1m from the reference device is within [0.75m, 1.25m], where ground truth distance is measured from the top edge of the DUT held face up and tilted 45 degrees.
Presence Calibration Requirements 에 지정된 측정 설정 단계를 따를 것을 적극 권장합니다(STRONGLY RECOMMENDED).
7.5 Cameras : Updates to the requirements for HDR 10-bit output capability.
See revision
If device implementations support HDR 10-bit output capability, then they:
- [C-2-1] MUST support at least the HLG HDR profile for every camera device that supports 10-bit output.
- [C-2-2] MUST support 10-bit output for either the primary rear-facing or the primary front-facing camera.
- [C-SR] Are STRONGLY RECOMMENDED to support 10-bit output for both primary cameras.
- [C-2-3] MUST support the same HDR profiles for all BACKWARD_COMPATIBLE-capable physical sub-cameras of a logical camera, and the logical camera itself.
For Logical camera devices which support 10-bit HDR that implement the
android.hardware.camera2.CaptureRequest#CONTROL_ZOOM_RATIO
API, they:- [C-3-1] MUST support switching between all the backwards-compatible physical cameras via the
CONTROL_ZOOM_RATIO
control on the logical camera.
7.7.2 USB Host Mode : Revisions for dual role ports.
See revision
If device implementations include a USB port supporting host mode and USB Type-C, they:
- [C-4-1] MUST implement Dual Role Port functionality as defined by the USB Type-C specification (section 4.5.1.3.3). For Dual Role Ports, On devices that include a 3.5mm audio jack, the USB sink detection (host mode) MAY be off by default but it MUST be possible for the user to enable it.
7.11 Media Performance Class : Updated to include Android T.
See revision
If device implementations return non-zero value for
android.os.Build.VERSION_CODES.MEDIA_PERFORMANCE_CLASS
, they:- [C-1-3] MUST meet all requirements for "Media Performance Class" described in section 2.2.7 .
In other words, media performance class in Android T is only defined for handheld devices at version T, S or R.
See section 2.2.7 for device-specific requirements.
9. Security Model Compatibility
9.1 Permissions : Extend accepted paths for permissions allowlists for preinstalled apps to APEX files.
See revision
- [C-0-2] Permissions with a
protectionLevel
ofPROTECTION_FLAG_PRIVILEGED
MUST only be granted to apps preinstalled in the privileged path(s) of the system image (as well as APEX files ) and be within the subset of the explicitly allowlisted permissions for each app. The AOSP implementation meets this requirement by reading and honoring the allowlisted permissions for each app from the files in theetc/permissions/
path and using thesystem/priv-app
path as the privileged path.
- [C-0-2] Permissions with a
9.7 Security Features : Updates to initialization requirements to maintain kernel integrity.
See revision
Kernel integrity and self-protection features are integral to Android security. 장치 구현:
- [C-SR] Are STRONGLY RECOMMENDED to enable stack initialization in the kernel to prevent uses of uninitialized local variables (
CONFIG_INIT_STACK_ALL
orCONFIG_INIT_STACK_ALL_ZERO
). Also, device implementations SHOULD NOT assume the value used by the compiler to initialize the locals.
- [C-SR] Are STRONGLY RECOMMENDED to enable stack initialization in the kernel to prevent uses of uninitialized local variables (
9.8.7 Privacy — Clipboard Access : Automatically clear clipboard data after 60 minutes following a cut/copy/paste activity to protect user privacy.
See revision
장치 구현:
- [C-0-1] MUST NOT return a clipped data from the clipboard (eg via the
ClipboardManager
API) unless the 3rd-party app is the default IME or is the app that currently has focus. - [C-0-2] MUST clear clipboard data at most 60 minutes after it has last been placed in a clipboard or read from a clipboard.
- [C-0-1] MUST NOT return a clipped data from the clipboard (eg via the
9.11 Keys and Credentials : Updates to the secure lock screen requirements, including the addition of ECDH and 3DES to crypto algorithms.
See revision
When the device implementation supports a secure lock screen, it:
- [C-1-2] MUST have implementations of RSA, AES, ECDSA, ECDH (if IKeyMintDevice is supported), 3DES, and HMAC cryptographic algorithms and MD5, SHA1, and SHA-2 family hash functions to properly support the Android Keystore system's supported algorithms in an area that is securely isolated from the code running on the kernel and above. 보안 격리는 커널 또는 사용자 공간 코드가 DMA를 포함하여 격리된 환경의 내부 상태에 액세스할 수 있는 모든 잠재적 메커니즘을 차단해야 합니다(MUST). 업스트림 AOSP(Android 오픈 소스 프로젝트)는 Trusty 구현을 사용하여 이 요구 사항을 충족하지만 다른 ARM TrustZone 기반 솔루션 또는 적절한 하이퍼바이저 기반 격리의 타사 검토 보안 구현이 대체 옵션입니다.
9.11.1 Secure Lock Screen, Authentication, and Virtual Devices : Added requirements section for virtual devices and authentication transfers.
See revision
If device implementations add or modify the authentication methods to unlock the lock screen and a new authentication method is based on a physical token or the location:
- [C-6-3] The user MUST be challenged for one of the recommended primary authentication methods (egPIN, pattern, password) at least once every 4 hours or less. When a physical token meets the requirements for TrustAgent implementations in CX, timeout restrictions defined in C-9-5 apply instead.
If device implementations allow applications to create secondary virtual displays and do not support associated input events, such as via
VirtualDeviceManager
, they:- [C-9-1] MUST lock these secondary virtual display(s) when the device's default display is locked, and unlock these secondary virtual display(s) when the device's default display is unlocked.
If device implementations allow applications to create secondary virtual displays and support associated input events, such as via VirtualDeviceManager , they:
- [C-10-1] MUST support separate lock states per virtual device
- [C-10-2] MUST disconnect all virtual devices upon idle timeout
- [C-10-3] MUST have an idle timeout
- [C-10-4] MUST lock all displays when the user initiates a lockdown , including via the lockdown user affordance required for handheld devices (see Section 2.2.5[9.11/H-1-2] )
- [C-10-5] MUST have separate virtual device instances per user
- [C-10-6] MUST disable the creation of associated input events via
VirtualDeviceManager
when indicated byDevicePolicyManager.setNearbyAppStreamingPolicy
- [C-10-7] MUST use a separate clipboard solely for each virtual device (or disable the clipboard for virtual devices)
- [C-10-11] MUST disable authentication UI on virtual devices, including knowledge factor entry and biometric prompt
- [C-10-12] MUST restrict intents initiated from a virtual device to display only on the same virtual device
- [C-10-13] MUST not use a virtual device lock state as user authentication authorization with the Android Keystore System. See
KeyGenParameterSpec.Builder.setUserAuthentication*
.
When device implementations allow the user to transfer the primary authentication knowledge-factor from a source device to a target device, such as for initial setup of the target device, they:
- [C-11-1] MUST encrypt the knowledge-factor with protection guarantees similar to those described in the Google Cloud Key Vault Service security whitepaper when transferring the knowledge-factor from the source device to the target device such that the knowledge-factor cannot be remotely decrypted or used to remotely unlock either device.
- [C-11-2] MUST, on the source device , ask the user to confirm the knowledge-factor of the source device before transferring the knowledge-factor to the target device.
- [C-11-3] MUST, on a target device lacking any set primary authentication knowledge-factor, ask the user to confirm a transferred knowledge-factor on the target device before setting that knowledge-factor as the primary authentication knowledge-factor for the target device and before making available any data transferred from a source device.
If device implementations have a secure lock screen and include one or more trust agents, which call the
TrustAgentService.grantTrust()
System API with theFLAG_GRANT_TRUST_TEMPORARY_AND_RENEWABLE
flag they:- [C-12-1] MUST only call
grantTrust()
with the flag when connected to a proximate physical device with a lockscreen of its own, and when the user has authenticated their identity against that lockscreen. Proximate devices can use on-wrist or on-body detection mechanisms after a one-time user unlock to satisfy the user authentication requirement. - [C-12-2] MUST put the device implementation into the
TrustState.TRUSTABLE
state when the screen is turned off (such as via a button press or display time out) and the TrustAgent has not revoked trust. The AOSP satisfies this requirement. - [C-12-3] MUST only move the device from
TrustState.TRUSTABLE
to theTrustState.TRUSTED
state if the TrustAgent is still granting trust based on the requirements in C-12-1. - [C-12-4] MUST call
TrustManagerService.revokeTrust()
after a maximum of 24 hours from granting trust, an 8 hour idle window, or when the underlying connection to the proximate physical device is lost.
If device implementations allow applications to create secondary virtual displays and support associated input events such as via VirtualDeviceManager and the displays are not marked with VIRTUAL_DISPLAY_FLAG_SECURE, they:
- [C-13-8] MUST block activities with the attribute android:canDisplayOnRemoteDevices or the meta-data android.activity.can_display_on_remote_devices set to false from being started on the virtualdevice.
- [C-13-9] MUST block activities which do not explicitly enable streaming and which indicate they show sensitive content, including via SurfaceView#setSecure, FLAG_SECURE, or SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS, from being started on the virtual device.
- [C-13-10] MUST disable installation of apps initiated from virtual devices.
9.11.2 Strongbox : Making insider attack resistance (IAR) a necessary requirement.
See revision
To validate compliance with [C-1-3] through [C-1-9], device implementations:
- [C-SR] are STRONGLY RECOMMENDED to provide insider attack resistance (IAR), which means that an insider with access to firmware signing keys cannot produce firmware that causes the StrongBox to leak secrets, to bypass functional security requirements or otherwise enable access to sensitive user data. The recommended way to implement IAR is to allow firmware updates only when the primary user password is provided via the IAuthSecret HAL. IAR will become a MUST requirement in Android 14 (AOSP experimental).
9.11.3 Identity Credential : Added information about the Identity Credential system reference implementation.
See revision
The Identity Credential System is defined and achieved by implementing all APIs in the
android.security.identity.*
package. These APIs allows app developers to store and retrieve user identity documents. 장치 구현:The upstream Android Open Source Project provides a reference implementation of a trusted application ( libeic ) that can be used to implement the Identity Credential system.
9.11.4 ID Attestation : Added a section for ID attestation requirement.
See revision
9.11.4. ID Attestation
Device implementations MUST support ID attestation .
9.17 Android Virtualization Framework : Added a requirements section for Android Virtualization Framework.
See revision
9.17. Android Virtualization Framework
If the device implements support for the Android Virtualization Framework APIs (
android.system.virtualmachine.*
), the Android host:- [C-1-1] MUST support all the APIs defined by the
android.system.virtualmachine.*
package. - [C-1-2] MUST NOT modify the Android SELinux and permission model for the management of Protected Virtual Machines.
- [C-1-3] MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy provided in the upstream Android Open Source Project (AOSP) and the policy MUST compile with all neverallow rules present.
- [C-1-4] MUST NOT allow untrusted code (eg 3p apps) to create and run a Protected Virtual Machine. Note: This might change in future Android releases.
- [C-1-5] MUST NOT allow a Protected Virtual Machine to execute code that is not part of the factory image or their updates. Anything that is not covered by Android Verified Boot (eg files downloaded from the Internet or sideloaded) MUST NOT be allowed to be run in a Protected Virtual Machine.
If the device implements support for the Android Virtualization Framework APIs (
android.system.virtualmachine.*
), then any Protected Virtual Machine instance:- [C-2-1] MUST be able to run all operating systems available in the virtualization APEX in a Protected Virtual Machine.
- [C-2-2] MUST NOT allow a Protected Virtual Machine to run an operating system that is not signed by the device implementor or OS vendor.
- [C-2-3] MUST NOT allow a Protected Virtual Machine to execute data as code (eg SELinux neverallow execmem).
- [C-2-4] MUST NOT modify, omit, or replace the neverallow rules present within the system/sepolicy/microdroid provided in the upstream Android Open Source Project (AOSP).
- [C-2-5] MUST implement Protected Virtual Machine defense-in-depth mechanisms (eg SELinux for pVMs) even for non-Microdroid operating systems.
- [C-2-6] MUST ensure that the pVM firmware refuses to boot if it cannot verify the initial image.
- [C-2-7] MUST ensure that the pVM firmware refuses to boot if the integrity of the instance.img is compromised.
If the device implements support for the Android Virtualization Framework APIs (
android.system.virtualmachine.*
), then the hypervisor:- [C-3-1] MUST NOT allow any pVM to have access to a page belonging to another entity (ie other pVM or hypervisor), unless explicitly shared by the page owner. This includes the host VM. This applies to both CPU and DMA accesses.
- [C-3-2] MUST wipe a page after it is used by a VM and before it is returned to the host (eg the pVM is destroyed).
- [C-3-3] MUST ensure that the pVM firmware is loaded and executed prior to any code in a pVM.
- [C-3-4] MUST ensure that BCC and CDIs provided to a pVM instance can only be derived by that particular instance.
If the device implements support for the Android Virtualization Framework APIs, then across all areas:
- [C-4-1] MUST NOT provide functionality to a pVM that allows bypassing the Android Security Model.
If the device implements support for the Android Virtualization Framework APIs, then:
- [C-5-1] MUST support Isolated Compilation of an ART runtime update.
If the device implements support for the Android Virtualization Framework APIs, then for Key Management:
- [C-6-1] MUST root DICE chain at a point that the user cannot modify, even on unlocked devices. (To ensure it cannot be spoofed).
- [C-6-2] MUST do DICE properly ie provide the correct values. But it might not have to go to that level of detail.
- [C-1-1] MUST support all the APIs defined by the
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2023-08-14(UTC)
[{ "type": "thumb-down", "id": "missingTheInformationINeed", "label":"필요한 정보가 없음" },{ "type": "thumb-down", "id": "tooComplicatedTooManySteps", "label":"너무 복잡함/단계 수가 너무 많음" },{ "type": "thumb-down", "id": "outOfDate", "label":"오래됨" },{ "type": "thumb-down", "id": "translationIssue", "label":"번역 문제" },{ "type": "thumb-down", "id": "samplesCodeIssue", "label":"샘플/코드 문제" },{ "type": "thumb-down", "id": "otherDown", "label":"기타" }] [{ "type": "thumb-up", "id": "easyToUnderstand", "label":"이해하기 쉬움" },{ "type": "thumb-up", "id": "solvedMyProblem", "label":"문제가 해결됨" },{ "type": "thumb-up", "id": "otherUp", "label":"기타" }] - [C-2-1] MUST return