기능 및 API

Android 16에서는 개발자를 위한 훌륭한 새 기능과 API가 도입됩니다. 다음 섹션에서는 관련 API를 시작하는 데 도움이 되도록 이러한 기능을 요약합니다.

새로운 API, 수정된 API, 삭제된 API에 관한 자세한 목록은 API diff 보고서를 참고하세요. 새로운 API에 관한 자세한 내용은 Android API 참조를 방문하세요. 새로운 API가 강조 표시되어 쉽게 확인 가능합니다.

또한 플랫폼 변경사항이 앱에 영향을 미칠 수 있는 영역을 검토해야 합니다. 자세한 내용은 다음 페이지를 참고하세요.

핵심 기능

Android에는 Android 시스템의 핵심 기능을 확장하는 새로운 API가 포함되어 있습니다.

2025년 두 가지 Android API 출시

  • 이 미리보기는 2025년 2분기에 출시될 예정인 Android의 다음 주요 버전입니다. 이 버전은 이전의 모든 API 버전과 유사하며, 여기서 targetSdkVersion에 종종 연결된 계획된 동작 변경사항을 적용할 수 있습니다.
  • 더 많은 기기에서 Android의 주요 버전을 더 빨리 사용할 수 있도록 생태계 전반의 기기 출시 일정에 더 잘 맞추기 위해 메이저 버전을 3분기에서 2분기로 한 분기 앞당겨 출시할 계획입니다. 2분기에 주요 버전이 출시될 예정이므로 앱이 준비되었는지 확인하기 위해 전년보다 몇 개월 더 일찍 연간 호환성 테스트를 진행해야 합니다.
  • 2025년 4분기에 새로운 개발자 API도 포함된 버전을 출시할 계획입니다. 2분기 주요 출시는 2025년에 앱에 영향을 줄 수 있는 계획된 동작 변경사항이 포함된 유일한 출시입니다.

Q4 마이너 출시에서는 새로운 개발자 API 외에도 기능 업데이트, 최적화, 버그 수정이 포함됩니다. 앱에 영향을 미치는 동작 변경사항은 포함되지 않습니다.

2025년 Android 출시의 타임라인 보기. 25Q2 출시는 주요 출시이고 25Q4 출시는 부 출시입니다.

앞으로도 분기별로 Android 버전이 계속 출시될 예정입니다. API 출시 사이의 1분기 및 3분기 업데이트는 지속적인 품질을 보장하는 데 도움이 되는 점진적 업데이트를 제공합니다. Google은 기기 파트너와 적극적으로 협력하여 최대한 많은 기기에 Q2 버전을 제공하기 위해 노력하고 있습니다.

메인 및 마이너 출시에서 새 API 사용

API 수준 검사를 사용하여 코드 블록을 보호하는 작업은 현재 VERSION_CODES와 함께 SDK_INT 상수를 사용하여 실행됩니다. 이는 주요 Android 출시에서 계속 지원됩니다.

if (SDK_INT >= VERSION_CODES.BAKLAVA) {
  // Use APIs introduced in Android 16
}

SDK_INT_FULL 상수는 새 VERSION_CODES_FULL 열거형을 사용하여 주 버전과 부 버전 모두에 대한 API 검사에 사용할 수 있습니다.

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor release
}

Build.getMinorSdkVersion() 메서드를 사용하여 부 SDK 버전만 가져올 수도 있습니다.

val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)

이 API는 아직 최종 결정되지 않았으며 변경될 수 있으므로 우려되는 점이 있으면 의견을 보내주세요.

사용자 환경 및 시스템 UI

Android 16을 사용하면 앱 개발자와 사용자가 필요에 맞게 기기를 구성할 수 있는 더 많은 제어 기능과 유연성을 제공합니다.

진행률 중심 알림

Android 16에서는 사용자가 시작부터 끝까지 사용자 시작 여정을 원활하게 추적할 수 있도록 진행률 중심 알림을 도입합니다.

Notification.ProgressStyle는 진행 상황 중심의 알림을 만들 수 있는 새로운 알림 스타일입니다. 주요 사용 사례로는 차량 공유, 배송, 내비게이션이 있습니다. Notification.ProgressStyle 클래스 내에서 포인트세그먼트를 사용하여 사용자 여정의 상태와 마일스톤을 나타낼 수 있습니다.

자세한 내용은 진행률 중심 알림 문서 페이지를 참고하세요.

잠금 화면에 표시되는 진행률 중심의 알림입니다.
알림 창에 표시되는 진행률 중심 알림

뒤로 탐색 예측 업데이트

Android 16에서는 홈으로 돌아가기 애니메이션과 같은 동작 탐색에서 뒤로 탐색 예측 시스템 애니메이션을 사용 설정하는 데 도움이 되는 새로운 API를 추가합니다. 새로운 PRIORITY_SYSTEM_NAVIGATION_OBSERVERonBackInvokedCallback를 등록하면 앱이 일반 뒤로 탐색 흐름에 영향을 주지 않고 시스템이 뒤로 탐색을 처리할 때마다 일반 onBackInvoked 호출을 수신할 수 있습니다.

Android 16에서는 finishAndRemoveTaskCallback()moveTaskToBackCallback도 추가합니다. 이러한 콜백을 OnBackInvokedDispatcher에 등록하면 시스템은 뒤로 동작이 호출될 때 특정 동작을 트리거하고 상응하는 사전 애니메이션을 재생할 수 있습니다.

리치 햅틱

Android는 처음부터 햅틱 액추에이터 제어를 노출했습니다.

Android 11에서는 기기 정의 시맨틱 프리미티브의 VibrationEffect.Compositions를 통해 고급 액추에이터가 지원할 수 있는 더 복잡한 햅틱 효과에 대한 지원을 추가했습니다.

Android 16에는 앱이 햅틱 효과의 진폭과 주파수 곡선을 정의하면서 기기 기능 간의 차이를 추상화할 수 있는 햅틱 API가 추가되었습니다.

개발자 생산성 및 도구

생산성 향상을 위한 대부분의 작업은 Android 스튜디오, Jetpack Compose, Android Jetpack 라이브러리와 같은 도구를 중심으로 이루어지지만, Google은 항상 플랫폼에서 비전을 실현할 수 있는 방법을 찾고 있습니다.

라이브 배경화면의 콘텐츠 처리

Android 16에서는 라이브 배경화면 프레임워크에 동적 사용자 중심 배경화면의 문제를 해결하기 위한 새로운 콘텐츠 API가 추가됩니다. 현재 사용자 제공 콘텐츠를 통합하는 라이브 배경화면에는 복잡한 서비스별 구현이 필요합니다. Android 16에서는 WallpaperDescriptionWallpaperInstance를 도입합니다. WallpaperDescription을 사용하면 동일한 서비스에서 라이브 배경화면의 고유한 인스턴스를 식별할 수 있습니다. 예를 들어 홈 화면과 잠금 화면에 인스턴스가 있는 배경화면에는 두 위치 모두 고유한 콘텐츠가 있을 수 있습니다. 배경화면 선택 도구와 WallpaperManager는 이 메타데이터를 사용하여 사용자에게 배경화면을 더 효과적으로 표시함으로써 개발자가 다양한 맞춤형 라이브 배경화면 환경을 만드는 프로세스를 간소화할 수 있습니다.

성능 및 배터리

Android 16에서는 앱에 관한 통계를 수집하는 데 도움이 되는 API를 도입합니다.

시스템 트리거 프로파일링

ProfilingManagerAndroid 15에 추가되어 앱이 현장의 공개 기기에서 Perfetto를 사용하여 프로파일링 데이터 수집을 요청할 수 있습니다. 그러나 이 프로파일링은 앱에서 시작해야 하므로 시작 또는 ANR과 같은 중요한 흐름은 앱에서 캡처하기 어렵거나 불가능합니다.

이를 위해 Android 16에서는 ProfilingManager에 시스템 트리거 프로파일링을 도입합니다. 앱은 콜드 스타트 reportFullyDrawn 또는 ANR과 같은 특정 트리거의 트레이스를 수신하는 데 관심을 등록할 수 있으며, 그러면 시스템이 앱을 대신하여 트레이스를 시작하고 중지합니다. 트레이스가 완료되면 결과가 앱의 데이터 디렉터리에 전송됩니다.

ApplicationStartInfo의 구성요소 시작

ApplicationStartInfoAndroid 15에서 추가되어 앱이 프로세스 시작 이유, 시작 유형, 시작 시간, 제한, 기타 유용한 진단 데이터를 볼 수 있습니다. Android 16에서는 시작을 트리거한 구성요소 유형을 구분하는 getStartComponent()를 추가합니다. 이는 앱의 시작 흐름을 최적화하는 데 도움이 될 수 있습니다.

작업 인트로스펙션 개선

JobScheduler#getPendingJobReason() API 会返回作业可能处于待处理状态的原因。不过,作业处于待处理状态的原因可能有多种。

在 Android 16 中,我们引入了一个新 API JobScheduler#getPendingJobReasons(int jobId),该 API 会返回作业处于待处理状态的多种原因,包括开发者设置的显式约束条件和系统设置的隐式约束条件。

我们还引入了 JobScheduler#getPendingJobReasonsHistory(int jobId),用于返回最新约束条件更改的列表。

我们建议您使用该 API 来调试作业可能无法执行的原因,尤其是在您发现某些任务的成功率降低或某些作业完成延迟存在 bug 时。例如,未能在后台更新微件,或在应用启动之前未能调用预加载作业。

这还有助于您更好地了解某些作业是否因系统定义的约束条件而无法完成,而不是因明确设置的约束条件而无法完成。

자동 조절 새로고침 빈도

Android 15에서 도입된 적응형 새로고침 빈도 (ARR)를 사용하면 지원되는 하드웨어의 디스플레이 새로고침 빈도가 개별 VSync 단계를 사용하여 콘텐츠 프레임 속도에 맞게 조정될 수 있습니다. 이렇게 하면 전력 소비량이 줄어들고 버벅거림을 유발할 수 있는 모드 전환이 필요하지 않게 됩니다.

Android 16에서는 hasArrSupport()getSuggestedFrameRate(int)을 도입하고 getSupportedRefreshRates()를 복원하여 앱이 ARR을 더 쉽게 활용할 수 있도록 합니다. RecyclerView 1.4플링 또는 원활한 스크롤에서 정착할 때 내부적으로 ARR을 지원하며, 더 많은 Jetpack 라이브러리에 ARR 지원을 추가하기 위한 작업을 계속하고 있습니다. 이 프레임 속도 도움말에서는 앱에서 ARR을 직접 사용할 수 있도록 프레임 속도를 설정하는 데 사용할 수 있는 여러 API를 설명합니다.

ADPF의 헤드룸 API

SystemHealthManager 引入了 getCpuHeadroomgetGpuHeadroom API,旨在为游戏和资源密集型应用提供可用 CPU 和 GPU 资源的估算值。通过这些方法,您可以评估应用或游戏如何以最佳方式改善系统运行状况,尤其是在与用于检测热节流的其他 Android 动态性能框架 (ADPF) API 搭配使用时。

在受支持的设备上使用 CpuHeadroomParamsGpuHeadroomParams,您可以自定义用于计算余量的时间范围,并在平均资源可用性或最低资源可用性之间进行选择。这有助于您相应地减少 CPU 或 GPU 资源用量,从而提升用户体验并延长电池续航时间。

접근성

Android 16에서는 모든 사용자에게 앱을 제공하는 데 도움이 되는 새로운 접근성 API와 기능을 추가합니다.

접근성 API 개선

Android 16 adds additional APIs to enhance UI semantics that help improve consistency for users that rely on accessibility services, such as TalkBack.

Outline text for maximum text contrast

Users with low vision often have reduced contrast sensitivity, making it challenging to distinguish objects from their backgrounds. To help these users, Android 16 introduces outline text, replacing high contrast text, which draws a larger contrasting area around text to greatly improve legibility.

Android 16 contains new AccessibilityManager APIs to let your apps check or register a listener to see if this mode is enabled. This is primarily for UI Toolkits like Compose to offer a similar visual experience. If you maintain a UI Toolkit library or your app performs custom text rendering that bypasses the android.text.Layout class then you can use this to know when outline text is enabled.

Text with enhanced contrast before and after Android 16's new outline text accessibility feature

Duration added to TtsSpan

Android 16 extends TtsSpan with a TYPE_DURATION, consisting of ARG_HOURS, ARG_MINUTES, and ARG_SECONDS. This lets you directly annotate time duration, ensuring accurate and consistent text-to-speech output with services like TalkBack.

Support elements with multiple labels

Android currently allows UI elements to derive their accessibility label from another, and now offers the ability for multiple labels to be associated, a common scenario in web content. By introducing a list-based API within AccessibilityNodeInfo, Android can directly support these multi-label relationships. As part of this change, we've deprecated AccessibilityNodeInfo#setLabeledBy and #getLabeledBy in favor of #addLabeledBy, #removeLabeledBy, and #getLabeledByList.

Improved support for expandable elements

Android 16 adds accessibility APIs that allow you to convey the expanded or collapsed state of interactive elements, such as menus and expandable lists. By setting the expanded state using setExpandedState and dispatching TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents with a CONTENT_CHANGE_TYPE_EXPANDED content change type, you can ensure that screen readers like TalkBack announce state changes, providing a more intuitive and inclusive user experience.

Indeterminate ProgressBars

Android 16 adds RANGE_TYPE_INDETERMINATE, giving a way for you to expose RangeInfo for both determinate and indeterminate ProgressBar widgets, allowing services like TalkBack to more consistently provide feedback for progress indicators.

Tri-state CheckBox

The new AccessibilityNodeInfo getChecked and setChecked(int) methods in Android 16 now support a "partially checked" state in addition to "checked" and "unchecked." This replaces the deprecated boolean isChecked and setChecked(boolean).

Supplemental descriptions

When an accessibility service describes a ViewGroup, it combines content labels from its child views. If you provide a contentDescription for the ViewGroup, accessibility services assume you are also overriding the description of non-focusable child views. This can be problematic if you want to label things like a drop-down (for example, "Font Family") while preserving the current selection for accessibility (for example, "Roboto"). Android 16 adds setSupplementalDescription so you can provide text that provides information about a ViewGroup without overriding information from its children.

Required form fields

Android 16 adds setFieldRequired to AccessibilityNodeInfo so apps can tell an accessibility service that input to a form field is required. This is an important scenario for users filling out many types of forms, even things as simple as a required terms and conditions checkbox, helping users to consistently identify and quickly navigate between required fields.

LEA 보청기를 사용한 음성 통화 시 마이크 입력으로 휴대전화 사용

Android 16 adds the capability for users of LE Audio hearing aids to switch between the built-in microphones on the hearing aids and the microphone on their phone for voice calls. This can be helpful in noisy environments or other situations where the hearing aid's microphones might not perform well.

LEA 보청기의 주변 볼륨 컨트롤

Android 16 新增了一项功能,可让 LE Audio 助听器用户调节助听器麦克风接收的环境声音的音量。在背景噪音过大或过小的情况下,这可能会很有用。

카메라

Android 16에서는 전문가급 카메라 사용자를 위한 지원을 강화하여 정밀한 색상 온도 및 색조 조정과 함께 하이브리드 자동 노출을 지원합니다. 새로운 야간 모드 표시기를 사용하면 앱에서 야간 모드 카메라 세션으로 전환할 시점을 알 수 있습니다. 새로운 Intent 액션을 사용하면 모션 사진을 더 쉽게 캡처할 수 있으며 HEIC 인코딩 및 ISO 21496-1 초안 표준의 새 매개변수 지원을 통해 UltraHDR 이미지를 계속 개선하고 있습니다.

하이브리드 자동 노출

Android 16에서는 Camera2에 새로운 하이브리드 자동 노출 모드를 추가하여 노출의 특정 측면을 수동으로 제어하는 동시에 자동 노출 (AE) 알고리즘이 나머지를 처리하도록 할 수 있습니다. ISO + AE노출 시간 + AE를 제어할 수 있으므로 전체 수동 제어 또는 자동 노출에 전적으로 의존하는 기존 접근 방식에 비해 더 큰 유연성을 제공합니다.

fun setISOPriority() {
    // ... (Your existing code before the snippet) ...

    val availablePriorityModes = mStaticInfo.characteristics.get(
        CameraCharacteristics.CONTROL_AE_AVAILABLE_PRIORITY_MODES
    )

    // ... (Your existing code between the snippets) ...

    // Turn on AE mode to set priority mode
    reqBuilder.set(
        CaptureRequest.CONTROL_AE_MODE,
        CameraMetadata.CONTROL_AE_MODE_ON
    )
    reqBuilder.set(
        CaptureRequest.CONTROL_AE_PRIORITY_MODE,
        CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
    )
    reqBuilder.set(
        CaptureRequest.SENSOR_SENSITIVITY,
        TEST_SENSITIVITY_VALUE
    )
    val request: CaptureRequest = reqBuilder.build()

    // ... (Your existing code after the snippet) ...
}

정밀한 색상 온도 및 색조 조정

Android 16에서는 전문 동영상 녹화 애플리케이션을 더 효과적으로 지원하기 위해 미세한 색온도 및 색조 조정을 위한 카메라 지원을 추가합니다. 이전 Android 버전에서는 백열, 흐림, 황혼과 같이 사전 설정 목록으로 제한된 옵션이 포함된 CONTROL_AWB_MODE를 통해 화이트 밸런스 설정을 제어할 수 있었습니다. COLOR_CORRECTION_MODE_CCT를 사용하면 COLOR_CORRECTION_COLOR_TEMPERATURECOLOR_CORRECTION_COLOR_TINT를 사용하여 상관 색상 온도에 따라 화이트 밸런스를 정확하게 조정할 수 있습니다.

fun setCCT() {
    // ... (Your existing code before this point) ...

    val colorTemperatureRange: Range<Int> =
        mStaticInfo.characteristics[CameraCharacteristics.COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE]

    // Set to manual mode to enable CCT mode
    reqBuilder[CaptureRequest.CONTROL_AWB_MODE] = CameraMetadata.CONTROL_AWB_MODE_OFF
    reqBuilder[CaptureRequest.COLOR_CORRECTION_MODE] = CameraMetadata.COLOR_CORRECTION_MODE_CCT
    reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE] = 5000
    reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TINT] = 30

    val request: CaptureRequest = reqBuilder.build()

    // ... (Your existing code after this point) ...
}

다음 예는 다양한 색온도 및 색조 조정을 적용한 후의 사진 모습을 보여줍니다.

색상 온도 또는 색조 조정이 적용되지 않은 원본 이미지입니다.
색온도가 3000으로 조정된 이미지입니다.
색상 온도가 7000으로 조정된 이미지입니다.


색조 수준이 50만큼 낮아진 이미지
색조 수준이 50으로 높아진 이미지

카메라 야간 모드 장면 감지

为了帮助应用了解何时切换到夜间模式相机会话以及何时从夜间模式相机会话切换出,Android 16 添加了 EXTENSION_NIGHT_MODE_INDICATOR。如果受支持,则可在 Camera2 内的 CaptureResult 中使用。

这是我们在Instagram 如何让用户拍出令人惊艳的低光照片博文中提到的即将推出的 API。该博文提供了有关如何实现夜间模式的实用指南,并附有一份案例研究,该案例研究将应用内夜间模式照片质量的提升与通过应用内相机分享的照片数量的增加联系起来。

모션 사진 캡처 인텐트 액션

Android 16 添加了标准 intent 操作 ACTION_MOTION_PHOTO_CAPTUREACTION_MOTION_PHOTO_CAPTURE_SECURE,用于请求相机应用拍摄动态照片并将其返回。

您必须传递额外的 EXTRA_OUTPUT 来控制将图片写入的位置,或者通过 Intent.setClipData(ClipData) 传递 Uri。如果您未设置 ClipData,系统会在调用 Context.startActivity(Intent) 时将其复制到该位置。

动态照片示例,显示静态图片和动态播放画面。

UltraHDR 이미지 개선사항

An illustration of Standard Dynamic Range (SDR) versus High Dynamic Range (HDR) image quality.

Android 16 continues our work to deliver dazzling image quality with UltraHDR images. It adds support for UltraHDR images in the HEIC file format. These images will get ImageFormat type HEIC_ULTRAHDR and will contain an embedded gainmap similar to the existing UltraHDR JPEG format. We're working on AVIF support for UltraHDR as well, so stay tuned.

In addition, Android 16 implements additional parameters in UltraHDR from the ISO 21496-1 draft standard, including the ability to get and set the colorspace that gainmap math should be applied in, as well as support for HDR encoded base images with SDR gainmaps.

그래픽

Android 16에는 AGSL을 사용한 맞춤 그래픽 효과와 같은 최신 그래픽 개선사항이 포함되어 있습니다.

AGSL을 사용한 맞춤 그래픽 효과

Android 16 adds RuntimeColorFilter and RuntimeXfermode, allowing you to author complex effects like Threshold, Sepia, and Hue Saturation and apply them to draw calls. Since Android 13, you've been able to use AGSL to create custom RuntimeShaders that extend Shader. The new API mirrors this, adding an AGSL-powered RuntimeColorFilter that extends ColorFilter, and a Xfermode effect that lets you implement AGSL-based custom compositing and blending between source and destination pixels.

private val thresholdEffectString = """
    uniform half threshold;

    half4 main(half4 c) {
        half luminosity = dot(c.rgb, half3(0.2126, 0.7152, 0.0722));
        half bw = step(threshold, luminosity);
        return bw.xxx1 * c.a;
    }"""

fun setCustomColorFilter(paint: Paint) {
   val filter = RuntimeColorFilter(thresholdEffectString)
   filter.setFloatUniform(0.5);
   paint.colorFilter = filter
}

연결

Android 16에서는 플랫폼을 업데이트하여 앱에서 최신 통신 및 무선 기술을 이용할 수 있도록 합니다.

보안 강화 범위 지정

Android 16은 Wi-Fi 6의 802.11az를 지원하는 기기의 Wi-Fi 위치에 강력한 보안 기능 지원을 추가합니다. 이를 통해 앱은 프로토콜의 더 높은 정확도, 확장성, 동적 예약을 AES-256 기반 암호화 및 MITM 공격 방지와 같은 보안 개선사항과 결합할 수 있습니다. 이를 통해 노트북이나 차량 도어 잠금 해제와 같은 근접 사용 사례에서 더 안전하게 사용할 수 있습니다. 802.11az는 Wi-Fi 6 표준과 통합되어 인프라와 기능을 활용하여 더 광범위하게 채택하고 더 쉽게 배포할 수 있습니다.

일반 범위 지정 API

Android 16에는 로컬 기기와 원격 기기 간의 지원되는 하드웨어에서 거리와 각도를 결정하는 방법을 제공하는 새로운 RangingManager가 포함되어 있습니다. RangingManager는 BLE 채널 소리 재생, BLE RSSI 기반 측정, 초광대역, Wi-Fi 왕복 시간과 같은 다양한 측정 기술의 사용을 지원합니다.

호환 기기 관리자 기기 감지

Android 16에서는 호환 앱 서비스를 바인딩하기 위한 새로운 API가 도입됩니다. BLE가 범위 내에 있고 블루투스가 연결되어 있으면 서비스가 바인딩되고 BLE가 범위 내에 없거나 블루투스가 연결 해제되면 서비스가 바인딩 해제됩니다. 앱은 다양한 DevicePresenceEvent에 따라 새 'onDevicePresenceEvent()' 콜백을 수신합니다. 자세한 내용은 'startObservingDevicePresence(ObservingDevicePresenceRequest)'를 참고하세요.

미디어

Android 16에는 미디어 환경을 개선하는 다양한 기능이 포함되어 있습니다.

사진 선택 도구 개선사항

照片选择器为用户提供了一种安全的内置授权方式,让用户可以向应用授予对本地存储空间和云端存储空间中所选图片和视频的访问权限,而不是对整个媒体库的访问权限。通过 Google 系统更新Google Play 服务组合使用模块化系统组件,该工具向后支持到 Android 4.4(API 级别 19)。只需几行代码即可与相关的 Android Jetpack 库集成。

Android 16 对照片选择器进行了以下改进:

  • 嵌入式照片选择器新 API,可让应用将照片选择器嵌入其视图层次结构中。这样,它就感觉像是应用中更为集成的一部分,同时仍可利用进程隔离功能,让用户能够选择媒体,而无需应用拥有过于宽泛的权限。为了最大限度地提高跨平台版本的兼容性并简化集成,如果您想集成嵌入式照片选择器,则需要使用即将推出的 Android Jetpack 库。
  • 照片选择器中的云搜索新的 API 可让 Android 照片选择器从云端媒体提供商中进行搜索。照片选择器中的搜索功能即将推出。

고급 프로페셔널 동영상

Android 16 引入了对高级专业视频 (APV) 编解码器的支持,该编解码器专为专业级高品质视频录制和后期制作而设计。

APV 编解码器标准具有以下特点:

  • 感知上无损的视频画质(接近原始视频画质)
  • 复杂度低且吞吐量高的仅帧内编码(无像素域预测),以更好地支持编辑工作流
  • 支持高比特率范围(最高几十 Gbps),适用于 2K、4K 和 8K 分辨率内容,由轻量级熵编码方案实现
  • 帧平铺,用于沉浸式内容和启用并行编码和解码
  • 支持各种色度采样格式和位深
  • 支持多次解码和重新编码,且不会严重降低视觉质量
  • 支持多视图视频和辅助视频,例如深度、Alpha 和预览
  • 支持 HDR10/10+ 和用户定义的元数据

OpenAPV 项目提供了 APV 的参考实现。Android 16 将实现对 APV 422-10 配置文件的支持,该配置文件提供 YUV 422 色彩采样以及 10 位编码,并且目标比特率最高可达 2 Gbps。

개인 정보 보호

Android 16에는 앱 개발자가 사용자 개인 정보를 보호하는 데 도움이 되는 다양한 기능이 포함되어 있습니다.

헬스 커넥트 업데이트

헬스 커넥트는 중간 및 고강도 활동에 관한 세계보건기구 가이드라인에 따라 정의된 데이터 유형인 ACTIVITY_INTENSITY를 추가합니다. 각 레코드에는 시작 시간, 종료 시간, 활동 강도가 보통인지 격렬한지 여부가 필요합니다.

헬스 커넥트에는 의료 기록을 지원하는 업데이트된 API도 포함되어 있습니다. 이를 통해 앱은 명시적인 사용자 동의를 얻어 FHIR 형식으로 의료 기록을 읽고 쓸 수 있습니다.

Android의 개인 정보 보호 샌드박스

Android 16 中集成了最新版本的 Privacy Sandbox on Android,这是我们持续致力于开发可让用户放心地知道其隐私受到保护的技术的一部分。您可以访问我们的网站,详细了解 Privacy Sandbox on Android 开发者 Beta 版计划,以便顺利上手。不妨了解 SDK 运行时,它可让 SDK 在与其所服务的应用分离的专用运行时环境中运行,从而为用户数据收集和共享提供更强的保护措施。

보안

Android 16에는 앱의 보안을 강화하고 앱의 데이터를 보호하는 데 도움이 되는 기능이 포함되어 있습니다.

키 공유 API

Android 16 添加了一些 API,这些 API 支持与其他应用共享对 Android Keystore 密钥的访问权限。新的 KeyStoreManager 类支持按应用 uid 授予撤消对密钥的访问权限,并包含一个供应用访问共享密钥的 API。

기기 폼 팩터

Android 16에서는 앱에서 Android의 폼 팩터를 최대한 활용할 수 있도록 지원합니다.

TV용 표준화된 사진 및 음질 프레임워크

Android 16의 새로운 MediaQuality 패키지는 오디오 및 사진 프로필, 하드웨어 관련 설정에 액세스하기 위한 표준화된 API 모음을 노출합니다. 이를 통해 스트리밍 앱은 프로필을 쿼리하고 미디어에 동적으로 적용할 수 있습니다.

  • 더 넓은 다이나믹 레인지로 마스터링된 영화는 어두운 부분의 미묘한 디테일을 확인하고 주변광에 맞게 조정하려면 더 높은 색상 정확도가 필요하므로 밝기보다 색상 정확도를 선호하는 프로필이 적합할 수 있습니다.
  • 라이브 스포츠 이벤트는 종종 협소한 다이내믹 레인지로 마스터링되지만, 햇빛이 비치는 낮에 시청되는 경우가 많으므로 색상 정확성보다 밝기를 선호하는 프로필을 사용하면 더 나은 결과를 얻을 수 있습니다.
  • 완전히 양방향인 콘텐츠는 지연 시간을 줄이기 위해 최소한의 처리가 필요하고 프레임 속도가 더 높아야 하므로 많은 TV에 게임 프로필이 제공됩니다.

이 API를 사용하면 앱이 프로필 간에 전환하고 사용자는 지원되는 TV를 콘텐츠에 가장 적합하게 조정할 수 있습니다.

다국어 지원

Android 16에서는 기기가 여러 언어로 사용될 때 사용자 환경을 보완하는 기능과 성능을 추가합니다.

세로 텍스트

Android 16은 텍스트를 세로로 렌더링하고 측정하기 위한 하위 수준 지원을 추가하여 라이브러리 개발자를 위한 기본적인 세로 쓰기 지원을 제공합니다. 이는 일반적으로 세로 쓰기 시스템을 사용하는 일본어와 같은 언어에 특히 유용합니다. Paint 클래스에 새로운 플래그인 VERTICAL_TEXT_FLAG가 추가되었습니다. 이 플래그가 Paint.setFlags를 사용하여 설정되면 Paint의 텍스트 측정 API는 가로 진행 대신 세로 진행을 보고하고 Canvas는 텍스트를 세로로 그립니다.

val text = "「春は、曙。」"
Box(
    Modifier.padding(innerPadding).background(Color.White).fillMaxSize().drawWithContent {
        drawIntoCanvas { canvas ->
            val paint = Paint().apply { textSize = 64.sp.toPx() }
            // Draw text vertically
            paint.flags = paint.flags or VERTICAL_TEXT_FLAG
            val height = paint.measureText(text)
            canvas.nativeCanvas.drawText(
                text,
                0,
                text.length,
                size.width / 2,
                (size.height - height) / 2,
                paint
            )
        }
    }
) {}

측정 시스템 맞춤설정

用户现在可以在“设置”中的地区偏好设置中自定义测量系统。用户偏好设置包含在语言区域代码中,因此您可以在 ACTION_LOCALE_CHANGED 上注册 BroadcastReceiver,以便在地区偏好设置发生更改时处理语言区域配置更改。

使用格式设置程序有助于提供符合当地体验的服务。例如,对于将手机设置为英语(丹麦)或将手机设置为英语(美国)并将公制作为首选测量系统的用户,“0.5 in”的英语(美国)对应于“12,7 mm”。

如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和地区