O Android 14 introduz ótimos recursos e APIs para desenvolvedores. As seções a seguir ajudam você a conhecer os recursos disponíveis para os apps e a começar a usar as APIs relacionadas.
Para uma lista detalhada das APIs adicionadas, modificadas e removidas, leia o Relatório de diferenças da API. Para mais detalhes sobre as APIs adicionadas, acesse a Referência da API do Android. No Android 14, procure APIs que foram adicionadas no nível 34 da API. Para saber mais sobre as áreas em que as mudanças na plataforma podem afetar seus apps, confira as mudanças de comportamento do Android 14 para apps destinados ao Android 14 e para todos os apps.
Internacionalização
Seleção de idioma por app
Android 14 扩展了 Android 13(API 级别 33)中引入的按应用设定语言功能,并包含以下额外功能:
自动生成应用的
localeConfig
:从 Android Studio Giraffe Canary 7 和 AGP 8.1.0-alpha07 开始,您可以将应用配置为自动支持各应用语言偏好设定。Android Gradle 插件会根据您的项目资源生成LocaleConfig
文件,并在最终清单文件中添加对该文件的引用,这样您就不再需要手动创建或更新该文件。AGP 使用应用模块的res
文件夹中的资源以及任何库模块依赖项来确定要在LocaleConfig
文件中添加的语言区域。动态更新应用的
localeConfig
:使用LocaleManager
方法中的setOverrideLocaleConfig()
和getOverrideLocaleConfig()
可以在设备的系统设置中动态更新应用的受支持语言列表。有了这种灵活性,您可以按区域自定义支持的语言列表、运行 A/B 实验,或者如果您的应用通过服务器端推送进行本地化,则可以提供更新后的语言区域列表。输入法 (IME) 的应用语言可见性:IME 可以利用
getApplicationLocales()
方法查看当前应用的语言,并将 IME 语言与该语言进行匹配。
API Grammatical Inflection
Três bilhões de pessoas falam idiomas com marcação de gênero: idiomas em que categorias gramaticais, como substantivos, verbos, adjetivos e preposições, mudam de acordo com o gênero das pessoas e os objetos sobre os quais elas falam. Tradicionalmente, vários idiomas com marcação de gênero usam o gênero gramatical masculino como padrão ou genérico.
Referir-se a usuários no gênero gramatical errado, como falar com uma mulher no gênero gramatical masculino, pode afetar negativamente o desempenho e a atitude dela. Por outro lado, uma interface com linguagem que reflete corretamente o gênero gramatical do usuário pode melhorar o engajamento e fornecer uma experiência do usuário mais personalizada e natural.
To help you build a user-centric UI for gendered languages, Android 14 introduces the Grammatical Inflection API, which lets you add support for grammatical gender without refactoring your app.
Preferências regionais
用户可通过地区偏好设置对温度单位、一周的第一天和编号系统进行个性化设置。居住在美国的欧洲用户可能更希望使用摄氏度,而不是华氏度,并且希望应用将星期一视为一周的开始,而不是像美国那样默认从星期日开始。
新 Android 设置菜单包含这些偏好设置,使用户能够在一个位置集中发现这些应用更改偏好设置。这些偏好设置在备份和恢复设备后也会保持不变。多个 API 和 intent(例如 getTemperatureUnit
和 getFirstDayOfWeek
)会为您的应用授予读取权限来访问用户偏好设置,因此您的应用可以调整其显示信息的方式。您还可以在 ACTION_LOCALE_CHANGED
上注册 BroadcastReceiver
,以便在地区偏好设置发生更改时处理语言区域配置更改。
如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和输入法 > 地区偏好设置。


Acessibilidade
Dimensionamento de fonte não linear para 200%
从 Android 14 开始,系统支持字体放大高达 200%,为弱视用户提供了符合网络内容无障碍指南 (WCAG) 的其他无障碍功能选项。
为防止屏幕上的大文本元素放大放大, 应用非线性缩放曲线。这种放大策略意味着大号文本的放大比例不会与较小的文本相同。非线性字体放大有助于保持不同大小元素之间的比例层次结构,同时缓解高级别线性文本放大存在的问题(例如文本被截断或文本因非常大的显示大小而难以阅读)。
使用非线性字体放大测试应用

如果您已使用放大像素 (sp) 单位来定义文字大小,那么这些 其他选项和扩缩方面的改进会自动应用到 。不过,您仍应使用 启用字体大小 (200%),以确保应用采用 且可以适应较大字号,并且不会影响易用性。
要启用 200% 字号,请按以下步骤操作:
- 打开“设置”应用,然后依次前往无障碍 > 显示大小和文字。
- 在字号选项中,点按加号 (+) 图标,直到启用最大字号设置,如本部分随附的图片所示。
针对文本大小使用放大像素 (sp) 单位
请务必始终以 sp 为单位指定文字大小。当应用使用 sp 单位时,Android 可以应用用户的首选文本大小,并相应地进行缩放。
请勿为内边距使用 sp 单位,也不要假定内边距来定义视图高度:使用非线性字体放大 sp 尺寸可能并不成比例,因此 4sp + 20sp 可能并不等于 24sp。
转换放大像素 (sp) 单位
使用 TypedValue.applyDimension()
从 sp 单位转换为像素,并使用 TypedValue.deriveDimension()
将像素转换为 sp。这些方法会自动应用适当的非线性放大曲线。
避免对公式进行硬编码,使用以下代码
Configuration.fontScale
或
DisplayMetrics.scaledDensity
。因为字体缩放
非线性的,则 scaledDensity
字段不再准确。fontScale
字段应仅用于提供信息,
使用单个标量值进行扩缩。
为 lineHeight 使用 sp 单位
始终使用 sp 单位定义 android:lineHeight
dp 为 dp,因此行高会随文本一起缩放。否则,如果文本使用 sp,但 lineHeight
使用 dp 或 px,则文本不会缩放,并且看起来很拥挤。TextView 会自动更正 lineHeight
,以便实现您的目标
比例会得到保留,但前提是 textSize
和 lineHeight
以 sp 为单位进行定义。
Câmera e mídia
Ultra HDR para imagens

O Android 14 adiciona suporte a imagens de High Dynamic Range (HDR) que retêm mais informações do sensor ao tirar uma foto, o que permite cores vibrantes e maior contraste. O Android usa o formato Ultra HDR, que é totalmente compatível com versões anteriores de imagens JPEG, permitindo que os apps interajam perfeitamente com imagens HDR, exibindo-as no intervalo dinâmico padrão (SDR, na sigla em inglês) conforme necessário.
A renderização dessas imagens na interface em HDR é feita automaticamente pelo framework
quando o app opta por usar a interface HDR para a janela de atividade, seja por uma
entrada de manifesto ou no momento da execução, chamando
Window.setColorMode()
. Também é possível capturar imagens estáticas Ultra
HDR compactadas em dispositivos compatíveis. Com mais cores recuperadas
do sensor, a edição na pós-produção pode ser mais flexível. O
Gainmap
associado a imagens Ultra HDR pode ser usado para renderizá-las
usando OpenGL ou Vulkan.
Zoom, foco, pós-visualização e muito mais nas extensões de câmera
O Android 14 atualiza e melhora as extensões de câmera, permitindo que os apps processem imagens em tempos mais longos, o que melhora as imagens usando algoritmos de computação intensiva, como a fotografia com pouca luz em dispositivos compatíveis. Esses recursos oferecem aos usuários uma experiência ainda mais robusta ao usar os recursos de extensão da câmera. Confira alguns exemplos dessas melhorias:
- A estimativa de latência de processamento de captura estática dinâmica fornece estimativas de latência de captura estática muito mais precisas com base nas condições atuais da cena e do ambiente. Chame
CameraExtensionSession.getRealtimeStillCaptureLatency()
para receber um objetoStillCaptureLatency
com dois métodos de estimativa de latência. O métodogetCaptureLatency()
retorna a latência estimada entreonCaptureStarted
eonCaptureProcessStarted()
, e o métodogetProcessingLatency()
retorna a latência estimada entreonCaptureProcessStarted()
e o frame processado final que está disponível. - Suporte a callbacks de progresso de captura para que os apps possam mostrar o progresso
atual de operações de processamento de captura de longa duração. É possível verificar
se esse recurso está disponível com
CameraExtensionCharacteristics.isCaptureProcessProgressAvailable
. Se estiver, implemente o callbackonCaptureProcessProgressed()
, que tem o progresso (de 0 a 100) transmitido como um parâmetro. Metadados específicos da extensão, como
CaptureRequest.EXTENSION_STRENGTH
para discar a quantidade de um efeito de extensão, como a quantidade de desfoque do plano de fundo comEXTENSION_BOKEH
.Recurso de visualização pós-captura para captura de fotos em extensões de câmera, que fornece uma imagem menos processada mais rapidamente do que a imagem final. Se uma extensão aumentar a latência de processamento, uma imagem pós-visualização poderá ser fornecida como um marcador de posição para melhorar a UX e ser trocada posteriormente pela imagem final. Você pode verificar se esse recurso está disponível com
CameraExtensionCharacteristics.isPostviewAvailable
. Em seguida, você pode transmitir umOutputConfiguration
paraExtensionSessionConfiguration.setPostviewOutputConfiguration
.Compatibilidade com
SurfaceView
, permitindo um caminho de renderização de visualização mais otimizado e eficiente em termos de energia.Suporte a toque para focar e zoom durante o uso da extensão.
Zoom no sensor
当 CameraCharacteristics
中的 REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE
包含 SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
时,您的应用可以使用高级传感器功能,将剪裁后的 RAW 数据流的像素与全视野范围相同,方法是将 CaptureRequest
与将数据流用例设置为 CameraMetadata.SCALER_AVAILABLE_STREAM_USE_CASES_CROPPED_RAW
的 RAW 目标搭配使用。通过实现请求替换控件,更新后的相机可让用户在其他相机控件准备就绪之前使用缩放控件。
Áudio USB sem perdas
Android 14 gains support for lossless audio formats for audiophile-level
experiences over USB wired headsets. You can query a USB device for its
preferred mixer attributes, register a listener for changes in preferred mixer
attributes, and configure mixer attributes using the
AudioMixerAttributes
class. This class represents the
format, such as channel mask, sample rate, and behavior of the audio mixer. The
class allows for audio to be sent directly, without mixing,
volume adjustment, or processing effects.
Produtividade e ferramentas para desenvolvedores
Credential Manager
O Android 14 adiciona o Gerenciador de credenciais como uma API da plataforma, com suporte adicional para dispositivos com o Android 4.4 (nível 19 da API) por meio de uma biblioteca Jetpack que usa o Google Play Services. O objetivo do Gerenciador de credenciais é facilitar o login para os usuários com APIs que extraem e armazenam credenciais com provedores de credenciais configurados pelo usuário. O Gerenciador de credenciais oferece suporte a vários métodos de login, incluindo nome de usuário e senha, chaves de acesso e soluções de login federadas (como o recurso Fazer login com o Google) em uma única API.
As chaves de acesso oferecem muitas vantagens. Por exemplo, as chaves de acesso são criadas com base nos padrões do setor, podem funcionar em diferentes sistemas operacionais e ecossistemas de navegadores e podem ser usadas em sites e apps.
Para mais informações, consulte a documentação do Gerenciador de credenciais e das chaves de acesso e o post do blog sobre o Gerenciador de credenciais e as chaves de acesso.
Conexão Saúde
Health Connect is an on-device repository for user health and fitness data. It allows users to share data between their favorite apps, with a single place to control what data they want to share with these apps.
On devices running Android versions prior to Android 14, Health Connect is available to download as an app on the Google Play store. Starting with Android 14, Health Connect is part of the platform and receives updates through Google Play system updates without requiring a separate download. With this, Health Connect can be updated frequently, and your apps can rely on Health Connect being available on devices running Android 14 or higher. Users can access Health Connect from the Settings in their device, with privacy controls integrated into the system settings.


Health Connect includes several new features in Android 14, such as exercise routes, allowing users to share a route of their workout which can be visualized on a map. A route is defined as a list of locations saved within a window of time, and your app can insert routes into exercise sessions, tying them together. To ensure that users have complete control over this sensitive data, users must allow sharing individual routes with other apps.
For more information, see the Health Connection documentation and the blogpost on What's new in Android Health.
Atualizações do OpenJDK 17
Android 14 将继续更新 Android 的核心库,以与最新 OpenJDK LTS 版本中的功能保持一致,包括适合应用和平台开发者的库更新和 Java 17 语言支持。
其中包含以下功能和改进:
- 将大约 300 个
java.base
类更新为支持 Java 17。 - 文本块 - 为 Java 编程语言引入了多行字符串字面量。
- instanceof 模式匹配:可让对象在
instanceof
中被视为具有特定类型,而无需任何额外的变量。 - 密封类:允许您限制哪些类和接口可以扩展或实现它们。
得益于 Google Play 系统更新 (Project Mainline),6 亿多台设备能够接收包含这些更改的最新 Android 运行时 (ART) 更新。我们致力于为应用提供更加一致、安全的跨设备环境,并为用户提供独立于平台版本的新功能。
Java 和 OpenJDK 是 Oracle 及/或其关联公司的商标或注册商标。
Melhorias para app stores
O Android 14 apresenta várias APIs PackageInstaller
que
permitem que as app stores melhorem a experiência do usuário.
Solicitar aprovação da instalação antes do download
A instalação ou atualização de um app pode exigir a aprovação do usuário.
Por exemplo, quando um instalador que usa a permissão
REQUEST_INSTALL_PACKAGES
tenta instalar um
novo app. Nas versões anteriores do Android, as app stores só podem solicitar a aprovação do usuário
depois que os APKs são gravados na sessão de instalação e a
sessão é confirmada.
A partir do Android 14, o método requestUserPreapproval()
permite que os instaladores solicitem a aprovação do usuário antes de confirmar a sessão
de instalação. Essa melhoria permite que a app store adie o download de APKs até
que a instalação seja aprovada pelo usuário. Além disso, depois que um usuário
aprova a instalação, a app store pode fazer o download e instalar o app em
segundo plano sem interromper o usuário.
Reivindicar a responsabilidade por atualizações futuras
O método setRequestUpdateOwnership()
permite que um instalador
indique ao sistema que pretende ser responsável por futuras atualizações
de um app que ele está instalando. Esse recurso permite a aplicação da propriedade
da atualização, ou seja, apenas o proprietário da atualização pode
instalar atualizações automáticas no app. A aplicação da propriedade da atualização ajuda a
garantir que os usuários recebam atualizações apenas da app store esperada.
Qualquer outro instalador, incluindo aqueles que usam a permissão
INSTALL_PACKAGES
, precisa receber aprovação explícita do usuário
para instalar uma atualização. Se um usuário decidir continuar com uma
atualização de outra fonte, a propriedade da atualização será perdida.
Atualizar apps em momentos menos incômodos
Geralmente, as app stores não querem atualizar um app que está em uso, porque isso encerra os processos em execução e pode interromper o que o usuário está fazendo.
A partir do Android 14, a API InstallConstraints
oferece aos instaladores uma maneira de garantir que as atualizações do app ocorram em um
momento oportuno. Por exemplo, uma app store pode chamar o método
commitSessionAfterInstallConstraintsAreMet()
para garantir que uma atualização só será confirmada quando o usuário não estiver mais
interagindo com o app em questão.
Instalar divisões opcionais de forma simples
Com os APKs divididos, os recursos de um app podem ser enviados em arquivos APK separados
em vez de como um APK monolítico. Os APKs divididos permitem que as app stores otimizem a
entrega de diferentes componentes do app. Por exemplo, app stores podem otimizar
com base nas propriedades do dispositivo de destino. A
API PackageInstaller
oferece
suporte a divisões desde a
apresentação no nível 22 da API.
No Android 14, o método setDontKillApp()
permite que um
instalador indique que os processos em execução do app não serão encerrados quando
novas divisões forem instaladas. As app stores podem usar esse recurso para instalar
novos recursos enquanto o usuário está usando o app.
Pacotes de metadados do app
A partir do Android 14, o instalador do pacote do Android permite que você especifique os metadados do app, como práticas de segurança de dados, que serão incluídos em páginas de app stores, como o Google Play.
Detectar quando usuários fazem capturas de tela no dispositivo
为了打造更加标准化的屏幕截图检测体验,Android 14 引入了可保护隐私的屏幕截图检测 API。借助此 API,应用可以按 activity 注册回调。如果用户在该 activity 可见时截取屏幕截图,系统会调用这些回调并通知用户。
Experiência do usuário
Ações personalizadas e melhoria na classificação do Sharesheet
Android 14 更新了系统 Sharesheet,以便为用户提供自定义应用操作和信息更丰富的预览结果。
添加自定义操作
对于 Android 14,您的应用可以向其调用的系统 Sharesheet 添加自定义操作。

提高直接共享目标的排名
Android 14 根据来自应用的更多信号来确定直接共享目标的排名,以便为用户提供更实用的结果。为了提供最实用的排名信号,请遵循提高直接共享目标排名的准则。通讯应用还可以报告出站和入站消息的快捷方式使用情况。

Suporte a animações de voltas preditivas integradas e personalizadas
Android 13 在开发者选项背后引入了预测性“返回主屏幕”动画。在已启用开发者选项的受支持应用中使用时,滑回手势会显示动画,表明返回手势会使应用退回到主屏幕。
Android 14 包含针对“预测性返回”的多项改进和新指南:
- 您可设置
android:enableOnBackInvokedCallback=true
,以便为每个 activity 选择启用预测性返回系统动画,而不是为整个应用选择启用。 - 我们添加了新的系统动画,以配合 Android 13 中的“返回主屏幕”动画。新的系统动画是跨 activity 和跨任务的,您可在迁移到预测性返回后自动获得该动画。
- 我们为底部动作条、侧边动作条和搜索添加了新的 Material 组件动画。
- 我们制作了有关如何创建自定义应用内动画和转换的设计指南。
- 我们添加了许多新 API 来支持自定义的应用内转换动画:
在此 Android 14 预览版中,所有预测性返回功能都是位于开发者选项背后。请参阅与将您的应用迁移到预测性返回有关的开发者指南,以及与创建自定义应用内转换有关的开发者指南。
Substituições por app do fabricante de dispositivos de tela grande
借助按应用替换项,设备制造商可以更改应用在大屏设备上的行为。例如,FORCE_RESIZE_APP
替换项会指示系统调整应用大小以适应显示屏尺寸(避免进入尺寸兼容模式),即使在应用清单中设置了 resizeableActivity="false"
也是如此。
替换项旨在改善大屏设备上的用户体验。
借助新的清单属性,您可以为应用停用某些设备制造商替换项。
Substituições por app para usuários de telas grandes
按应用替换项会更改应用在大屏设备上的行为。例如,无论应用的配置如何,OVERRIDE_MIN_ASPECT_RATIO_LARGE
设备制造商替换项都会将应用宽高比设置为 16:9。
借助 Android 14 QPR1,用户可以在大屏设备上通过新的设置菜单应用按应用替换项。
Compartilhamento de tela de app
借助应用界面共享功能,用户可以在录制屏幕内容时共享应用窗口,而不是整个设备屏幕。
在应用屏幕共享模式下,状态栏、导航栏、通知和其他系统界面元素会从共享显示屏中排除。系统只会分享所选应用的内容。
应用屏幕共享功能可让用户运行多个应用,但将内容共享限制为单个应用,从而提高工作效率并保护隐私。
Resposta inteligente com tecnologia de LLM no Gboard do Pixel 8 Pro
On Pixel 8 Pro devices with the December Feature Drop, developers can try out higher-quality smart replies in Gboard powered by on-device Large Language Models (LLMs) running on Google Tensor.
This feature is available as a limited preview for US English in WhatsApp, Line, and KakaoTalk. It requires using a Pixel 8 Pro device with Gboard as your keyboard.
To try it out, first enable the feature in Settings > Developer Options > AiCore Settings > Enable Aicore Persistent.
Next, open a conversation in a supported app to see LLM-powered Smart Reply in Gboard's suggestion strip in response to incoming messages.
Gráficos
Os caminhos podem ser consultados e interpolados
A API Path
do Android é um mecanismo avançado e flexível para
criar e renderizar gráficos vetoriais, com a capacidade de traçar ou preencher um
caminho, construir um caminho a partir de segmentos de linha ou curvas quadráticas ou cúbicas, realizar
operações booleanas para conseguir formas ainda mais complexas ou todas essas
formas simultaneamente. Uma limitação é a capacidade de descobrir o que está
presente em um objeto de caminho. Os componentes internos do objeto são opacos para autores de chamadas
após a criação.
Para criar um Path
, chame métodos como
moveTo()
, lineTo()
e
cubicTo()
para adicionar segmentos de caminho. Mas não há uma maneira de perguntar a esse caminho quais são os segmentos. Portanto, você precisa manter essas informações no momento da criação.
A partir do Android 14, é possível consultar caminhos para descobrir o que há dentro deles.
Primeiro, você precisa conseguir um objeto PathIterator
usando a API Path.getPathIterator
:
Kotlin
val path = Path().apply { moveTo(1.0f, 1.0f) lineTo(2.0f, 2.0f) close() } val pathIterator = path.pathIterator
Java
Path path = new Path(); path.moveTo(1.0F, 1.0F); path.lineTo(2.0F, 2.0F); path.close(); PathIterator pathIterator = path.getPathIterator();
Em seguida, chame PathIterator
para iterar os segmentos um por um, recuperando todos os dados necessários para cada segmento. Este exemplo
usa objetos PathIterator.Segment
, que empacotam os dados
para você:
Kotlin
for (segment in pathIterator) { println("segment: ${segment.verb}, ${segment.points}") }
Java
while (pathIterator.hasNext()) { PathIterator.Segment segment = pathIterator.next(); Log.i(LOG_TAG, "segment: " + segment.getVerb() + ", " + segment.getPoints()); }
O PathIterator
também tem uma versão não alocada de next()
, em que é possível transmitir
um buffer para armazenar os dados dos pontos.
Um dos casos de uso importantes para consultar os dados Path
é a interpolação. Por
exemplo, você pode querer animar (ou transformar) entre dois caminhos diferentes. Para
simplificar ainda mais esse caso de uso, o Android 14 também inclui o
método interpolate()
em Path
. Supondo que os dois caminhos tenham
a mesma estrutura interna, o método interpolate()
cria um novo Path
com esse resultado interpolado. Este exemplo retorna um caminho com um formato que está
na metade do caminho (uma interpolação linear de 0,5) entre path
e otherPath
:
Kotlin
val interpolatedResult = Path() if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, .5f, interpolatedResult) }
Java
Path interpolatedResult = new Path(); if (path.isInterpolatable(otherPath)) { path.interpolate(otherPath, 0.5F, interpolatedResult); }
A biblioteca graphics-path do Jetpack também permite APIs semelhantes em versões anteriores do Android.
Malhas personalizadas com shaders de vértice e fragmento
O Android já oferece suporte a renderização de malhas triangulares com sombreamento personalizado, mas o formato de malha de entrada foi limitado a algumas combinações de atributos predefinidas. O Android 14 adiciona suporte a malhas personalizadas, que podem ser definidas como triângulos ou faixas de triângulo, e podem ser indexadas, se necessário. Essas malhas são especificadas com atributos personalizados, incrementos de vértice, variação e sombreadores de vértice e fragmento escritos em AGSL.
O sombreador de vértice define as variações, como posição e cor, enquanto o
sombreador de fragmentos pode definir a cor do pixel, normalmente
usando as variações criadas pelo sombreador de vértice. Se a cor for fornecida pelo
shader de fragmentos, ela será mesclada com a cor Paint
atual usando o modo de mesclagem selecionado ao
desenhar a malha. Os uniformes podem ser transmitidos
para os sombreadores de fragmentos e vértices para mais flexibilidade.
Renderizador de buffer de hardware para Canvas
Para ajudar no uso da API Canvas
do Android para desenhar com
aceleração de hardware em um HardwareBuffer
, Android 14
apresenta o HardwareBufferRenderer
. Essa API é
particularmente útil quando seu caso de uso envolve a comunicação com o compositor
do sistema usando SurfaceControl
para renderização
de baixa latência.