![Android 4.4 para celular e tablet](https://developer.android.com/static/images/kk-devices.png?authuser=9&hl=pt)
Bem-vindo ao Android 4.4 KitKat!
O Android KitKat oferece todos os recursos mais inovadores, bonitos e úteis do Android a mais dispositivos de todo o mundo.
Este documento oferece um resumo das novidades para os desenvolvedores.
Saiba mais sobre o KitKat para consumidores em www.android.com.
Android para todos
O Android 4.4 foi projetado para ser executado de forma rápida, estável e responsiva do que nunca em uma variedade muito maior de dispositivos, inclusive em milhões de dispositivos básicos no mundo todo com 512 MB de RAM.
O KitKat simplifica todos os principais componentes para reduzir o uso de memória e introduz novas APIs e ferramentas para ajudar você a criar aplicativos inovadores, responsivos e com baixo consumo de memória.
Os OEMs que criam a próxima geração de dispositivos Android podem aproveitar as recomendações e opções segmentadas para executar o Android 4.4 de maneira eficiente, mesmo em dispositivos com pouca memória. O ajuste de cache do código JIT do Dalvik, a mesclagem de páginas iguais do kernel (KSM), a troca para zRAM e outras otimizações ajudam a gerenciar a memória. Novas opções de configuração permitem que os OEMs ajustem níveis de falta de memória para processos, definam tamanhos de cache gráfico, controlem a recuperação de memória e muito mais.
No próprio Android, as mudanças no sistema melhoram o gerenciamento de memória e reduzem o consumo de memória. Os processos principais do sistema foram ajustados para usar menos heap. Agora, eles protegem a memória do sistema de forma mais agressiva contra apps que consomem grandes quantidades de RAM. Quando vários serviços são iniciados ao mesmo tempo, como quando a conectividade de rede muda, o Android agora inicia os serviços em série, em pequenos grupos, para evitar demandas de pico de memória.
Para desenvolvedores, o Android 4.4 ajuda a fornecer apps eficientes e responsivos em todos os dispositivos. Uma nova API, ActivityManager.isLowRamDevice(), permite ajustar o comportamento do seu app para corresponder à configuração de memória do dispositivo. Você pode modificar ou desativar recursos de memória grande conforme necessário, dependendo dos casos de uso em que quer oferecer compatibilidade em dispositivos de nível básico. Saiba mais sobre como otimizar seus apps para dispositivos com pouca memória neste link.
As novas ferramentas também fornecem insights poderosos sobre o uso de memória pelo seu app. A ferramenta procstats detalha o uso de memória ao longo do tempo, com tempos de execução e consumo de memória para apps em primeiro plano e serviços em segundo plano. Uma visualização no dispositivo também está disponível como uma nova opção para desenvolvedores. A ferramenta meminfo foi aprimorada para facilitar a detecção de tendências e problemas de memória, além de revelar uma sobrecarga extra de memória que não estava visível anteriormente.
Novos recursos de NFC pela Emulação de cartão host
O Android 4.4 apresenta a nova plataforma de compatibilidade com transações seguras baseadas em NFC por meio da Emulação de cartão host (HCE, na sigla em inglês), para pagamentos, programas de fidelidade, acesso por cartão, cartões de transporte público e outros serviços personalizados. Com o HCE, qualquer app em um dispositivo Android pode emular um cartão inteligente NFC, permitindo que os usuários toquem para iniciar transações com um app de sua escolha. Nenhum elemento de segurança (SE, na sigla em inglês) provisionado no dispositivo é necessário. Os apps também podem usar o novo modo leitor para atuar como leitores de cartões HCE e outras transações baseadas em NFC.
![Símbolo de pagamento por aproximação](https://developer.android.com/static/images/kk-contactless-card.png?authuser=9&hl=pt)
O HCE do Android emula cartões inteligentes baseados em ISO/IEC 7816 que usam o protocolo ISO/IEC 14443-4 (ISO-DEP) sem contato para transmissão. Atualmente, esses cartões são usados por muitos sistemas, incluindo a infraestrutura de pagamento NFC EMVCO. O Android usa identificadores de aplicativos (AIDs, na sigla em inglês), conforme definido na norma ISO/IEC 7816-4 como a base para rotear transações para os apps Android corretos.
Os apps declaram os AIDs com suporte nos arquivos de manifesto, com um identificador de categoria que indica o tipo de suporte disponível (por exemplo, "pagamentos"). Nos casos em que vários apps oferecem suporte ao mesmo AID na mesma categoria, o Android exibe uma caixa de diálogo que permite que o usuário escolha qual app usar.
Quando o usuário toca para pagar em um terminal de ponto de venda, o sistema extrai o AID preferido e encaminha a transação para o aplicativo correto. O app lê os dados da transação e pode usar qualquer serviço local ou baseado em rede para verificar e concluir a transação.
O HCE do Android precisa que haja um controlador de NFC no dispositivo. A compatibilidade com HCE já está amplamente disponível na maioria dos controladores de NFC, que oferecem compatibilidade dinâmica para transações HCE e SE. Dispositivos Android 4.4 compatíveis com NFC incluirão o recurso "Toque e pague" para facilitar os pagamentos usando HCE.
Estrutura de impressão
Agora os apps Android podem imprimir qualquer tipo de conteúdo por Wi-Fi ou por serviços hospedados na nuvem, como o Google Cloud Print. Em apps para impressão, os usuários podem descobrir as impressoras disponíveis, mudar o tamanho do papel, escolher páginas específicas para imprimir e imprimir quase qualquer tipo de documento, imagem ou arquivo.
O Android 4.4 introduz compatibilidade com plataforma nativa para impressão, além de APIs para gerenciar impressão e adicionar novos tipos de suporte a impressoras. A plataforma fornece um gerenciador de impressão que faz a mediação entre apps que solicitam impressão e serviços de impressão instalados que processam solicitações de impressão. O gerenciador de impressão oferece serviços compartilhados e uma interface do sistema para impressão, oferecendo aos usuários controle consistente sobre a impressão de qualquer app. Ele também garante a segurança do conteúdo conforme ele é transmitido entre processos, de um app para um serviço de impressão.
![Dispositivo móvel na orientação paisagem mostrando os recursos de suporte à impressora](https://developer.android.com/static/images/kk-print-land-n5.jpg?authuser=9&hl=pt)
Você pode adicionar suporte à impressão aos seus apps ou desenvolver serviços de impressão para oferecer suporte a tipos específicos de impressoras.
Os fabricantes de impressoras podem usar novas APIs para desenvolver os próprios serviços de impressão, que são componentes conectáveis que adicionam lógica e serviços específicos do fornecedor para se comunicar com tipos específicos de impressoras. Eles podem criar serviços de impressão e distribuí-los pelo Google Play, facilitando a localização e instalação nos dispositivos pelos usuários. Assim como em outros apps, é possível atualizar os serviços de impressão over the air (OTA) a qualquer momento.
Os apps clientes podem usar novas APIs para adicionar recursos de impressão aos apps com mudanças mínimas no código. Na maioria dos casos, você adicionaria uma ação de impressão à barra de ações e uma IU para escolher itens para imprimir. Você também implementaria APIs para criar trabalhos de impressão, consultar o gerenciador de impressão para verificar o status e cancelar trabalhos. Isso permite imprimir quase qualquer tipo de conteúdo, de imagens e documentos locais a dados de rede ou uma visualização renderizada em uma tela.
Para uma compatibilidade mais ampla, o Android usa PDF como o principal formato de arquivo para impressão. Antes de imprimir, seu app precisa gerar uma versão em PDF do seu conteúdo com paginação adequada. Por conveniência, a API print oferece classes auxiliares nativas e de WebView para permitir a criação de PDFs usando APIs padrão de desenho do Android. Se seu app sabe como desenhar o conteúdo, ele pode criar rapidamente um PDF para impressão.
A maioria dos dispositivos com o Android 4.4 inclui o Google Cloud Print pré-instalado como um serviço de impressão, além de vários apps do Google compatíveis com impressão, incluindo Chrome, Drive, Gallery e QuickOffice.
Estrutura de acesso ao armazenamento
Um novo framework de acesso ao armazenamento simplifica a procura e a abertura de documentos, imagens e outros arquivos em todos os provedores de armazenamento de documentos que preferirem. A interface padrão e fácil de usar permite que os usuários procurem arquivos e acessem os itens recentes de maneira consistente em todos os apps e provedores.
![Dispositivo móvel mostrando uma barra lateral aberta na nova estrutura de acesso ao armazenamento](https://developer.android.com/static/images/kk-saf2-n5.jpg?authuser=9&hl=pt)
![Dispositivo móvel mostrando os serviços integrados do Box na nova estrutura de acesso ao armazenamento](https://developer.android.com/static/images/kk-saf1-n5.jpg?authuser=9&hl=pt)
A Box e outras empresas integraram os serviços ao framework de acesso ao armazenamento, oferecendo aos usuários fácil acesso aos documentos a partir de apps em todo o sistema.
Os serviços de armazenamento local ou em nuvem podem participar desse ecossistema implementando uma nova classe de provedor de documentos que encapsula os serviços. A classe do provedor inclui todas as APIs necessárias para registrar o provedor no sistema e gerenciar a navegação, a leitura e a gravação de documentos no provedor. O provedor de documentos pode conceder aos usuários acesso a dados remotos ou locais representados como arquivos, de texto, fotos e planos de fundo a vídeo, áudio e muito mais.
Se você criar um provedor de documentos para um serviço local ou em nuvem, poderá fornecê-lo aos usuários como parte do seu app Android existente. Depois de fazer o download e a instalação do app, os usuários terão acesso instantâneo ao seu serviço a partir de qualquer app que participe do framework. Isso pode ajudar você a ganhar exposição e engajamento, já que os usuários encontrarão seus serviços com mais facilidade.
Se você desenvolver um app cliente que gerencie arquivos ou documentos, será possível fazer a integração com o framework de acesso ao armazenamento usando novas intents CREATE_DOCUMENT ou OPEN_DOCUMENT para abrir ou criar arquivos, o sistema exibirá automaticamente a interface padrão para procurar documentos, incluindo todos os provedores de documentos disponíveis.
É possível integrar seu app cliente uma vez, para todos os provedores, sem nenhum código específico do fornecedor. À medida que os usuários adicionam ou removem provedores, eles continuam tendo acesso aos serviços preferidos no app, sem mudanças ou atualizações necessárias no código.
O framework de acesso ao armazenamento é integrado ao intent GET_CONTENT para que os usuários também tenham acesso a todo o conteúdo e às fontes de dados anteriores na nova interface do sistema para navegação. Os apps podem continuar usando GET_CONTENT para permitir que os usuários importem dados. O framework de acesso ao armazenamento e a IU do sistema para navegação facilitam a localização e importação de dados de uma variedade maior de fontes.
A maioria dos dispositivos com o Android 4.4 incluirá o Google Drive e o armazenamento local pré-integrado como provedores de documentos, e os aplicativos do Google que funcionam com arquivos também usarão o novo framework.
Sensores de baixo consumo
Agrupamento de sensores
O Android 4.4 introduz compatibilidade com a plataforma para agrupamento de sensores de hardware, uma nova otimização que pode reduzir drasticamente a energia consumida pelas atividades contínuas do sensor.
Com o agrupamento de sensores, o Android trabalha com o hardware do dispositivo para coletar e entregar eventos de sensores de forma eficiente em lotes, em vez de individualmente à medida que são detectados. Isso permite que o processador do aplicativo do dispositivo permaneça em um estado inativo de baixo consumo de energia até que os lotes sejam entregues. É possível solicitar eventos em lote de qualquer sensor usando um listener de eventos padrão, e você pode controlar o intervalo em que recebe lotes. Também é possível solicitar a entrega imediata de eventos entre ciclos de lote.
O agrupamento de sensores é ideal para casos de uso de baixo consumo de energia e longa duração, como condicionamento físico, rastreamento de localização, monitoramento e muito mais. Ele pode tornar seu app mais eficiente e permite rastrear eventos de sensor continuamente, mesmo quando a tela está desligada e o sistema está em suspensão.
O agrupamento de sensores está disponível atualmente no Nexus 5, e estamos trabalhando com nossos parceiros de chipset para levá-lo a mais dispositivos o mais rápido possível.
![Dispositivo móvel mostrando o suporte ao novo detector de passos](https://developer.android.com/static/images/kk-sensors-moves-n5.jpg?authuser=9&hl=pt)
![Dispositivo móvel mostrando o novo suporte ao contador de passos](https://developer.android.com/static/images/kk-sensors-runtastic-n5.jpg?authuser=9&hl=pt)
Moves e Runtastic Pedometer usam o detector de passos de hardware para oferecer serviços de longa duração e baixo consumo de energia.
Detector e contador de passos
O Android 4.4 também adiciona compatibilidade de plataforma com dois novos sensores compostos, o detector e o contador de passos, que permitem que o app monitore passos quando o usuário está caminhando, correndo ou subindo escadas. Esses novos sensores são implementados no hardware para baixo consumo de energia.
O detector de passos analisa a entrada do acelerômetro para reconhecer quando o usuário deu um passo e aciona um evento a cada passo. O contador de passos rastreia o número total de etapas desde a última reinicialização do dispositivo e aciona um evento a cada alteração na contagem de passos. Como a lógica e o gerenciamento de sensor são integrados à plataforma e ao hardware subjacente, não é necessário manter seus próprios algoritmos de detecção no app.
Os sensores de detector e contador de passos estão disponíveis no Nexus 5, e estamos trabalhando com nossos parceiros de chipset para levá-los a novos dispositivos o mais rápido possível.
Provedor de SMS
Se você desenvolver um app de mensagens que usa SMS ou MMS, agora poderá usar um provedor de SMS compartilhado e novas APIs para gerenciar o armazenamento e a recuperação de mensagens do seu app. O novo provedor de SMS e as novas APIs definem um modelo de interação padronizado para todos os apps que processam mensagens SMS ou MMS.
Junto com o novo provedor e as APIs, o Android 4.4 introduz novas semânticas para receber mensagens e gravar no provedor. Quando uma mensagem é recebida, o sistema a encaminha diretamente para o app de mensagens padrão do usuário usando o novo intent SMS_DELIVER. Outros apps ainda podem ouvir as mensagens recebidas usando o intent SMS_RECEIVED. Além disso, o sistema agora permite que apenas o app padrão grave dados da mensagem no provedor, embora outros apps possam ler a qualquer momento. Apps que não sejam o padrão do usuário ainda podem enviar mensagens. O sistema processa as gravações dessas mensagens no provedor em nome do app para que os usuários possam vê-las no app padrão.
O novo provedor e a nova semântica ajudam a melhorar a experiência do usuário quando vários apps de mensagens estão instalados, além de criar novos recursos de mensagens com APIs totalmente compatíveis e compatíveis com versões futuras.
Novas formas de criar aplicativos bonitos
![Dispositivo móvel exibindo o novo recurso de modo imersivo](https://developer.android.com/static/images/kk-immersive-n5.jpg?authuser=9&hl=pt)
Um novo modo imersivo permite que os apps usem cada pixel da tela para mostrar conteúdo e capturar eventos de toque.
Modo imersivo de tela cheia
Agora seus apps podem usar cada pixel na tela do dispositivo para mostrar seu conteúdo e capturar eventos de toque. O Android 4.4 adiciona um novo modo imersivo de tela cheia que permite criar IUs sem margens em smartphones e tablets, ocultando toda a interface do sistema, como a barra de status e de navegação. Ele é ideal para conteúdo visual avançado, como fotos, vídeos, mapas, livros e jogos.
No novo modo, a interface do sistema permanece oculta, mesmo enquanto os usuários estão interagindo com o app ou jogo. Você pode capturar eventos de toque de qualquer lugar da tela, até mesmo áreas que seriam ocupadas pelas barras do sistema. Essa é uma ótima maneira de criar uma interface maior, mais completa e imersiva no seu app ou jogo, além de reduzir a distração visual.
Para garantir que os usuários sempre tenham acesso fácil e consistente à IU do sistema no modo imersivo de tela cheia, o Android 4.4 é compatível com um novo gesto. No modo imersivo, um deslizamento de borda a partir da parte superior ou inferior da tela agora revela a IU do sistema.
Para retornar ao modo imersivo, os usuários podem tocar na tela fora dos limites da barra ou aguardar um curto período para que elas sejam ocultadas automaticamente. Para uma experiência do usuário consistente, o novo gesto também funciona com métodos anteriores para ocultar a barra de status.
Estrutura de transições para cenas de animação
A maioria dos apps estrutura os fluxos em torno de vários estados importantes da interface que expõem diferentes ações. Muitos apps também usam animação para ajudar os usuários a entender o progresso por meio desses estados e as ações disponíveis em cada um. Para facilitar a criação de animações de alta qualidade no seu app, o Android 4.4 introduz um novo framework de transições.
O framework de transições permite definir cenas, normalmente hierarquias de visualização, e transições, que descrevem como animar ou transformar as cenas quando o usuário entra ou sai delas. Você pode usar vários tipos de transição predefinidos para animar as cenas com base em propriedades específicas, como limites de layout ou visibilidade. Há também um tipo de transição automática que esmaece, move e redimensiona visualizações automaticamente durante uma mudança de cena. Além disso, você pode definir transições personalizadas que animam as propriedades mais importantes para o app e adicionar seus próprios estilos de animação, se necessário.
Com o framework de transições, você também pode animar mudanças na IU em tempo real, sem precisar definir cenas. Por exemplo, você pode fazer uma série de mudanças em uma hierarquia de visualizações e, em seguida, fazer com que o TransitionManager execute uma transição atrasada nessas mudanças.
Depois de configurar as transições, é fácil invocá-las do app. Por exemplo, é possível chamar um único método para iniciar uma transição, fazer várias mudanças na hierarquia de visualização e, no próximo frame, as animações começarão a animar automaticamente as mudanças especificadas.
![IU translúcida do sistema](https://developer.android.com/static/images/kk-home.jpg?authuser=9&hl=pt)
Agora os aplicativos podem usar novos estilos de janela para solicitar barras translúcidas do sistema.
Para ter controle personalizado sobre as transições executadas entre cenas específicas no fluxo do seu aplicativo, use o TransitionManager. O TransitionManager permite definir a relação entre as cenas e as transições executadas para mudanças de cena específicas.
Estilo da IU translúcida do sistema
Para aproveitar ao máximo seu conteúdo, agora você pode usar novos estilos e temas de janela para solicitar uma interface translúcida do sistema, incluindo as barras de status e de navegação. Para garantir a legibilidade dos botões da barra de navegação ou das informações da barra de status, gradientes sutis são mostrados atrás das barras do sistema. Um caso de uso típico seria um app que precisa mostrar um plano de fundo.
Acesso a notificações melhorado
Os serviços do listener de notificações agora podem ver mais informações sobre notificações recebidas que foram construídas usando as APIs do criador de notificações. Os serviços de listener podem acessar as ações de uma notificação, bem como novos campos extras (texto, ícone, imagem, progresso, cronômetro e muitos outros) para extrair informações mais claras sobre a notificação e apresentá-las de maneira diferente.
Chromium WebView
O Android 4.4 inclui uma implementação totalmente nova do WebView baseada no Chromium. A nova Chromium WebView oferece o que há de mais moderno em suporte, desempenho e compatibilidade para criar e exibir seu conteúdo baseado na Web.
O Chromium WebView fornece ampla compatibilidade com HTML5, CSS3 e JavaScript. Ela é compatível com a maioria dos recursos HTML5 disponíveis no Chrome para Android 30. Ela também oferece uma versão atualizada do JavaScript Engine (V8) que oferece um desempenho muito melhor do JavaScript.
Além disso, a nova WebView do Chromium oferece suporte à depuração remota usando o Chrome DevTools. Por exemplo, você pode usar o Chrome DevTools na sua máquina de desenvolvimento para inspecionar, depurar e analisar seu conteúdo da WebView em tempo real em um dispositivo móvel.
A nova Chromium WebView está incluída em todos os dispositivos compatíveis que executam o Android 4.4 ou versões mais recentes. Você pode aproveitar a nova WebView imediatamente, com modificações mínimas nos apps e conteúdos já existentes. Na maioria dos casos, o conteúdo será migrado para a nova implementação sem problemas.
Novos recursos de mídia
Gravação de tela
Agora é fácil criar vídeos de alta qualidade do seu app diretamente no dispositivo Android. O Android 4.4 adiciona suporte à gravação de tela e disponibiliza um utilitário de gravação de tela que permite iniciar e interromper a gravação em um dispositivo conectado ao ambiente do SDK do Android por USB. É uma ótima maneira nova e incrível de criar tutoriais para seu app, materiais de teste, vídeos de marketing e muito mais.
Com o utilitário de gravação de tela, é possível capturar vídeos do conteúdo da tela do dispositivo e armazená-los como um arquivo MP4. É possível gravar em qualquer resolução e taxa de bits compatíveis com o dispositivo. A saída mantém a proporção da tela. Por padrão, o utilitário seleciona uma resolução igual ou próxima à resolução da tela do dispositivo na orientação atual. Quando terminar de gravar, você poderá compartilhar o vídeo diretamente do seu dispositivo ou transferir o arquivo MP4 para o computador host para pós-produção.
Se seu app reproduz vídeo ou outro conteúdo protegido que você não quer que seja capturado pelo gravador de tela, use SurfaceView.setSecure() para marcar o conteúdo como seguro.
Você pode acessar a gravação de tela pela ferramenta adb incluída no SDK do Android usando o comando adb shell screenrecord. Você também pode iniciá-lo pelo Logcat no Android Studio.
Alternância de resolução pela reprodução adaptativa
O Android 4.4 oferece compatibilidade formal com a reprodução adaptativa no framework de mídia do Android. A reprodução adaptativa é um recurso opcional de decodificadores de vídeo para MPEG-DASH e outros formatos que permite mudanças contínuas na resolução durante a reprodução. O cliente pode começar a alimentar os frames de vídeo de entrada do decodificador com uma nova resolução, e a resolução dos buffers de saída mudará automaticamente e sem uma lacuna significativa.
A troca de resolução no Android 4.4 permite que os apps de mídia ofereçam uma experiência de streaming de vídeo significativamente melhor. Os apps podem verificar o suporte à reprodução adaptativa no momento da execução usando APIs existentes e implementar a alternância de resolução usando as novas APIs introduzidas no Android 4.4.
Criptografia comum para DASH
O Android agora é compatível com a Criptografia comum (CENC, na sigla em inglês) para MPEG-DASH, que fornece um esquema de DRM padrão multiplataforma para gerenciar a proteção de conteúdo. Os apps podem aproveitar o CENC por meio do framework de DRM modular do Android e das APIs de plataforma para oferecer suporte a DASH.
Transmissão ao vivo em HTTP
O Android 4.4 atualiza o suporte ao HTTP Live Streaming (HLS) da plataforma para um superconjunto da versão 7 da especificação HLS (versão 4 do protocolo). Consulte o rascunho da IETF para mais detalhes.
Encapsulamento de áudio para DSP
Para reprodução de áudio com alto desempenho e menor consumo de energia, o Android 4.4 adiciona compatibilidade de plataforma com o encapsulamento de áudio em um processador de sinal digital (DSP, na sigla em inglês) no chipset do dispositivo. Com o encapsulamento, os efeitos da decodificação e da saída de áudio são descarregados no DSP, ativando o processador do aplicativo com menos frequência e usando menos bateria.
O encapsulamento de áudio pode melhorar drasticamente a duração da bateria para casos de uso, como ouvir música com um fone de ouvido com a tela desligada. Por exemplo, com o encapsulamento de áudio, o Nexus 5 oferece um tempo total de reprodução de áudio fora da rede de até 60 horas, um aumento de mais de 50% em relação ao áudio não encapsulado.
Os aplicativos de mídia podem aproveitar o encapsulamento de áudio em dispositivos com suporte sem precisar modificar o código. O sistema aplica o encapsulamento para otimizar a reprodução de áudio sempre que ele estiver disponível no dispositivo.
![Visualizador exibindo efeito do atenuador de ruído no áudio](https://developer.android.com/static/images/kk-loudnessEnhancerAnnotated.png?authuser=9&hl=pt)
Visualização de como o efeito do LoudnessEnhancer pode tornar o conteúdo de fala mais audível.
O encapsulamento de áudio exige suporte no hardware do dispositivo. Atualmente, o encapsulamento de áudio está disponível no Nexus 5, e estamos trabalhando com nossos parceiros de chipset para disponibilizá-lo em mais dispositivos o quanto antes.
Monitoramento de áudio
Os apps podem usar novas ferramentas de monitoramento no efeito do Visualizador para receber atualizações sobre os níveis de pico e RMS de qualquer áudio que esteja sendo reproduzido no dispositivo. Por exemplo, é possível usar isso de maneira criativa em visualizadores de música ou implementar a medição de reprodução em um player de mídia.
Atenuador de ruído
Os aplicativos de reprodução de mídia podem aumentar o volume do conteúdo falado usando o novo efeito LoudnessEnhancer, que atua como um compressor com constantes de tempo ajustadas especificamente para fala.
Marcações de data e hora no áudio para melhorar a sincronização de AV
O framework de áudio agora pode relatar carimbos de data/hora da apresentação da HAL de saída de áudio para os aplicativos, melhorando a sincronização entre áudio e vídeo. Os carimbos de data/hora de áudio permitem que seu app determine quando um frame de áudio específico será (ou foi) apresentado fora do dispositivo ao usuário. É possível usar as informações do carimbo de data/hora para sincronizar o áudio com os frames de vídeo com mais precisão.
Miracast™ certificado para Wi-Fi
Os dispositivos Android 4.4 agora podem ser certificados de acordo com a Especificação de Display Wi-Fi do Wi-Fi Alliance como compatíveis com o Miracast. Para ajudar nos testes, uma nova opção de Display sem fio ao desenvolvedor expõe configurações e controles de configuração avançados para certificação de Display sem fio. Acesse a opção em Configurações > Opções do desenvolvedor > Certificação de Display sem fio. O Nexus 5 é um dispositivo de display sem fio certificado para Miracast.
Computação com RenderScript
![Gráfico de otimizações do RenderScript](https://developer.android.com/static/images/kk-rs-chart-versions.png?authuser=9&hl=pt)
Comparativos de mercado de desempenho para o Android 4.4 em relação ao Android 4.3, para execução nos mesmos dispositivos (Nexus 7 e Nexus 10).
Melhorias contínuas no desempenho
Quando seus apps usam o RenderScript, eles se beneficiam do ajuste contínuo de desempenho no ambiente de execução do RenderScript, sem a necessidade de recompilação. O gráfico à direita mostra os ganhos de desempenho do Android 4.4 em dois chipsets conhecidos.
Aceleração de GPU
Todo app que usa o RenderScript em um dispositivo com suporte se beneficia da aceleração de GPU, sem mudanças no código ou recompilação. Desde que o Nexus 10 estreou a aceleração de GPU do RenderScript pela primeira vez, vários outros parceiros de hardware adicionaram suporte.
Agora, com o Android 4.4, a aceleração de GPU está disponível no Nexus 5, bem como no Nexus 4, Nexus 7 (2013) e Nexus 10. Estamos trabalhando com nossos parceiros para levá-la a mais dispositivos o mais rápido possível.
RenderScript no Android NDK
Agora você pode aproveitar o RenderScript diretamente no seu código nativo. Uma nova API C++ no Kit de desenvolvimento nativo do Android (NDK, na sigla em inglês) permite acessar a mesma funcionalidade do RenderScript disponível nas APIs do framework, incluindo intrínsecos de script, kernels personalizados e muito mais.
Se você tem tarefas grandes e que exigem alto desempenho para processar no código nativo, execute essas tarefas usando o RenderScript e integre-as ao seu código nativo. O RenderScript oferece excelente desempenho em uma ampla variedade de dispositivos, com suporte automático a CPUs com vários núcleos, GPUs e outros processadores.
Ao criar um app que usa o RenderScript pelo NDK, você pode distribuí-lo para qualquer dispositivo com o Android 2.2 ou mais recente, assim como com a Biblioteca de Suporte do RenderScript disponível para APIs de framework.
Gráficos
GLES2.0 SurfaceFlinger
O Android 4.4 atualizou o SurfaceFlinger do OpenGL ES 1.0 para o OpenGL ES 2.0.
Suporte a novo compositor de hardware para exibições virtuais
A versão mais recente do Android Hardware Composer, o HWComposer 1.3, oferece suporte à composição de hardware de uma tela virtual, além da tela principal externa (por exemplo, HDMI), e melhorou a interoperabilidade com o OpenGL ES.
Novos tipos de conectividade
Novos perfis de Bluetooth
O Android 4.4 é compatível com dois novos perfis de Bluetooth para permitir que os apps sejam compatíveis com uma gama mais ampla de interações de mídia e de baixo consumo de energia. O Bluetooth HID over GATT (HOGP) oferece aos apps um link de baixa latência com dispositivos periféricos de baixo consumo de energia, como mouses, joysticks e teclados. O Bluetooth MAP permite que seus apps troquem mensagens com um dispositivo próximo, como um terminal automotivo para uso viva-voz ou outro dispositivo móvel. Como uma extensão do Bluetooth AVRCP 1.3, os usuários agora podem definir o volume absoluto no sistema a partir dos dispositivos Bluetooth.
A compatibilidade da plataforma com HOGP, MAP e AVRCP é criada na pilha Bluedroid Bluetooth introduzida pelo Google e pela Broadcom no Android 4.2. O suporte está disponível imediatamente em dispositivos Nexus e outros dispositivos compatíveis com Android que oferecem recursos de Bluetooth compatíveis.
IR Blasters
O Android 4.4 introduz a compatibilidade da plataforma com IR blasters integrados, além de um novo serviço de API e sistema que permite criar apps para aproveitá-los.
Com a nova API, você pode criar apps que permitem aos usuários controlar remotamente TVs, sintonizadores, interruptores e outros dispositivos eletrônicos nas proximidades. A API permite que o app verifique se o smartphone ou tablet tem um emissor infravermelho, consulte as frequências da operadora e envie sinais infravermelhos.
Como a API é padrão em dispositivos com o Android 4.4 ou versões mais recentes, seu app pode oferecer suporte à maior variedade possível de fornecedores sem programar um código de integração personalizado.
Compatibilidade com TDLS de Wi-Fi
O Android 4.4 introduz uma maneira simples de transmitir mídia e outros dados mais rapidamente entre dispositivos já conectados à mesma rede Wi-Fi, oferecendo suporte para a configuração de link direto encapsulado (TDLS, na sigla em inglês).
Acessibilidade
Configurações gerais do sistema para legendas
O Android 4.4 agora oferece uma melhor experiência de acessibilidade em todos os apps adicionando preferências gerais do sistema para legendas. Os usuários podem acessar Configurações > Acessibilidade > Legendas para definir preferências globais de legenda, como mostrar legendas e qual idioma, tamanho e estilo do texto serão usados.
Os apps que usam vídeo agora podem acessar as configurações de legenda do usuário e ajustar a apresentação de acordo com as preferências dele. Uma nova API do gerenciador de legendas permite verificar e monitorar as preferências de legenda do usuário. O gerenciador de legendas fornece o estado de legendagem preferido do usuário, bem como a localidade, fator de dimensionamento e estilo de texto preferidos. O estilo de texto inclui cores de primeiro e segundo planos, propriedades de borda e tipo de letra.
![Dispositivos móveis na orientação paisagem exibindo legendas nas preferências de legendas para o sistema.](https://developer.android.com/static/images/kk-captions-n5.jpg?authuser=9&hl=pt)
Agora, os apps podem consultar as preferências de legendas do sistema do usuário. Um exemplo do estilo de exibição esperado é mostrado diretamente nas configurações.
Além disso, os apps que usam VideoView podem usar uma nova API para transmitir um stream de legendas junto com um stream de vídeo para renderização. O sistema processa automaticamente a exibição das legendas nos frames do vídeo de acordo com as configurações gerais do usuário. Atualmente, o VideoView é compatível com exibição automática de legendas apenas no formato WebVTT.
Todos os apps que mostram legendas precisam verificar as preferências de legenda gerais do sistema do usuário e renderizar as legendas da maneira mais próxima possível a essas preferências. Para mais informações sobre como combinações específicas de configurações devem ser, você pode dar uma prévia das legendas em diferentes idiomas, tamanhos e estilos diretamente no app Configurações.
APIs de acessibilidade melhorada
O Android 4.4 estende as APIs de acessibilidade para oferecer compatibilidade com descrição semântica e estrutural mais precisa e a observação de elementos na tela. Com as novas APIs, os desenvolvedores podem melhorar a qualidade do feedback acessível fornecendo serviços de acessibilidade com mais informações sobre os elementos na tela.
Nos nós de acessibilidade, os desenvolvedores agora podem determinar se um nó é um pop-up, receber o tipo de entrada e muito mais. Também é possível usar novas APIs para trabalhar com nós que contêm informações semelhantes a grades, como listas e tabelas. Por exemplo, agora você pode especificar novas ações compatíveis, informações de coleta, modos de região ativa e muito mais.
Os novos eventos de acessibilidade permitem que os desenvolvedores acompanhem mais de perto as mudanças que ocorrem no conteúdo da janela e agora podem detectar mudanças no modo de exploração por toque do dispositivo.
Compatibilidade com usuários internacionais
Espelhamento de desenhável por localidades RTL
Caso seu app seja destinado a usuários que usam scripts RTL, você poderá usar uma nova API para declarar que um drawable precisa ser espelhado automaticamente quando a configuração de localidade do usuário incluir um idioma RTL.
Declarar um drawable como espelhado automaticamente ajuda a evitar a duplicação de recursos no app e reduz o tamanho do APK. Quando você tem drawables reutilizáveis para apresentações LTR e RTL, pode declarar as versões padrão como espelhadas automaticamente e, em seguida, omitir esses drawables dos recursos RTL.
![](https://developer.android.com/static/images/kk-pseudolocale-rtl.png?authuser=9&hl=pt)
A opção Forçar layout RTL facilita o teste de localização do app.
Você pode declarar vários tipos de drawables como espelhados automaticamente no código do aplicativo, como bitmap, 9-patch, camada, lista de estados e outros drawables. Também é possível declarar um drawable como espelhado automaticamente nos arquivos de recurso usando um novo atributo.
Forçar layout da direita para a esquerda
Para facilitar o teste e a depuração de problemas de espelhamento de layout sem mudar para um idioma RTL, o Android inclui uma nova opção ao desenvolvedor para forçar a direção RTL do layout em todos os apps.
A opção "Forçar layout da direita p/ esquerda" alterna o dispositivo para o layout RTL em todas as localidades e mostra o texto no idioma atual. Isso pode ajudar você a encontrar problemas de layout no app sem precisar exibi-lo em um idioma da direita para a esquerda (RTL). Você pode acessar a opção em Settings > Developer options > Forçar layout da direita p/ esquerda.
Melhorias na segurança
SELinux (modo de imposição)
O Android 4.4 atualiza a configuração do SELinux de "permissiva" para "aplicadora". Isso significa que possíveis violações da política em um domínio SELinux que tenha uma política de aplicação serão bloqueadas.
Algoritmos de criptografia melhorados
O Android melhorou ainda mais a segurança ao adicionar suporte a mais dois algoritmos criptográficos. O suporte ao algoritmo de assinatura digital de curva elíptica (ECDSA, na sigla em inglês) foi adicionado ao provedor de keystore para melhorar a segurança da assinatura digital, aplicável a cenários como assinatura de um aplicativo ou de uma conexão de dados. A função de derivação da chave Scrypt é implementada para proteger as chaves criptográficas usadas na criptografia de disco completo.
Outras melhorias
Em dispositivos multiusuários, as VPNs agora são aplicadas por usuário. Isso pode permitir que um usuário encaminhe todo o tráfego de rede por meio de uma VPN sem afetar outros usuários no dispositivo. Além disso, o Android agora oferece suporte a FORTIFY_SOURCE de nível 2, e todo o código é compilado com essas proteções. FORTIFY_SOURCE foi aprimorado para funcionar com clang.
Ferramentas para análise do uso de memória
Procstats
Uma nova ferramenta chamada procstats ajuda a analisar os recursos de memória que o app usa, bem como os recursos usados por outros apps e serviços em execução no sistema.
O Procstats monitora como os apps são executados ao longo do tempo, fornecendo dados sobre a duração da execução e o uso de memória para ajudar a determinar a eficiência com que eles estão executando. Isso é mais importante para apps que iniciam serviços executados em segundo plano, porque permite monitorar o tempo de execução e a quantidade de RAM usada. O Procstats também coleta dados para aplicativos em primeiro plano sobre o uso de memória ao longo do tempo para determinar o perfil geral de memória do app.
O Procstats pode ajudar você a identificar serviços em segundo plano iniciados pelo seu app. Você pode acompanhar por quanto tempo esses serviços continuam em execução e a quantidade de RAM usados ao fazer isso. O Procstats também permite criar perfis para seu app enquanto ele está em primeiro plano, usando o uso da memória ao longo do tempo para determinar o perfil geral de memória.
![](https://developer.android.com/static/images/kk-procstats.png?authuser=9&hl=pt)
A nova ferramenta procstats permite verificar o uso de memória de apps e serviços ao longo do tempo.
![](https://developer.android.com/static/images/kk-meminfo.png?authuser=9&hl=pt)
A ferramenta meminfo aprimorada permite conferir detalhes do uso de memória de um app.
Você pode acessar o procstats pela ferramenta adb incluída no SDK do Android, adb shell dumpsys procstats. Além disso, para criação de perfil no dispositivo, consulte a opção "Estatísticas do processo" para desenvolvedores abaixo.
Status e criação de perfil de memória no dispositivo
O Android 4.4 inclui uma nova opção do desenvolvedor para facilitar a análise do perfil de memória do seu app enquanto ele está sendo executado em qualquer dispositivo ou emulador. Ele é especialmente útil para ter uma ideia de como seu app usa memória e como é executado em dispositivos com pouca RAM. Você pode acessar a opção em Settings > Developer Options > Process Stats.
![Dispositivo móvel mostrando a nova opção "Estatísticas do processo"](https://developer.android.com/static/images/kk-proc-device-overview-n5.jpg?authuser=9&hl=pt)
![Detalhes de uso dos dispositivos móveis na nova opção "Estatísticas do processo"](https://developer.android.com/static/images/kk-proc-device-detail-n5.jpg?authuser=9&hl=pt)
As Estatísticas do processo são uma maneira conveniente de verificar o uso de memória do seu app. Você pode ver como seu app se compara a outros e aumentar o zoom em dados específicos sobre ele ou seus serviços em segundo plano.
A opção Process Stats mostra várias métricas de alto nível sobre o uso de memória do seu app, com base nos dados coletados usando o novo serviço procstats. Na tela principal, é possível ver um resumo do status da memória do sistema. O verde indica o tempo relativo gasto com baixo uso de RAM, o amarelo indica uso moderado de RAM e o vermelho indica alto uso (crítico) de RAM.
Há uma lista abaixo do resumo que resume a carga de memória de cada app no sistema. Para cada app, uma barra azul indica a carga relativa de memória calculada (tempo de execução x avg_pss) do processo, e um número percentual indica a quantidade relativa de tempo gasto em segundo plano. É possível filtrar a lista para mostrar apenas processos em primeiro plano, segundo plano ou armazenados em cache, e você pode incluir ou excluir processos do sistema. Também é possível alterar a duração dos dados coletados para 3, 6, 12 ou 24 horas, e incluir ou excluir a memória uss.
Para ver mais detalhes sobre o uso de memória de um app específico isoladamente, toque nele. Para cada app, agora é possível ver um resumo da memória consumida e a porcentagem do intervalo de coleta que o app estava em execução. Também é possível conferir o uso médio e máximo durante o período de coleta e abaixo dos serviços do app e da porcentagem de tempo de execução.
Analisar seu app usando os dados do Process Stats pode revelar problemas e sugerir possíveis otimizações. Por exemplo, se o app ficar sendo executado por mais tempo do que deveria ou usando muita memória por um período, talvez haja bugs no código que podem ser resolvidos para melhorar o desempenho dele, especialmente quando executado em um dispositivo com pouca RAM.