![Android 4.4 para celular e tablet](https://developer.android.google.cn/static/images/kk-devices.png?authuser=1&hl=pt-br)
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, suave e responsiva do que nunca em uma variedade de dispositivos muito maior do que nunca, inclusive em milhões de dispositivos básicos em todo o mundo que têm apenas 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 forma eficiente, mesmo em dispositivos com pouca memória. O ajuste de cache do código JIT da Dalvik, a mesclagem de mesma página 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 os 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 cortados para usar menos heap. Agora, eles protegem de forma mais intensa a memória do sistema contra apps que consomem muita RAM. Quando vários serviços são iniciados ao mesmo tempo, por exemplo, quando a conectividade de rede muda, o Android agora inicia os serviços em série, em pequenos grupos, para evitar picos de demandas 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 app para corresponder à configuração de memória do dispositivo. É possível modificar ou desativar recursos que usam muita memória conforme necessário, dependendo dos casos de uso que você quer que sejam compatíveis com dispositivos de nível básico. Saiba mais sobre como otimizar seus apps para dispositivos com pouca memória aqui.
As novas ferramentas também oferecem insights poderosos sobre o uso da memória do seu app. A ferramenta procstats detalha o uso da 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 o desenvolvedor. A ferramenta meminfo foi aprimorada para facilitar a detecção de tendências e problemas da memória, além de revelar sobrecarga extra que não estava visível anteriormente.
Novos recursos de NFC pela Emulação de cartão host
O Android 4.4 apresenta compatibilidade com uma nova plataforma para transações seguras baseadas em NFC por meio de emulação de cartão host (HCE, na sigla em inglês), para pagamentos, programas de fidelidade, acesso com cartão, cartões de transporte público e outros serviços personalizados. Com a HCE, qualquer app em um dispositivo Android pode emular um cartão inteligente de NFC, permitindo que os usuários toquem para iniciar transações com o app que quiserem. Não é necessário ter um Elemento de segurança (SE) provisionado no dispositivo. Os apps também podem usar um 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.google.cn/static/images/kk-contactless-card.png?authuser=1&hl=pt-br)
A 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 pagamentos por NFC EMVCO. O Android usa identificadores de aplicativos (AIDs, na sigla em inglês), conforme definido no ISO/IEC 7816-4 como a base para transações de roteamento para os aplicativos Android corretos.
Os apps declaram os AIDs compatíveis 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 são compatíveis com o mesmo AID na mesma categoria, o Android exibe uma caixa de diálogo que permite ao usuário escolher 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 de HCE e SE. Os dispositivos Android 4.4 compatíveis com NFC incluem o recurso "Tocar e pagar" para facilitar pagamentos usando HCE.
Estrutura de impressão
Os apps Android agora podem imprimir qualquer tipo de conteúdo por Wi-Fi ou serviços hospedados na nuvem, como o Google Cloud Print. Em apps para impressão, os usuários podem descobrir impressoras disponíveis, alterar tamanhos de papel, escolher páginas específicas para imprimir e imprimir quase qualquer tipo de documento, imagem ou arquivo.
O Android 4.4 introduz compatibilidade da plataforma nativa com 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 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 a impressoras](https://developer.android.google.cn/static/images/kk-print-land-n5.jpg?authuser=1&hl=pt-br)
Você pode adicionar suporte a 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 determinados tipos de impressoras. Eles podem criar serviços de impressão e distribuí-los pelo Google Play, o que facilita que os usuários os encontrem e instalem nos dispositivos. 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 a serem mostrados. Você também implementaria APIs para criar trabalhos de impressão, consultar o gerenciador de impressão para ver o status e cancelar trabalhos. Isso permite imprimir praticamente qualquer tipo de conteúdo, de imagens e documentos locais a dados de rede ou uma visualização renderizada em uma tela.
Para maior compatibilidade, 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 paginada do seu conteúdo. Por conveniência, a API de impressão fornece classes auxiliares nativas e de WebView para permitir a criação de PDFs usando APIs de desenho padrão 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 vai incluir o Google Cloud Print pré-instalado como serviço de impressão, além de vários apps do Google com suporte a impressão, incluindo Chrome, Drive, Gallery e QuickOffice.
Estrutura de acesso ao armazenamento
Um novo framework de acesso ao armazenamento simplifica a navegação e a abertura de documentos, imagens e outros arquivos em todos os provedores de armazenamento de documentos de preferência dos usuários. Uma IU padrão e fácil de usar permite que os usuários procurem arquivos e acessem os recentes de maneira consistente em todos os apps e provedores.
![Dispositivo móvel mostrando uma barra lateral aberta no novo framework de acesso ao armazenamento](https://developer.android.google.cn/static/images/kk-saf2-n5.jpg?authuser=1&hl=pt-br)
![Dispositivo móvel que mostra os serviços integrados do Box no novo framework de acesso ao armazenamento](https://developer.android.google.cn/static/images/kk-saf1-n5.jpg?authuser=1&hl=pt-br)
A Box e outras 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 por meio da implementação de uma nova classe de provedor de documentos que encapsule os serviços. A classe de 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 dar aos usuários acesso a qualquer dado remoto ou local que possa ser representado como arquivos, desde texto, fotos e planos de fundo até 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 instalar o app, os usuários terão acesso instantâneo ao serviço a partir de qualquer app que faça parte da estrutura. Isso pode ajudar você a ganhar exposição e engajamento dos usuários, já que eles encontrarão seus serviços com mais facilidade.
Se você desenvolver um app cliente que gerencia arquivos ou documentos, poderá 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.
Você pode integrar seu app cliente uma vez, para todos os provedores, sem nenhum código específico do fornecedor. Conforme os usuários adicionam ou removem provedores, eles continuam com 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 já existente. Dessa forma, os usuários também têm 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. Com o framework de acesso ao armazenamento e a interface do sistema para navegação, os usuários podem encontrar e importar dados de uma variedade maior de fontes com mais facilidade.
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 apps 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 da plataforma com 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 do sensor de maneira eficiente em lotes, em vez de individualmente à medida que são detectados. Isso permite que o processador de aplicativos do dispositivo permaneça em um estado inativo de baixo consumo de energia até que os lotes sejam entregues. Você pode solicitar eventos em lote de qualquer sensor usando um listener de eventos padrão e 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 sensores continuamente, mesmo quando a tela está desligada e o sistema está suspenso.
O agrupamento de sensores está disponível 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 novo suporte ao detector de passos](https://developer.android.google.cn/static/images/kk-sensors-moves-n5.jpg?authuser=1&hl=pt-br)
![Dispositivo móvel mostrando o novo suporte ao contador de passos](https://developer.android.google.cn/static/images/kk-sensors-runtastic-n5.jpg?authuser=1&hl=pt-br)
Moves e Runtastic Pedometer estão usando 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 tem compatibilidade com plataforma para dois novos sensores compostos, o detector e o contador de passos, que permitem ao app monitorar 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, em seguida, aciona um evento a cada passo. O contador de passos rastreia o número total de passos desde a última reinicialização do dispositivo e aciona um evento a cada mudança na contagem de passos. Como a lógica e o gerenciamento de sensores são integrados à plataforma e ao hardware subjacente, não é necessário manter seus próprios algoritmos de detecção no app.
Os sensores do detector e do 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ê desenvolve um app de mensagens que usa SMS ou MMS, agora pode 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 detectar as mensagens recebidas usando o intent SMS_RECEIVED. Além disso, o sistema agora permite que apenas o app padrão grave dados de mensagens 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 a gravação 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 e a criar novos recursos de mensagens com APIs totalmente 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.google.cn/static/images/kk-immersive-n5.jpg?authuser=1&hl=pt-br)
Um novo modo imersivo permite que os apps usem todos os pixels na tela para exibir conteúdo e capturar eventos de toque.
Modo imersivo de tela cheia
Agora seus apps podem usar cada pixel na tela do dispositivo para exibir 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 IU do sistema, como a barra de status e a barra de navegação. É ideal para conteúdo visual rico, 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 seu 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 rica e mais imersiva no seu app ou jogo e também 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, deslizar da parte de cima ou de baixo 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 as barras se escondam 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 deles. 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ção e, em seguida, fazer com que o TransitionManager execute automaticamente uma transição atrasada nessas mudanças.
Depois de configurar as transições, é simples invocá-las pelo 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 as mudanças especificadas automaticamente.
![IU translúcida do sistema](https://developer.android.google.cn/static/images/kk-home.jpg?authuser=1&hl=pt-br)
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 ter o maior impacto com seu conteúdo, agora você pode usar novos estilos e temas de janela para solicitar a 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 aparecer em um plano de fundo.
Acesso a notificações melhorado
Os serviços de listener de notificações agora podem ver mais informações sobre notificações recebidas que foram construídas usando as APIs do builder 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 outra forma.
Chromium WebView
O Android 4.4 inclui uma implementação completamente 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 conteúdo baseado na Web.
O Chromium WebView fornece ampla compatibilidade com HTML5, CSS3 e JavaScript. Ele é compatível com a maioria dos recursos HTML5 disponíveis no Chrome para Android 30. Ela também inclui uma versão atualizada do JavaScript Engine (V8), que oferece um desempenho do JavaScript significativamente melhor.
Além disso, a nova Chromium WebView é compatível com a depuração remota usando o Chrome DevTools. Por exemplo, você pode usar o Chrome DevTools na máquina de desenvolvimento para inspecionar, depurar e analisar o conteúdo da WebView em tempo real em um dispositivo móvel.
O novo Chromium WebView está incluído em todos os dispositivos compatíveis que executam o Android 4.4 ou versões mais recentes. Você pode aproveitar o novo WebView imediatamente, com modificações mínimas aos 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 a gravação de tela e oferece um utilitário de gravação de tela que permite iniciar e interromper uma gravação em um dispositivo conectado ao ambiente do SDK do Android por USB. Essa é uma ótima maneira de criar instruções e 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ídeo do conteúdo de tela do seu dispositivo e armazenar o vídeo como um arquivo MP4 no dispositivo. É possível gravar em qualquer resolução e taxa de bits compatível com o dispositivo, e a saída mantém a proporção da tela. Por padrão, o utilitário seleciona uma resolução igual ou próxima à da tela do dispositivo na orientação atual. Quando terminar de gravar, você pode compartilhar o vídeo diretamente do seu dispositivo ou transferir o arquivo MP4 para o computador host para pós-produção.
Se o 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 com 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 reprodução adaptativa no framework de mídia do Android. A reprodução adaptável é 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 do vídeo de entrada do decodificador com uma nova resolução, e a resolução dos buffers de saída muda 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 se há suporte para reprodução adaptável no momento da execução usando APIs existentes e implementar a alternância de resolução usando novas APIs introduzidas no Android 4.4.
Criptografia comum para DASH
O Android agora oferece suporte à Criptografia comum (CENC) para MPEG-DASH, que fornece um esquema de DRM multiplataforma padrão 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 compatibilidade com DASH.
Transmissão ao vivo em HTTP
O Android 4.4 atualiza a compatibilidade com 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 ver mais detalhes.
Encapsulamento de áudio para DSP
Para reprodução de áudio com alto desempenho e baixo consumo de energia, o Android 4.4 adiciona compatibilidade de plataforma com o encapsulamento de áudio para um processador de sinal digital (DSP) no chipset do dispositivo. Com o encapsulamento, os efeitos de saída e decodificação de áudio são transferidos para o 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 em 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 estiver disponível no dispositivo.
![Visualizador exibindo efeito do atenuador de ruído no áudio](https://developer.android.google.cn/static/images/kk-loudnessEnhancerAnnotated.png?authuser=1&hl=pt-br)
A visualização de como o efeito 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 mais rápido possível.
Monitoramento de áudio
Os aplicativos podem usar novas ferramentas de monitoramento no efeito "Visualizador" para receber atualizações sobre os níveis de pico e RMS de qualquer áudio em reprodução no dispositivo. Por exemplo, é possível usar isso de forma 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 especificamente ajustadas para fala.
Marcações de data e hora no áudio para melhorar a sincronização de AV
Para melhorar a sincronização entre áudio e vídeo, o framework de áudio agora pode relatar carimbos de data/hora da apresentação da HAL de saída de áudio para os aplicativos. 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 de carimbo de data/hora para sincronizar o áudio com os frames do vídeo com mais precisão.
Miracast™ certificado para Wi-Fi
Os dispositivos Android 4.4 agora podem ser certificados pela Especificação de Display Wi-Fi da Wi-Fi Alliance como compatíveis com o Miracast. Para ajudar nos testes, uma nova opção de Display sem fio para desenvolvedores expõe controles de configuração e definições avançadas para a 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.google.cn/static/images/kk-rs-chart-versions.png?authuser=1&hl=pt-br)
Comparativos de mercado de desempenho para o Android 4.4 em comparação com o Android 4.3, executados nos mesmos dispositivos (Nexus 7 e Nexus 10).
Melhorias contínuas na performance
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
Qualquer app que usa o RenderScript em um dispositivo com suporte se beneficia da aceleração da GPU, sem mudanças no código ou recompilação. Desde que o Nexus 10 lançou pela primeira vez a aceleração de GPU do RenderScript, vários outros parceiros de hardware adicionaram compatibilidade.
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 em 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 de 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, pode executar essas tarefas usando o RenderScript e integrá-las ao 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 com o NDK, você pode distribuí-lo para qualquer dispositivo com o Android 2.2 ou versão mais recente, assim como com a Biblioteca de Suporte do RenderScript disponível para APIs do framework.
Gráficos
GLES2.0 SurfaceFlinger
O Android 4.4 atualiza 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, 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 ofereçam suporte a 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 é baseada 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 compatíveis com Bluetooth.
IR Blasters
O Android 4.4 introduz compatibilidade com a plataforma para IR blasters integrados, além de uma nova API e um novo serviço do sistema que permite criar apps para aproveitá-los.
Com a nova API, é possível criar apps que permitam aos usuários controlar remotamente TVs, sintonizadores, interruptores e outros dispositivos eletrônicos próximos. A API permite que o app verifique se o smartphone ou tablet tem um emissor de infravermelho, consulte as frequências da operadora e envie sinais infravermelhos.
Como a API é padrão em dispositivos Android com 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 apresenta uma maneira simples de fazer streaming de mídia e outros dados mais rapidamente entre dispositivos que já estão na mesma rede Wi-Fi, oferecendo suporte ao Wi-Fi Tunneled Direct Link Setup (TDLS).
Acessibilidade
Configurações gerais do sistema para legendas
O Android 4.4 agora oferece suporte a uma melhor experiência de acessibilidade em todos os apps, adicionando preferências gerais do sistema para closed captions. Os usuários podem acessar Configurações > Acessibilidade > Legendas para definir preferências globais de legenda, como se as legendas serão mostradas e qual idioma, tamanho e estilo de texto serão usados.
Os apps que usam vídeos 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 de gerenciamento 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 preferida, o fator de dimensionamento e o estilo de texto. O estilo de texto inclui cores de primeiro e segundo plano, propriedades de borda e família tipográfica.
![Dispositivos móveis na orientação paisagem exibindo legendas nas preferências de legendas gerais do sistema](https://developer.android.google.cn/static/images/kk-captions-n5.jpg?authuser=1&hl=pt-br)
Agora, os apps podem consultar as preferências de legenda 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 legendagem 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 do sistema do usuário. No momento, 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 geral do sistema do usuário e renderizar as legendas da maneira mais semelhante possível a essas preferências. Para mais informações sobre como combinações específicas de configurações devem ser, você pode olhar para uma prévia de 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 suporte à descrição semântica e estrutural mais precisa e à 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, agora os desenvolvedores 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 estão ocorrendo no conteúdo da janela. Agora, eles podem detectar mudanças no modo de exploração por toque no dispositivo.
Compatibilidade com usuários internacionais
Espelhamento de desenhável por localidades RTL
Se o app for direcionado 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 da direita para a esquerda (RTL).
Declarar um drawable como espelhado automaticamente ajuda a evitar a duplicação de recursos no seu app e reduz o tamanho do APK. Quando você tem drawables reutilizáveis para apresentações LTR e RTL, é possível declarar as versões padrão como espelhadas automaticamente e, em seguida, omitir esses drawables dos recursos RTL.
![](https://developer.android.google.cn/static/images/kk-pseudolocale-rtl.png?authuser=1&hl=pt-br)
A opção Forçar layout da direita p/ esquerda 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, Nine-Patch, Layer, lista de estados e outros drawables. Também é possível declarar um drawable como espelhado automaticamente nos arquivos de recursos 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 de desenvolvedor para forçar a direção do layout RTL em todos os apps.
A opção "Forçar layout RTL" alterna o dispositivo para layout RTL em todas as localidades e mostra o texto no idioma atual. Isso pode ajudar você a encontrar problemas de layout em todo o app, sem precisar mostrá-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 aplicada serão bloqueadas.
Algoritmos de criptografia melhorados
O Android melhorou ainda mais a segurança ao adicionar compatibilidade com 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 de chaves 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 permite que um usuário roteie todo o tráfego de rede por uma VPN sem afetar os outros usuários do 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 seu 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 do desempenho. Isso é mais importante para apps que iniciam serviços executados em segundo plano, já que permite monitorar o tempo de execução e a quantidade de RAM usada ao fazer isso. O Procstats também coleta dados para aplicativos em primeiro plano sobre o uso da memória ao longo do tempo para determinar o perfil geral da memória do app.
O procstats pode ajudar a identificar serviços em segundo plano iniciados pelo app. Você pode acompanhar por quanto tempo esses serviços continuam em execução e quanta RAM usam 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.google.cn/static/images/kk-procstats.png?authuser=1&hl=pt-br)
A nova ferramenta procstats permite verificar o uso de memória de apps e serviços ao longo do tempo.
![](https://developer.android.google.cn/static/images/kk-meminfo.png?authuser=1&hl=pt-br)
A ferramenta meminfo aprimorada permite ver detalhes do uso de memória para 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" abaixo para o desenvolvedor.
Status e criação de perfil de memória no dispositivo
O Android 4.4 inclui uma nova opção de desenvolvedor para facilitar a análise do perfil de memória do seu app enquanto ele é executado em qualquer dispositivo ou emulador. Ela é especialmente útil para saber como o app usa a memória e é executado em dispositivos com pouca RAM. Acesse a opção em Configurações > Opções do desenvolvedor > Estatísticas do processo.
![Dispositivo móvel mostrando a nova opção "Estatísticas do processo"](https://developer.android.google.cn/static/images/kk-proc-device-overview-n5.jpg?authuser=1&hl=pt-br)
![Dispositivos móveis mostrando detalhes de uso na nova opção "Estatísticas do processo"](https://developer.android.google.cn/static/images/kk-proc-device-detail-n5.jpg?authuser=1&hl=pt-br)
As estatísticas de processamento 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. Verde indica o tempo relativo gasto com baixo uso de RAM, amarelo indica uso moderado de RAM e vermelho indica alto uso (crítico) de RAM.
Abaixo do resumo, há uma lista 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, além de 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 do uso da memória de um app específico de forma isolada, toque no app. Agora, para cada app, você pode 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 em Process Stats pode revelar problemas e sugerir possíveis otimizações. Por exemplo, se o app estiver sendo executado por mais tempo do que deveria ou usando muita memória durante um período, pode haver bugs no seu código que podem ser resolvidos para melhorar o desempenho dele, especialmente quando executado em um dispositivo com pouca RAM.