기능 및 API 개요

Android 13에는 개발자를 위한 훌륭한 새로운 기능과 API가 도입되었습니다. 아래 섹션을 통해 앱을 위한 기능을 알아보고 관련 API를 살펴볼 수 있습니다.

새로운 API, 수정된 API, 삭제된 API에 관한 자세한 목록은 API 차이점 보고서를 참고하세요. 새로운 API에 관한 자세한 내용은 Android API 참조를 방문하세요. 새로운 API가 강조표시되어 쉽게 확인 가능합니다. 또한 플랫폼 변경이 앱에 영향을 줄 수 있는 분야에 관해 알아보려면 Android 13을 타겟팅하는 앱모든 앱의 Android 13 동작 변경사항을 확인해야 합니다.

개발자 생산성 및 도구

테마 앱 아이콘

테마 앱 아이콘을 선택한 사용자
Android 13에서 테마 앱 아이콘 선택

Android 13부터 테마 앱 아이콘을 선택할 수 있습니다. 이 기능을 사용하면 지원되는 Android 런처의 앱 아이콘이 사용자가 선택한 배경화면 및 기타 테마의 색상을 상속받도록 색조가 조정됩니다.

이 기능을 지원하려면 앱이 적응형 아이콘과 단색 앱 아이콘을 모두 제공해야 하며 매니페스트의 <adaptive-icon> 요소에서 단색 앱 아이콘을 가리켜야 합니다. 사용자가 테마 앱 아이콘을 사용 설정(즉, 시스템 설정에서 테마 아이콘 전환 버튼을 사용 설정)했으며 런처에서 이 기능을 지원하는 경우 시스템은 사용자가 선택한 배경화면 및 테마의 색상을 사용하여 색조 색상을 결정한 후 단색 앱 아이콘에 적용합니다.

홈 화면에는 다음 시나리오에서 테마 앱 아이콘이 표시되지 않고 적응형 또는 표준 앱 아이콘이 대신 표시됩니다.

  • 사용자가 테마 앱 아이콘을 사용 설정하지 않은 경우
  • 앱에서 단색 앱 아이콘을 제공하지 않는 경우
  • 런처에서 테마 앱 아이콘을 지원하지 않는 경우

자세한 내용 및 안내는 적응형 아이콘을 참고하세요.

앱별 언어 설정

시스템 설정의 앱별 언어

다국어 사용자의 경우 시스템 언어는 한 가지 언어(예: 영어)로 설정하지만 특정 앱에는 다른 언어(예: 네덜란드어나 중국어, 힌디어)를 선택하고자 할 수 있습니다. 앱이 이러한 사용자에게 더 나은 환경을 제공할 수 있도록 Android 13에서는 다국어를 지원하는 앱을 위한 다음과 같은 기능을 도입했습니다.

  • 시스템 설정: 사용자가 각 앱의 기본 언어를 선택할 수 있는 중앙 위치입니다.

    앱은 앱의 매니페스트에서 android:localeConfig 속성을 선언하여 시스템에 여러 언어를 지원한다는 것을 알려야 합니다. 자세한 내용은 리소스 파일을 만들고 앱의 매니페스트 파일에서 선언하는 방법에 관한 안내를 참고하세요.

  • 추가 API: 공개 API(예: LocaleManagersetApplicationLocales()getApplicationLocales() 메서드)를 사용하면 앱이 런타임 중 시스템 언어와 다른 언어를 설정할 수 있습니다.

    이러한 API는 시스템 설정과 자동으로 동기화됩니다. 따라서 이러한 API를 사용하여 맞춤 인앱 언어 선택 도구를 만드는 앱은 언어 설정을 선택하는 위치와 관계없이 일관된 사용자 환경을 보장합니다. 또한 공개 API는 상용구 코드의 양을 줄이는 데 도움이 되고, 분할 APK를 지원하며, 앱 수준의 사용자 언어 설정을 저장하도록 앱 자동 백업을 지원합니다.

    이전 Android 버전과의 호환성을 위해 AndroidX에서도 이에 상응하는 API를 사용할 수 있습니다. Appcompat 1.6.0-beta01 이상에 추가된 API를 사용하는 것이 좋습니다.

다국어를 지원하지 않는 앱은 이러한 변경사항의 영향을 받지 않습니다.

텍스트 및 언어 지원 개선

Android 13에는 더 나은 환경을 제공하는 데 도움이 되는 여러 기능과 텍스트 및 언어 개선사항이 포함되어 있으며 다음 섹션에서 설명합니다.

더 빠른 하이픈 연결

하이픈 연결을 사용하면 래핑된 텍스트를 더 쉽게 읽을 수 있고 UI의 적응력을 높일 수 있습니다. Android 13부터 하이픈 연결 성능을 최대 200%까지 최적화하므로 렌더링 성능에 거의 영향을 미치지 않고 TextView에서 하이픈 연결을 사용 설정할 수 있습니다. 더 빠른 하이픈 연결을 사용 설정하려면 setHyphenationFrequency()에서 fullFast 또는 normalFast 실행 빈도를 사용합니다.

텍스트 변환 API

일본어, 중국어와 같은 언어를 사용하는 사용자는 표음 문자 입력 방법을 사용하는데, 이로 인해 검색 및 자동 완성과 같은 기능이 느려지는 경우가 많습니다. Android 13에서는 사용자가 원하는 항목을 더 빠르고 쉽게 찾을 수 있도록 앱에서 새로운 텍스트 변환 API를 호출할 수 있습니다. 이전에는 일례로 일본어 사용자가 검색을 진행할 때 다음 단계를 수행해야 했습니다.

  1. 검색어(예: 장소 또는 앱 이름)의 표음 발음으로 히라가나를 입력합니다.
  2. 키보드를 사용하여 히라가나 문자를 간지로 변환합니다.
  3. 간지 캐릭터를 사용하여 다시 검색합니다.
  4. 검색결과가 표시됩니다.

새로운 텍스트 변환 API를 사용하면 일본어 사용자가 히라가나로 입력하는 즉시 2단계와 3단계를 건너뛰고 간지 검색결과를 실시간으로 볼 수 있습니다.

라틴어 이외 문자의 행 높이 개선

Android 13에서는 각 언어에 맞게 조정된 행 높이를 사용하여 라틴어 이외 문자(예: 타밀어, 버마어, 텔루구어, 티베트어)의 표시를 개선합니다. 새로운 행 높이는 문자의 잘림을 방지하고 문자의 배치를 개선합니다. 앱에서 Android 13을 타겟팅하면 이 개선사항을 사용할 수 있습니다. 새로운 줄 간격을 사용할 때는 라틴어 이외 언어의 UI에 영향을 줄 수 있으므로 반드시 앱을 테스트하세요.

Android 12 이상에서는 잘렸던 행 높이(위)가 이제 Android 13에서 잘리지 않고 제대로 배치됩니다(아래).

일본어 텍스트 줄바꿈 개선

Android 13부터 TextView는 문자 대신 문절(자연스럽게 들리는 가장 작은 단위의 단어) 또는 구문 단위로 텍스트를 줄바꿈하여 일본어 애플리케이션의 유창성과 가독성을 향상합니다. 이와 같이 줄바꿈을 개선하려면 TextView를 android:lineBreakWordStyle="phrase"와 함께 사용합니다.

구문 스타일이 설정된 경우(아래)와 설정되지 않은 경우(위)의 일본어 텍스트 줄바꿈.

유니코드 라이브러리 업데이트

Android 13에서는 유니코드 ICU 70, 유니코드 CLDR 40, 유니코드 14.0에 포함된 최신 개선사항과 수정사항, 변경사항을 추가했습니다.

다음은 두 가지 주요 변경사항입니다.

  • 영어(캐나다) en‑CA 및 영어(필리핀) en‑PH가 모두 영어(영국) en‑GB 대신 사용할 수 있는 번역 리소스가 없을 때 영어(미국) en 번역 리소스를 사용합니다.
  • many 복수 카테고리가 스페인어 es, 이탈리아어 it, 포르투갈어 pt, 포르투갈어(포르투갈) pt‑PT에 도입되었습니다. CLDR v38에서 도입된 프랑스어와 마찬가지로 많은 수에 사용됩니다.

색상 벡터 글꼴

COLRv1 벡터 이모티콘(왼쪽)과 비트맵 이모티콘(오른쪽)

Android 13부터 시스템에서는 COLR 버전 1(COLRv1) 글꼴의 렌더링 지원이 포함되고 시스템 이모티콘이 COLRv1 형식으로 업데이트됩니다. COLRv1은 모든 크기에서 빠르고 선명하게 렌더링되는 매우 작은 글꼴 형식입니다.

대부분의 앱에서는 시스템이 모든 작업을 처리하며 별다른 설정 없이 COLRv1이 작동합니다. 그러나 앱이 자체 텍스트 렌더링을 구현했으며 시스템 글꼴을 사용하는 경우에는 이모티콘 렌더링을 테스트해 볼 것을 권장합니다.

COLRv1에 관해 자세히 알아보려면 다음 리소스를 참고하세요.

빠른 설정 배치 API

알림 창의 빠른 설정을 사용하면 사용자가 앱의 컨텍스트 내에서 편리하게 설정을 변경하거나 빠른 작업을 할 수 있습니다. 맞춤 타일을 제공하는 앱의 경우 사용자가 더 쉽게 타일을 찾아 빠른 설정에 추가할 수 있습니다. 새 타일 배치 API를 사용하면 이제 앱에서 사용자에게 활성화된 빠른 설정 타일 세트에 맞춤 타일을 직접 추가하라는 메시지를 표시할 수 있습니다. 새 시스템 대화상자를 사용하면 사용자가 빠른 설정으로 이동하여 타일을 추가할 필요 없이 앱을 나가지 않고도 한 번에 타일을 추가할 수 있습니다.

사용자에게 빠른 설정에 타일을 추가할지 묻는 대화상자

클립보드 미리보기

Android 13부터 시스템에서는 콘텐츠가 클립보드에 추가될 때 표준 시각적 확인 메시지를 표시합니다. 새 확인 메시지를 통해 다음 작업이 실행됩니다.

  • 콘텐츠가 복사되었는지 확인합니다.
  • 복사된 콘텐츠의 미리보기를 제공합니다.

이 기능은 복사 후 앱에서 표시하는 다양한 알림을 표준화하고 사용자가 클립보드를 더 세부적으로 제어할 수 있도록 합니다. 자세한 내용은 복사하여 붙여넣기 기능 페이지를 참고하세요.

위젯 복사/붙여넣기
콘텐츠가 클립보드에 들어갈 때 표시되는 새 UI

예측 뒤로 동작

Android 13에서는 휴대전화, 대형 화면, 폴더블과 같은 Android 기기의 예측 뒤로 동작을 도입합니다. 이 기능을 지원하려면 앱을 업데이트해야 합니다.

자세한 내용은 예측 뒤로 동작을 지원하도록 앱 업데이트를 참고하세요. Codelab을 사용해 볼 수도 있습니다.

블루투스 LE 오디오

LE(저전력) 오디오는 블루투스 클래식을 대체하기 위해 제작된 무선 오디오로, 특정 사용 사례와 연결 토폴로지를 지원합니다. LE 오디오를 사용하면 사용자가 자신의 오디오를 친구 및 가족에게 공유 및 방송하거나 정보, 엔터테인먼트 또는 접근성을 위해 공개 방송을 구독할 수 있습니다. LE 오디오는 사용자가 배터리 수명을 단축하지 않으면서 Hi-Fi 오디오를 수신하고 Bluetooth 클래식으로는 불가능한 여러 사용 사례 간에 매끄럽게 전환할 수 있도록 해 줍니다. Android 13부터 시스템에는 LE 오디오 지원이 내장되어 있으므로 개발자는 호환되는 기기에서 이러한 기능을 무료로 받을 수 있습니다.

MIDI 2.0

Android 13부터 시스템에는 USB를 통해 MIDI 2.0 하드웨어를 연결하는 기능을 포함하여 MIDI 2.0 표준 지원이 포함됩니다. 이 표준은 컨트롤러의 향상된 해상도, 서양어가 아닌 억양에 대한 지원 강화, 음당 컨트롤러를 사용한 보다 풍부한 성능과 같은 기능을 제공합니다.

스플래시 화면 효율성 개선

Android 13에서는 Splash Screen API에서 애니메이션 스플래시 화면의 효율성을 개선합니다.

  • 시스템이 AnimatedVectorDrawable에서 직접 애니메이션 지속 시간을 추론합니다. Android 13 이전에는 windowSplashScreenAnimationDuration을 직접 설정해야 했습니다.

  • 새로운 windowSplashScreenBehavior 속성을 사용하면 Android 13 이상에서 앱이 항상 스플래시 화면에 아이콘을 표시할지 여부를 더 효과적으로 제어할 수 있습니다.

자세한 내용은 스플래시 화면을 참고하세요.

ART 최적화

Android 13 (API 수준 33) 이상에서는 ART가 네이티브 코드 간에 전환하는 속도를 훨씬 높여 JNI 호출 속도가 최대 2.5배 빨라졌습니다. 런타임 참조 처리도 대부분 비차단형으로 재작업되어 버벅거림이 더욱 줄었습니다. 또한 Reference.refersTo() 공개 API를 사용하여 도달할 수 없는 객체를 더 빨리 회수할 수 있으며, 최적화된 클래스 및 메서드 조회 덕분에 이제 인터프리터가 더 빨라집니다. 또한 ART는 설치 시 더 많은 바이트코드 검사를 실행하여 런타임 시의 검사 비용을 방지하고 앱 시작 시간을 빠르게 유지합니다.

개인 정보 보호 및 보안

컨텍스트 등록 수신기의 안전한 내보내기

런타임 수신기를 더 안전하게 만들기 위해 Android 13에서는 앱이 등록된 broadcast receiver를 내보내고 기기의 다른 앱에 표시할지 지정할 수 있는 기능을 도입했습니다. 이전 버전의 Android에서는 수신기가 서명 권한에 의해 보호되지 않는 한 기기의 모든 앱이 동적으로 등록된 수신기로 보호되지 않은 브로드캐스트를 보낼 수 있었습니다.

이 내보내기 구성은 다음 중 하나 이상을 실행하는 앱에서 사용할 수 있습니다.

사진 선택 도구

Android 13(API 수준 33) 이상에는 사진 선택 도구 환경이 포함되어 있습니다. 앱이 사진 선택 도구를 실행하면 사용자는 앱에 전체 미디어 라이브러리를 볼 수 있는 액세스 권한을 부여하는 대신 앱과 공유할 특정 이미지와 동영상(예: 프로필 사진)을 선택합니다. 이는 사용자의 사진과 동영상에 액세스할 때 권장되는 방법입니다.

사진 선택 도구는 사용자의 개인 정보 보호를 강화합니다. 앱이 런타임 권한을 선언하지 않아도 되기 때문입니다. 또한 사진 선택 도구는 앱에 표준화된 내장 UI를 제공하므로 사용자 환경의 일관성이 높아집니다.

근처 Wi-Fi 기기의 새 런타임 권한

Android 13(API 수준 33)에서는 Wi-Fi를 통해 근처 액세스 포인트에 대한 기기의 연결을 관리하는 앱을 위해 NEARBY_DEVICES 권한 그룹의 새로운 런타임 권한을 도입했습니다. 이러한 앱은 여러 다양한 Wi-Fi API를 호출할 때 새로운 권한 NEARBY_WIFI_DEVICES를 선언해야 합니다. 또한 앱이 Wi-Fi API에서 물리적 위치를 얻지 않는 한 Android 13 이상을 타겟팅할 때 ACCESS_FINE_LOCATION 권한을 선언하지 않아도 됩니다.

근처 Wi-Fi 기기 권한에 관해 자세히 알아보세요.

정확한 알람을 사용하는 새로운 권한

앱이 Android 13 이상을 타겟팅하는 경우 앱에 자동으로 부여되는 USE_EXACT_ALARM 권한을 사용할 수 있습니다. 그러나 앱이 이 권한을 사용하려면 다음 기준 중 하나 이상을 충족해야 합니다.

  • 앱이 알람 시계 앱이거나 타이머 앱입니다.
  • 앱이 예정된 일정에 관한 알림을 표시하는 캘린더 앱입니다.

앱이 정확한 알람을 설정하지만 이전 목록에 표시된 두 사례 중 어떠한 것도 충족하지 않으면 대신 SCHEDULE_EXACT_ALARM 권한을 계속 선언하고 사용자가 앱 액세스를 거부하는 상황에 대비하세요.

개발자 다운그레이드 권한

Android 13부터는 앱에서 사용하지 않는 런타임 권한에 대한 액세스를 취소할 수 있습니다. 이 API를 사용하면 앱에서 다음과 같은 개인 정보 보호 강화 작업을 실행할 수 있습니다.

  • 사용하지 않는 권한을 삭제합니다.
  • 권한 권장사항을 준수하여 사용자 신뢰를 높입니다. 사용자에게 개발자가 사전에 취소한 권한을 표시하는 대화상자를 표시하는 것이 좋습니다.

APK 서명 체계 v3.1

Android 13에서는 기존 APK 서명 체계 v3보다 개선된 APK 서명 체계 v3.1 지원이 추가되었습니다. 이 체계는 순환과 관련된 APK 서명 체계 v3의 알려진 문제 중 일부를 해결합니다. 특히 v3.1 서명 체계는 SDK 버전 타겟팅을 지원하므로, 순환에서 플랫폼의 최신 버전을 타겟팅할 수 있습니다.

v3.1 서명 체계는 12L 이하에서는 인식되지 않는 블록 ID를 사용합니다. 따라서 플랫폼은 다음과 같은 서명자 동작을 적용합니다.

  • Android 13 이상을 실행하는 기기는 v3.1 블록의 순환된 서명자를 사용합니다.
  • 이전 버전의 Android를 실행하는 기기는 순환된 서명자를 무시하고 v3.0 블록의 원래 서명자를 사용합니다.

아직 서명 키를 순환하지 않은 앱에는 추가 작업이 필요하지 않습니다. 이러한 앱이 순환할 때마다 시스템은 기본적으로 v3.1 서명 체계를 적용합니다.

이미 순환되었고 계속해서 v3.0 서명 블록의 순환된 서명 키를 사용하려는 앱은 다음과 같이 apksigner 호출을 업데이트해야 합니다.

apksigner sign --ks keystore.jks |
  --key key.pk8 --cert cert.x509.pem
  --rotation-min-sdk-version API_LEVEL
  [signer_options] app-name.apk

여기서 API_LEVEL은 32 이하입니다.

키 저장소 및 KeyMint의 오류 보고 개선

키를 생성하는 앱의 경우 이제 키 저장소와 KeyMint에서 더 자세하고 정확한 오류 표시기를 제공합니다. java.security.ProviderException 아래에 예외 클래스 계층 구조를 추가했습니다. 여기에는 키 저장소/KeyMint 오류 코드와 오류의 재시도 가능 여부가 포함된 Android 관련 예외가 포함되어 있습니다. 또한 키 생성 및 사용(서명, 암호화) 메서드를 수정하여 새 예외를 발생시킬 수 있습니다. 개선된 오류 보고는 키 생성으로 제한되지 않으며 이제 키 생성을 다시 시도하는 데 필요한 사항을 제공합니다.

태블릿 및 대형 화면 지원

Android 13은 시스템 UI 최적화, 향상된 멀티태스킹, 개선된 호환성 모드 등 Android 12 및 12L 기능 출시에서 도입된 태블릿 최적화를 기반으로 빌드되었습니다. 테스트의 일환으로 앱이 태블릿과 기타 대형 화면 기기에서 최적으로 표시되도록 합니다.

새로운 기능 및 테스트 항목에 관한 자세한 내용은 태블릿 및 대형 화면 지원 페이지를 참고하세요.

그래픽

프로그래밍 가능한 셰이더

GLSL 셰이더에서 조정된 AGSL 애니메이션 셰이더

Android 13부터 시스템에서는 프로그래밍 가능한 RuntimeShader 객체를 지원하며 동작은 AGSL(Android Graphics Shading Language)을 사용하여 정의됩니다. AGSL은 대부분의 문법을 GLSL과 공유하지만 Android 렌더링 엔진 내에서 작동하여 Android 캔버스 내 페인팅과 뷰 콘텐츠 필터링을 맞춤설정합니다. Android는 내부적으로 이러한 셰이더를 사용하여 물결 효과, 블러, 스트레치 오버스크롤을 구현합니다. Android 13 이상에서는 앱에 유사한 고급 효과를 만들 수 있습니다.

Choreographer 개선사항

Android 13에서는 ChoreographerASurfaceControl에 공개 API 메서드를 도입합니다. 이는 가능한 프레임 타임라인에 관한 자세한 정보를 앱에 제공하고 프레임 수명 주기에 관한 SurfaceFlinger에 더 많은 컨텍스트를 추가합니다. 이전과 마찬가지로 앱은 Choreographer콜백을 게시하고 프레임 타임라인 정보를 수신할 수 있습니다. Android 13(API 수준 33)에서 Choreographer는 가능한 여러 프레젠테이션 시간과 이에 상응하는 프레임 기한을 반환합니다. 앱은 프레젠테이션 시간을 선택한 후 SurfaceFlinger에 선택사항을 알릴 수 있습니다. 그러면 SurfaceFlinger는 원하는 프레젠테이션 시간 전에 트랜잭션을 적용하거나 버퍼를 래칭하려고 하지 않습니다.

앱에서 새 Choreographer 및 SurfaceControl 메서드를 사용하는 경우 Perfetto 트레이스에서 앱의 프레임 수명 주기를 확인할 수 있습니다.

카메라

HDR 동영상 캡처

Android 13부터 Camera2 API는 카메라를 사용하여 HDR 동영상 콘텐츠를 미리 보고 녹화할 수 있는 HDR(High Dynamic Range) 동영상 캡처를 지원합니다. SDR(Standard Dynamic Range)에 비해 HDR은 더 넓은 범위의 색상을 제공하고 휘도 구성요소의 동적 범위를 현재 100cd/m2에서 수천 cd/m2로 늘립니다. 따라서 보다 풍부한 색상, 더 밝은톤, 더 어두운 그림자로 동영상 품질이 실제와 더 가까워집니다.

HDR 동영상 캡처에 관한 자세한 내용은 HDR 동영상 캡처 문서를 참고하세요.

미디어

공간 음향

공간 음향은 사용자에게 미디어 콘텐츠를 더욱 실감 나게 들려주는 몰입감 있는 오디오 환경입니다. 이 기능과 통합하는 방법에 관한 자세한 내용은 공간 음향 문서를 참고하세요.

예상 오디오 라우팅

미디어 앱이 오디오 라우팅 방식을 식별할 수 있도록 Android 13에서는 AudioManager 클래스에 오디오 경로 API를 도입합니다. getAudioDevicesForAttributes() API를 사용하면 지정된 오디오를 재생하는 데 사용할 수 있는 기기 목록을 가져올 수 있고 getDirectProfilesForAttributes() API를 사용하면 오디오 스트림이 직접 재생될 수 있는지 파악할 수 있습니다. 이러한 API를 사용하여 오디오 트랙에 사용할 최적의 AudioFormat을 확인하세요.

접근성

오디오 설명

Android 13(API 수준 33)에서는 사용자가 모든 앱에서 오디오 설명을 사용 설정할 수 있는 새로운 시스템 전체 접근성 환경설정을 도입했습니다. 오디오 설명은 프레젠테이션을 통해 말하는 내레이터로 구성된 추가 내레이션 트랙으로, 오디오가 자연스럽게 일시중지될 때 화면에서 어떤 일이 일어나는지 설명합니다. 앱은 다음 코드 스니펫과 같이 isAudioDescriptionRequested()로 쿼리하여 오디오 설명 트랙의 사용자 환경설정을 따를 수 있습니다.

Kotlin

private lateinit var accessibilityManager: AccessibilityManager

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager::class.java)

// Where your media player is initialized
if (accessibilityManager.isAudioDescriptionRequested) {
    // User has requested to enable audio descriptions
}

자바

private AccessibilityManager accessibilityManager;

// In onCreate():
accessibilityManager = getSystemService(AccessibilityManager.class);

// Where your media player is initialized
if(accessibilityManager.isAudioDescriptionRequested()) {
    // User has requested to enable audio descriptions
}

앱은 AccessbilityManager에 리스너를 추가하여 사용자의 환경설정 변경을 모니터링할 수 있습니다.

Kotlin

private val listener =
    AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled ->
        // Preference changed; reflect its state in your media player
    }

override fun onStart() {
    super.onStart()

    accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener)
}

override fun onStop() {
    super.onStop()

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener)
}

자바

private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> {
    // Preference changed; reflect its state in your media player
};

@Override
protected void onStart() {
    super.onStart();

    accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener);
}

@Override
protected void onStop() {
    super.onStop();

    accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener);
}

핵심 기능

OpenJDK 11 업데이트

Android 13에서는 애플리케이션과 플랫폼 개발자를 위한 라이브러리 업데이트 및 자바 11 언어 지원이 모두 포함된 OpenJDK 11 LTS 출시에 맞춰 Android의 핵심 라이브러리를 새로고침하는 작업을 시작합니다. Android 13에서 도입된 핵심 라이브러리 변경사항은 ART 메인라인 모듈의 Google Play 시스템 업데이트를 통해 Android 12 기기에서도 사용할 수 있습니다.

Android 13에는 다음과 같은 핵심 라이브러리 변경사항이 포함되어 있습니다.

  • 로컬 변수 및 매개변수 람다로 var 키워드 지원
  • String 클래스의 새 메서드

    • isBlank()
    • lines()
    • repeat()
    • strip()
    • stripLeading()
    • stripTrailing()
  • 컬렉션을 배열에 맞게 더 쉽게 조정할 수 있는 Collection.toArray(IntFunction) 지원

  • java.util 클래스 Optional, OptionalDouble, OptionalInt, OptionalLong에서 ifPresentOrElse(), isEmpty(), orElseThrow(), stream() 지원

  • 소켓 재사용을 포함하여 SocketOptions 지원 확장

  • NullReader, NullWriter, InputStream, OutputStream, transferTo(), Reader 기능이 읽기 문자를 Writer로 전송

  • Charsets를 사용하여 URL 인코딩 및 디코딩 기능 추가

  • FileReader, FileWriter, PrintStream, PrintWriterCharset 기능

  • ByteArrayInput 또는 OutputStreamInput 또는 OutputStream의 새로운 transferTo(), readNBytes(), readAllBytes(), writeBytes() 함수

  • java.lang.invoke.VarHandle에 관한 런타임 및 컴파일러 지원

  • 내부적으로 VarHandle을 사용하여 java.util.concurrent를 OpenJDK 11 API로 업데이트

자바 및 OpenJDK는 Oracle 및/또는 그 계열사의 상표 또는 등록 상표입니다.