Android 16에서는 개발자를 위한 훌륭한 새 기능과 API가 도입됩니다. 다음 섹션에서는 관련 API를 시작하는 데 도움이 되도록 이러한 기능을 요약합니다.
새로운 API, 수정된 API, 삭제된 API에 관한 자세한 목록은 API diff 보고서를 참고하세요. 새로운 API에 관한 자세한 내용은 Android API 참조를 방문하세요. 새로운 API가 강조 표시되어 쉽게 확인 가능합니다.또한 플랫폼 변경사항이 앱에 영향을 미칠 수 있는 영역을 검토해야 합니다. 자세한 내용은 다음 페이지를 참고하세요.
- Android 16을 타겟팅할 때 앱에 영향을 미치는 동작 변경사항
targetSdkVersion과 관계없이 모든 앱에 영향을 미치는 동작 변경사항
핵심 기능
Android에는 Android 시스템의 핵심 기능을 확장하는 새로운 API가 포함되어 있습니다.
2025년 두 가지 Android API 출시
- 이 미리보기는 2025년 2분기에 출시될 예정인 Android의 다음 주요 버전입니다. 이 버전은 이전의 모든 API 버전과 유사하며, 여기서 targetSdkVersion에 종종 연결된 계획된 동작 변경사항을 적용할 수 있습니다.
- 더 많은 기기에서 Android의 주요 버전을 더 빨리 사용할 수 있도록 생태계 전반의 기기 출시 일정에 더 잘 맞추기 위해 메이저 버전을 3분기에서 2분기로 한 분기 앞당겨 출시할 계획입니다. 2분기에 주요 버전이 출시될 예정이므로 앱이 준비되었는지 확인하기 위해 전년보다 몇 개월 더 일찍 연간 호환성 테스트를 진행해야 합니다.
- 2025년 4분기에 새로운 개발자 API도 포함된 버전을 출시할 계획입니다. 2분기 주요 출시는 2025년에 앱에 영향을 줄 수 있는 계획된 동작 변경사항이 포함된 유일한 출시입니다.
Q4 마이너 출시에서는 새로운 개발자 API 외에도 기능 업데이트, 최적화, 버그 수정이 포함됩니다. 앱에 영향을 미치는 동작 변경사항은 포함되지 않습니다.
앞으로도 분기별로 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_OBSERVER에 onBackInvokedCallback를 등록하면 앱이 일반 뒤로 탐색 흐름에 영향을 주지 않고 시스템이 뒤로 탐색을 처리할 때마다 일반 onBackInvoked 호출을 수신할 수 있습니다.
Android 16에서는 finishAndRemoveTaskCallback() 및 moveTaskToBackCallback도 추가합니다. 이러한 콜백을 OnBackInvokedDispatcher에 등록하면 시스템은 뒤로 동작이 호출될 때 특정 동작을 트리거하고 상응하는 사전 애니메이션을 재생할 수 있습니다.
리치 햅틱
Android has exposed control over the haptic actuator ever since its inception.
Android 11 added support for more complex haptic effects that more advanced
actuators could support through
VibrationEffect.Compositions of device-defined semantic
primitives.
Android 16 adds haptic APIs that let apps define the amplitude and frequency curves of a haptic effect while abstracting away differences between device capabilities.
개발자 생산성 및 도구
생산성 향상을 위한 대부분의 작업은 Android 스튜디오, Jetpack Compose, Android Jetpack 라이브러리와 같은 도구를 중심으로 이루어지지만, Google은 항상 플랫폼에서 비전을 실현할 수 있는 방법을 찾고 있습니다.
라이브 배경화면의 콘텐츠 처리
Android 16에서는 라이브 배경화면 프레임워크에 동적 사용자 중심 배경화면의 문제를 해결하기 위한 새로운 콘텐츠 API가 추가됩니다. 현재 사용자 제공 콘텐츠를 통합하는 라이브 배경화면에는 복잡한 서비스별 구현이 필요합니다. Android 16에서는 WallpaperDescription 및 WallpaperInstance를 도입합니다. WallpaperDescription을 사용하면 동일한 서비스에서 라이브 배경화면의 고유한 인스턴스를 식별할 수 있습니다. 예를 들어 홈 화면과 잠금 화면에 인스턴스가 있는 배경화면에는 두 위치 모두 고유한 콘텐츠가 있을 수 있습니다. 배경화면 선택 도구와 WallpaperManager는 이 메타데이터를 사용하여 사용자에게 배경화면을 더 효과적으로 표시함으로써 개발자가 다양한 맞춤형 라이브 배경화면 환경을 만드는 프로세스를 간소화할 수 있습니다.
성능 및 배터리
Android 16에서는 앱에 관한 통계를 수집하는 데 도움이 되는 API를 도입합니다.
시스템 트리거 프로파일링
ProfilingManager가 Android 15에 추가되어 앱이 현장의 공개 기기에서 Perfetto를 사용하여 프로파일링 데이터 수집을 요청할 수 있습니다.
그러나 이 프로파일링은 앱에서 시작해야 하므로 시작 또는 ANR과 같은 중요한 흐름은 앱에서 캡처하기 어렵거나 불가능합니다.
이를 위해 Android 16에서는 ProfilingManager에 시스템 트리거 프로파일링을 도입합니다. 앱은 콜드 스타트 reportFullyDrawn 또는 ANR과 같은 특정 트리거의 트레이스를 수신하는 데 관심을 등록할 수 있으며, 그러면 시스템이 앱을 대신하여 트레이스를 시작하고 중지합니다. 트레이스가 완료되면 결과가 앱의 데이터 디렉터리에 전송됩니다.
ApplicationStartInfo의 구성요소 시작
ApplicationStartInfo was added in Android
15, allowing an app to see reasons
for process start, start type, start times, throttling, and other useful
diagnostic data. Android 16 adds
getStartComponent()
to distinguish what component type triggered the start, which can be helpful for
optimizing the startup flow of your app.
작업 인트로스펙션 개선
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에서는 게임 및 리소스 사용량이 많은 앱에 사용 가능한 CPU 및 GPU 리소스의 추정치를 제공하도록 설계된 getCpuHeadroom 및 getGpuHeadroom API를 도입합니다. 이러한 메서드는 특히 열 제한을 감지하는 다른 Android 동적 성능 프레임워크 (ADPF) API와 함께 사용할 때 앱 또는 게임이 시스템 상태를 가장 효과적으로 개선하는 방법을 측정하는 방법을 제공합니다.
지원되는 기기에서 CpuHeadroomParams 및 GpuHeadroomParams를 사용하면 헤드룸을 계산하는 데 사용되는 시간 창을 맞춤설정하고 평균 또는 최소 리소스 가용성 중에서 선택할 수 있습니다. 이렇게 하면 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.
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 adds new hybrid auto-exposure modes to Camera2, allowing you to manually control specific aspects of exposure while letting the auto-exposure (AE) algorithm handle the rest. You can control ISO + AE, and exposure time + AE, providing greater flexibility compared to the current approach where you either have full manual control or rely entirely on auto-exposure.
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_TEMPERATURE 和 COLOR_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) ...
}
以下示例展示了应用不同色温和色调调整后的照片效果:
카메라 야간 모드 장면 감지
To help your app know when to switch to and from a night mode camera session,
Android 16 adds EXTENSION_NIGHT_MODE_INDICATOR. If
supported, it's available in the CaptureResult within
Camera2.
This is the API we briefly mentioned as coming soon in the How Instagram enabled users to take stunning low light photos blog post. That post is a practical guide on how to implement night mode together with a case study that links higher-quality in-app night mode photos with an increase in the number of photos shared from the in-app camera.
모션 사진 캡처 인텐트 액션
Android 16 添加了标准 intent 操作 ACTION_MOTION_PHOTO_CAPTURE 和 ACTION_MOTION_PHOTO_CAPTURE_SECURE,用于请求相机应用拍摄动态照片并将其返回。
您必须传递额外的 EXTRA_OUTPUT 来控制将图片写入的位置,或者通过 Intent.setClipData(ClipData) 传递 Uri。如果您未设置 ClipData,系统会在调用 Context.startActivity(Intent) 时将其复制到该位置。
UltraHDR 이미지 개선사항
Android 16 继续致力于通过 UltraHDR 图片提供出色的图片质量。它添加了对 HEIC 文件格式的 UltraHDR 图片的支持。这些图片将获得 ImageFormat 类型 HEIC_ULTRAHDR,并包含类似于现有 UltraHDR JPEG 格式的嵌入式增益图。我们还在努力为 UltraHDR 添加 AVIF 支持,敬请期待。
此外,Android 16 在 UltraHDR 中实现了 ISO 21496-1 草稿标准中的其他参数,包括能够获取和设置应应用增益图算法的色彩空间,以及支持使用 SDR 增益图的 HDR 编码基础图片。
그래픽
Android 16에는 AGSL을 사용한 맞춤 그래픽 효과와 같은 최신 그래픽 개선사항이 포함되어 있습니다.
AGSL을 사용한 맞춤 그래픽 효과
Android 16 添加了 RuntimeColorFilter 和 RuntimeXfermode,让您可以创作阈值、Sepia 和 Hue Saturation 等复杂效果,并将其应用于绘制调用。从 Android 13 开始,您可以使用 AGSL 创建扩展 Shader 的自定义 RuntimeShader。新 API 反映了这一点,添加了由 AGSL 驱动的 RuntimeColorFilter(用于扩展 ColorFilter)和 Xfermode 效果,让您可以在源像素和目标像素之间实现基于 AGSL 的自定义合成和混合。
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 adds support for robust security features in Wi-Fi location on supported devices with Wi-Fi 6's 802.11az, allowing apps to combine the higher accuracy, greater scalability, and dynamic scheduling of the protocol with security enhancements including AES-256-based encryption and protection against MITM attacks. This allows it to be used more safely in proximity use cases, such as unlocking a laptop or a vehicle door. 802.11az is integrated with the Wi-Fi 6 standard, leveraging its infrastructure and capabilities for wider adoption and easier deployment.
일반 범위 지정 API
Android 16에는 로컬 기기와 원격 기기 간의 지원되는 하드웨어에서 거리와 각도를 결정하는 방법을 제공하는 새로운 RangingManager가 포함되어 있습니다. RangingManager는 BLE 채널 소리 재생, BLE RSSI 기반 측정, 초광대역, Wi-Fi 왕복 시간과 같은 다양한 측정 기술의 사용을 지원합니다.
호환 기기 관리자 기기 감지
In Android 16, new APIs are being introduced for binding your companion app
service. Service will be bound when BLE is in range and Bluetooth is connected
and service will be unbound when BLE is out of range or Bluetooth is
disconnected. App will receives a new
'onDevicePresenceEvent()' callback based on various
of DevicePresenceEvent.
More details can be found in
'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 코덱 표준에는 다음과 같은 기능이 있습니다.
- 지각적으로 무손실 동영상 화질 (원시 동영상 화질에 가깝음)
- 편집 워크플로를 더 효과적으로 지원하기 위한 낮은 복잡도와 높은 처리량의 프레임 내부 전용 코딩 (픽셀 도메인 예측 없음)
- 경량 엔트로피 코딩 스킴을 통해 2K, 4K, 8K 해상도 콘텐츠의 최대 몇 Gbps에 이르는 높은 비트 전송률 범위 지원
- 몰입형 콘텐츠를 위한 프레임 타일링 및 병렬 인코딩 및 디코딩 사용
- 다양한 크로마 샘플링 형식 및 비트 깊이 지원
- 심각한 시각적 품질 저하 없이 여러 디코딩 및 재인코딩 지원
- 멀티뷰 동영상 및 깊이, 알파, 미리보기와 같은 보조 동영상 지원
- HDR10/10+ 및 사용자 정의 메타데이터 지원
APV의 참조 구현은 OpenAPV 프로젝트를 통해 제공됩니다. Android 16에서는 10비트 인코딩과 함께 YUV 422 색상 샘플링을 제공하고 최대 2Gbps의 타겟 비트 전송률을 제공하는 APV 422-10 프로필에 대한 지원을 구현합니다.
개인 정보 보호
Android 16에는 앱 개발자가 사용자 개인 정보를 보호하는 데 도움이 되는 다양한 기능이 포함되어 있습니다.
헬스 커넥트 업데이트
Health Connect 添加了 ACTIVITY_INTENSITY,这是一种根据世界卫生组织关于中等强度和剧烈强度活动的指南定义的数据类型。每个记录都需要提供开始时间、结束时间以及活动强度(中等或剧烈)。
Health Connect 还包含支持医疗记录的更新版 API。这样一来,应用便可在征得用户明确同意的情况下,读取和写入 FHIR 格式的医疗记录。
Android의 개인 정보 보호 샌드박스
Android 16에는 사용자가 자신의 개인 정보가 보호된다는 사실을 알 수 있는 기술을 개발하기 위한 Google의 지속적인 노력의 일환으로 Android의 개인 정보 보호 샌드박스의 최신 버전이 통합되어 있습니다. Android의 개인 정보 보호 샌드박스 개발자 베타 프로그램에 대한 자세한 내용은 웹사이트를 참고하세요. SDK가 제공하는 앱과 별도의 전용 런타임 환경에서 실행되도록 허용하여 사용자 데이터 수집 및 공유를 더 강력하게 보호하는 SDK 런타임을 확인하세요.
보안
Android 16에는 앱의 보안을 강화하고 앱의 데이터를 보호하는 데 도움이 되는 기능이 포함되어 있습니다.
키 공유 API
Android 16 添加了一些 API,这些 API 支持与其他应用共享对 Android Keystore 密钥的访问权限。新的 KeyStoreManager 类支持按应用 uid 授予和撤消对密钥的访问权限,并包含一个供应用访问共享密钥的 API。
기기 폼 팩터
Android 16에서는 앱에서 Android의 폼 팩터를 최대한 활용할 수 있도록 지원합니다.
TV용 표준화된 사진 및 음질 프레임워크
The new MediaQuality
package in Android 16 exposes
a set of standardized APIs for access to audio and picture profiles and
hardware-related settings. This allows streaming apps to query profiles and
apply them to media dynamically:
- Movies mastered with a wider dynamic range require greater color accuracy to see subtle details in shadows and adjust to ambient light, so a profile that prefers color accuracy over brightness may be appropriate.
- Live sporting events are often mastered with a narrow dynamic range, but are often watched in daylight, so a profile that preferences brightness over color accuracy can give better results.
- Fully interactive content wants minimal processing to reduce latency, and wants higher frame rates, which is why many TV's ship with a game profile.
The API allows apps to switch between profiles and users to enjoy tuning supported TVs to best suit their content.
다국어 지원
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인치'는 휴대전화를 영어 (덴마크)로 설정했거나 측정 시스템 환경설정으로 미터법을 사용하는 영어 (미국)로 휴대전화를 사용하는 사용자에게는 '12,7mm'입니다.
이러한 설정을 찾으려면 설정 앱을 열고 시스템 > 언어 및 지역으로 이동하세요.