O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Android KitKat

Android 4.4 para celular e tablet

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 fornece um resumo das novidades para os desenvolvedores.

Saiba mais sobre o KitKat para consumidores em www.android.com.

Android para todos

Android 4.4 foi desenvolvido para funcionar de forma rápida, suave e responsiva do que nunca nos mais diversos dispositivos — inclusive em milhões de dispositivos mundiais de nível de entrada que têm pouca memória, como os de 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 a criar aplicativos inovadores, responsivos e de baixo consumo de memória.

Os fabricantes que criam a próxima geração de dispositivos Android podem se beneficiar das recomendações e opções segmentadas para executar Android 4.4 de forma eficiente, até mesmo em dispositivos com pouca memória. O ajuste de cache do código JIT do Dalvik, a combinação 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 os fabricantes ajustar os níveis de falta de memória para processos, definir tamanhos de cache para gráficos, controlar solicitações de memória e muito mais.

No próprio Android, as mudanças no sistema melhoram o gerenciamento de memória e reduzem a área de ocupação da memória. Os processos fundamentais do sistema foram ajustados para usar menos memória e agora protegem mais agressivamente a memória do sistema de aplicativos que consomem muita RAM. Quando diversos serviços são iniciados simultaneamente — como nas mudanças de conexão de rede —, o Android agora inicializa os serviços em série, em pequenos grupos, para evitar demandas de pico de memória.

Para os desenvolvedores, Android 4.4 ajuda a fornecer aplicativos eficientes e responsivos em todos os dispositivos. Uma nova API, ActivityManager.isLowRamDevice(), permite ajustar o comportamento do aplicativo para corresponder à configuração de memória do dispositivo. Você pode modificar ou desativar os recursos que usam muita memória conforme a necessidade, dependendo dos casos de uso que deseja dar compatibilidade em dispositivos de nível de entrada. Para ver como otimizar seus aplicativos para dispositivos com pouca memória, acesse aqui.

As novas ferramentas ainda dão informações poderosas sobre o uso de memória do seu aplicativo. A ferramenta procstats detalha o uso de memória ao longo do tempo, com tempos de execução e área de ocupação da memória para aplicativos em primeiro plano e serviços em segundo plano. Uma visualização no dispositivo também está disponível como uma nova opção ao desenvolvedor. A ferramenta meminfo foi melhorada para facilitar a detecção de tendências e problemas de memória, além de revelar uso excessivo adicional de memória que não estava visível anteriormente.

Novos recursos de NFC pela Emulação de cartão host

Android 4.4 introduziu compatibilidade com transações protegidas baseadas em NFC à nova plataforma por meio de Emulação de cartão host (HCE), para pagamentos, programas de fidelidade, acesso por cartão, tíquetes de viagem e outros serviços personalizados. Com o HCE, qualquer aplicativo em um dispositivo Android pode emular um cartão NFC inteligente, permitindo que usuários iniciem transações com um aplicativo de sua escolha — sem precisar de elemento protegido provisionado (SE) no dispositivo. Os aplicativos ainda podem usar um novo Modo de leitor para atuar como leitores de cartões HCE e outras transações baseadas em NFC.

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 a transmissão. Atualmente muitos sistemas usam esses cartões, inclusive a infraestrutura de pagamento por NFC atual, a EMVCO. O Android usa identificadores de aplicativo (AIDs), conforme definido no ISO/IEC 7816-4 como base de transações cotidianas para os aplicativos Android corretos.

Os aplicativos declaram os AIDs com que são compatíveis nos arquivos de manifesto com um identificador de categoria, que indica o tipo de compatibilidade disponível (por exemplo, “pagamentos”). Nos casos em que diversos aplicativos são compatíveis com o mesmo AID da mesma categoria, o Android exibe uma caixa de diálogo que permite ao usuário escolher o aplicativo que deseja usar.

Quando o usuário toca para pagar em um terminal de ponto de venda, o sistema extrai o AID preferencial e encaminha a transação ao aplicativo correto. O aplicativo lê os dados da transação e pode usar serviços locais ou baseados 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 com transações de HCE e SE. Android 4.4 Android 4.4 compatíveis com NFC incluirão “Toque e pague” para facilitar os pagamentos por HCE.

Estrutura de impressão

Os aplicativos Android agora podem imprimir qualquer tipo de conteúdo por serviços Wi-Fi ou hospedados em nuvem, como o Google Cloud Print. Em aplicativos com impressão permitida, os usuários podem encontrar impressoras disponíveis, alterar o tamanho do papel, escolher páginas específicas para impressão e imprimir quase todo tipo de documento, imagem ou arquivo.

Android 4.4 introduziu compatibilidade de plataforma nativa com impressão, junto com APIs para gerenciar impressões e adicionar novos tipos de impressoras compatíveis. A plataforma fornece um gerenciador de impressão que intermedeia aplicativos que solicitam a impressão e serviços de impressão instalados que lidam com as solicitações de impressão. O gerenciador de impressão fornece serviços compartilhados e uma IU de sistema para impressão para que os usuários controlem consistentemente a impressão em todos os aplicativos. O gerenciador de impressão também garante a segurança do conteúdo, já que ele é passado entre processos, de um aplicativo a um serviço de impressão.

Você pode adicionar compatibilidade com impressão a seus aplicativos ou desenvolver serviços de impressão para tornar determinados tipos de impressora compatíveis.

Os fabricantes de impressoras podem usar as novas APIs para desenvolver os próprios serviços de impressão — componentes conectáveis que adicionam lógica e serviços específicos do fornecedor para comunicação com determinados tipos de impressora. Eles podem criar serviços de impressão e distribuí-los pelo Google Play para facilitar aos usuários localizá-los e instalá-los no dispositivo. Assim como com outros aplicativos, você pode atualizar os serviços de impressão remotamente quando quiser.

Os aplicativos clientes podem usar novas APIs para adicionar recursos de impressão a seus aplicativos com mudanças mínimas ao 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 quanto a status e cancelar trabalhos. Isso permite imprimir quase todo tipo de conteúdo, desde imagens e documentos locais a dados da rede ou uma visualização renderizada para uma tela.

Para obter a compatibilidade mais ampla, o Android usa PDF como o principal formato de arquivo para impressão. Antes de imprimir, seu aplicativo precisa gerar uma versão com paginação correta em PDF do conteúdo. Para facilitar, a API de impressão fornece classes auxiliares nativas e de WebView para permitir criar PDFs usando APIs de desenho padrão do Android. Se seu aplicativo consegue desenhar o conteúdo, ele pode criar um PDF para impressão rapidamente.

A maioria dos dispositivos com Android 4.4 conterá um Google Cloud Print pré-instalado como serviço de impressão, assim como diversos aplicativos Google compatíveis com impressão, inclusive o Chrome, o Drive, a Galeria e o QuickOffice.

Estrutura de acesso ao armazenamento

Uma nova estrutura de acesso ao armazenamento simplifica a busca e a abertura de documentos, imagens e outros arquivos em todos os provedores de armazenamento de documentos preferenciais. Uma IU padrão e fácil de usar permite aos usuários buscar arquivos e acessar os recentes de forma consistente em todos os aplicativos e provedores.

O Box e outros integraram seus serviços à estrutura de acesso ao armazenamento, dando aos usuários fácil acesso a documentos por aplicativos de 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 os encapsule. A classe do provedor contém todas as APIs necessárias para registrar o provedor junto ao sistema e gerenciar a busca, a leitura e a gravação de documentos no provedor. O provedor de documentos pode dar aos usuários acesso a dados remotos ou locais representáveis na forma de arquivo — texto, fotos, papéis de parede, vídeos, áudios e muito mais.

Se você criar um provedor de documentos para um serviço local ou em nuvem, pode fornecê-lo aos usuários como parte do seu aplicativo Android. Depois de baixar e instalar o aplicativo, os usuários terão acesso instantâneo ao seu serviço em todo aplicativo que participar da estrutura. Isso pode ajudar você a aumentar exposição e o envolvimento do usuário, já que os usuários encontrarão seus serviços com mais facilidade.

Se você desenvolver um aplicativo cliente que gerencie arquivos ou documentos, você poderá integrar à estrutura de acesso ao armazenamento simplesmente usando as novas intenções CREATE_DOCUMENT ou OPEN_DOCUMENT para abrir ou criar arquivos — o sistema exibe automaticamente a IU padrão para buscar documentos, inclusive todos os provedores de documentos disponíveis.

Você pode integrar seu aplicativo cliente uma vez, para todos os provedores, sem nenhum código específico do fornecedor. À medida que usuários adicionam ou removem provedores, eles continuam tendo acesso a seus serviços preferidos no seu aplicativo, sem precisar mudar nem atualizar o código.

A estrutura de acesso ao armazenamento está integrada à intenção GET_CONTENT para que os usuários tenham acesso a todo conteúdo anterior e fontes de dados da nova IU do sistema para buscas. Os aplicativos podem continuar usando GET_CONTENT para permitir que os usuários importem dados. Para os usuários, a estrutura de acesso ao armazenamento e a IU do sistema para buscas facilitam encontrar e importar dados de uma série de fontes.

A maioria dos dispositivos com Android 4.4 conterá o Google Drive e armazenamento local pré-integrado como provedores de documento, e os aplicativos Google que trabalham com arquivos também usarão a nova estrutura.

Sensores de baixo consumo

Agrupamento de sensores

Android 4.4 introduziu compatibilidade da plataforma com agrupamento de sensores de hardware, uma nova otimização que pode reduzir drasticamente a energia consumida por atividades contínuas de sensor.

Com o agrupamento de sensores, o Android trabalha com o hardware do dispositivo para coletar e entregar eventos de sensor em lotes de forma eficiente, em vez de individualmente à medida que são detectados. Isso permite que o processador de aplicativos do dispositivo permaneça em um estado de suspensão de baixo consumo de energia até que os lotes sejam entregues. Você pode solicitar eventos agrupados de qualquer sensor usando um ouvinte de eventos padrão e controlar o intervalo de recebimento dos lotes. É possível também solicitar o envio imediato dos eventos entre ciclos de lote.

O agrupamento de sensores é ideal para casos de uso de baixo consumo de energia e longa duração, como de exercícios físicos, acompanhamento de localização, monitoramento e outros. Ele pode tornar seu aplicativo mais eficiente e permitir acompanhar eventos de sensor continuamente — mesmo com a tela desligada e o sistema 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 quanto antes.

O Moves e o Runtastic Pedometer estão usando o aparelho detector de passos para oferecer serviços de baixo consumo e longa duração.

Detector e contador de passos

Android 4.4 também adicionou compatibilidade de plataforma para dois novos sensores compostos — o detector e o contador de passos —, que permitem ao aplicativo acompanhar os passos quando o usuário está caminhando, correndo ou subindo escadas. Esses novos sensores são implementados no hardware para menor consumo de energia.

O detector de passos analisa os dados do acelerômetro para reconhecer quando o usuário está dando um passo e aciona um evento a cada passo. O contador de passo acompanha 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 do sensor foram embutidos na plataforma e no hardware relacionado, você não precisa ter algoritmos de detecção próprios no aplicativo.

Os sensores do detector e do contador de passos estão disponíveis no Nexus 5, e estamos trabalhando com os parceiros de chipset para levá-los a novos dispositivos o quanto antes.

Provedor de SMS

Se você desenvolve um aplicativo 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 aplicativo. O novo provedor de SMS e as novas APIs definem um modelo de interação padronizado para todos os aplicativos que lidam com mensagens de SMS ou MMS.

Junto com o novo provedor e as novas APIs, o Android 4.4 introduziu novas semânticas para receber mensagens e gravar no provedor. Ao receber uma mensagem, o sistema a encaminha diretamente ao aplicativo de mensagens padrão do usuário usando a nova intenção SMS_DELIVER. Outros aplicativos ainda podem detectar mensagens recebidas usando a intenção SMS_RECEIVED. Além disso, agora o sistema só permite que o aplicativo padrão grave dados de mensagem no provedor, embora outros aplicativos possam ler a qualquer momento. Os aplicativos que não forem padrão do usuário ainda podem enviar mensagens — o sistema lida com a gravação dessas mensagens no provedor em nome do aplicativo para que os usuários possam vê-las no aplicativo padrão.

O novo provedor e a nova semântica ajudam a melhorar a experiência do usuário quando há diversos aplicativos de mensagem instalados e criar novos recursos de mensagem com APIs totalmente suportadas e compatíveis com versões futuras.

Novas formas de criar aplicativos bonitos

Um novo modo imersivo permite que os aplicativos usem cada pixel da tela para exibir conteúdo e capturar eventos de toque.

Modo imersivo de tela cheia

Agora seus aplicativos podem usar cada pixel da tela do dispositivo para expor conteúdo e capturar eventos de toque. Android 4.4 adicionou um novo modo imersivo de tela cheia que permite criar IUs de ocupação integral, que envolve toda a tela de celulares e tablets e esconde 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 IU do sistema permanece oculta, mesmo com os usuários interagindo com o aplicativo ou jogo — você pode capturar eventos de toque de qualquer lugar da tela, até mesmo áreas que, em outra situação, seriam ocupadas pelas barras do sistema. Isso dá uma ótima forma de criar uma IU maior, mais rica e mais imersiva no seu aplicativo ou jogo e também reduzir a distração visual.

Para garantir que os usuários sempre tenha acesso fácil e consistente à IU do sistema pelo modo imersivo de tela cheia, o Android 4.4 oferece compatibilidade com um novo gesto — no modo imersivo, um deslizamento da extremidade 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 esperar um breve período para que as barras se escondam automaticamente. Para manter a coerência à experiência do usuário, o novo gesto também funciona com métodos antigos de esconder a barra de status.

Estrutura de transições para cenas de animação

A maioria dos dispositivos estrutura seus fluxos em torno de diversos principais estados da IU, que expõem diferentes ações. Muitos aplicativos 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 aplicativo, o Android 4.4 introduziu uma nova estrutura de transições.

A estrutura 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 diversos 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 escurece, move e redimensiona visualizações durante uma mudança de cena. Além disso, é possível definir transições personalizadas que animam as propriedades mais importantes para o aplicativo, e você pode inserir seus próprios estilos de animação se quiser.

Com a estrutura de transições, você ainda pode animar mudanças à IU em tempo real, sem precisar definir cenas. Por exemplo: é possível fazer uma série de mudanças em uma hierarquia de visualizações e, depois, fazer o TransitionManager executar uma transição atrasada sobre essas mudanças automaticamente.

Depois de configurar as transições, é muito simples invocá-las pelo aplicativo. Por exemplo: você pode chamar um único método para iniciar uma transição, fazer várias mudanças na hierarquia de visualizações e, no quadro seguinte, as animações começarão a animar as mudanças especificadas automaticamente.

IU translúcida do sistema

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 gerar o maior impacto com seu conteúdo, use os novos estilos e temas de janela para solicitar IU translúcida do sistema, inclusive as barras de status e de navegação. Para garantir a legibilidade dos botões da barra de navegação ou as informações da barra de status, gradientes sutis são exibidos atrás das barras do sistema. Um caso de uso típico seria um aplicativo que precisa exibir conteúdo em um plano de fundo.

Acesso a notificações melhorado

Os serviços do ouvinte de notificações agora podem ver mais informações sobre notificações recebidas que foram construídas usando as APIs construtoras de notificação. Os serviços de ouvinte podem acessar as ações de uma notificação, além de novos campos adicionais — texto, ícone, imagem, andamento, cronômetro e muitos outros — para extrair informações mais claras sobre a notificação e apresentá-las de forma diferente.

Chromium WebView

Android 4.4 contém uma implementação totalmente nova de WebView baseada no Chromium. A nova Chromium WebView fornece o que há de mais novo em 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. Ele também oferece uma versão atualizada do JavaScript Engine (V8), que fornece desempenho drasticamente superior ao JavaScript.

Além disso, a nova Chromium WebView é compatível com depuração remota pelo Chrome DevTools. Por exemplo: você pode usar o Chrome DevTools na sua máquina de desenvolvimento para inspecionar, depurar e analisar seu conteúdo em tempo real em um dispositivo móvel.

O novo Chromium WebView está incluso em todos os dispositivos compatíveis que usam o Android 4.4 e versões posteriores. Você pode se beneficiar da nova WebView imediatamente, e com modificações mínimas a aplicativos e conteúdo existentes. Na maioria dos casos, o conteúdo migrará para a nova implementação perfeitamente.

Novos recursos de mídia

Gravação de tela

Agora é fácil criar vídeos de alta qualidade do seu aplicativo diretamente pelo dispositivo Android. Android 4.4 adicionou compatibilidade com gravação de tela e fornece um utilitário de gravação de tela que permite iniciar e parar uma gravação em um dispositivo conectado por USB ao ambiente do Android SDK. É uma ótima forma de criar instruções e tutoriais para o aplicativo testar materiais, promover vídeos e muito mais.

Com o utilitário de gravação de tela, é possível capturar vídeo dos conteúdos de tela e armazenar o vídeo como um arquivo MP4 no dispositivo. É possível gravar em qualquer resolução suportada pelo dispositivo e na taxa de bits que você quiser. A saída retém o fator de 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. Ao terminar a gravação, você pode compartilhar o vídeo diretamente pelo dispositivo ou transferir um arquivo MP4 para seu computador host para pós-produção.

Se o aplicativo reproduz vídeo ou outro conteúdo protegido que você não queira que seja capturado pelo gravador de tela, use SurfaceView.setSecure() para marcar o conteúdo como protegido.

Você pode acessar a gravação da tela pela ferramenta adb, incluída no Android SDK, usando o comando adb shell screenrecord. Além disso, você pode inicializá-la pelo painel DDMS no Android Studio.

Alternância de resolução pela reprodução adaptativa

Android 4.4 oferece compatibilidade formal com reprodução adaptativa na estrutura de mídia do Android. A reprodução adaptativa é um recurso opcionais de decodificadores de vídeo, para MPEG-DASH e outros formatos, que permite alterações suaves na resolução durante a reprodução. O cliente pode começar a alimentar os quadros do vídeo na entrada do decodificador com uma nova resolução, e a resolução dos buffers de saída mudará automaticamente sem nenhum hiato relevante.

A alternância de resolução do Android 4.4 permite que os aplicativos de mídia ofereçam uma experiência de streaming de vídeo muito melhor. Os aplicativos podem verificar se têm suporte a reprodução adaptativa em tempo de execução usando APIs existentes e implementar 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) para MPEG-DASH, que fornece um esquema de DRM multiplataforma padrão para gerenciar conteúdo protegido. Os aplicativos podem se beneficiar do CENC por meio da estrutura de DRM modular do Android e das APIs da plataforma para oferecer compatibilidade com DASH.

Transmissão ao vivo em HTTP

Android 4.4 atualizou a compatibilidade com transmissão ao vivo em HTTP (HLS) da plataforma com um superconjunto da versão 7 das especificações de HLS (versão 4 do protocolo). Para saber mais, consulte o esboço da IETF.

Encapsulamento de áudio para DSP

Para melhor desempenho e menos consumo de energia nas reproduções de áudio, o Android 4.4 adicionou compatibilidade da plataforma com encapsulamento de áudio em um processador de sinal digital (DSP) no chipset do dispositivo. Com o encapsulamento, os efeitos da decodificação e da saída do áudio são carregados externamente ao DSP, ativando o processador do aplicativo com menos frequência e usando menos bateria.

O encapsulamento de áudio pode economizar drasticamente a carga da bateria para casos de uso como ouvir músicas com fones de ouvido e a tela desligada. Por exemplo: com o encapsulamento de áudio, o Nexus 5 oferece um tempo total de reprodução de áudio armazenado localmente de até 60 horas, um aumento de cerca de 50% em relação ao áudio não encapsulado.

Os aplicativos de mídia podem fazer uso do encapsulamento de áudio em dispositivos compatíveis sem precisar modificar o código. O sistema aplica o encapsulamento para otimizar a reprodução de áudio sempre que houver disponibilidade no dispositivo.

Visualizador exibindo efeito do atenuador de ruído no áudio

A visualização de como o efeito do LoudnessEnhancer pode tornar conteúdo falado mais compreensível.

O encapsulamento de áudio exige suporte no hardware do dispositivo. Atualmente, o encapsulamento de áudio está disponível no Nexus 5, mas estamos trabalhando com nossos parceiros de chipset para disponibilizá-lo em mais dispositivos o quanto antes.

Monitoramento de áudio

Os aplicativos podem usar novas ferramentas de monitoramento no efeito do Visualizador para receber atualizações aos níveis de pico e RMS dos áudios reproduzidos no momento no dispositivo. Por exemplo: você pode usar a criatividade nos visualizadores de música ou implementar a medição da reprodução no reprodutor 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 efeito do novo LoudnessEnhancer, que age como um compressor com constantes de tempo especificamente ajustadas para a fala.

Marcações de data e hora no áudio para melhorar a sincronização de AV

A estrutura de áudio agora pode relatar marcações de data e hora da apresentação da saída de áudio HAL aos aplicativos, melhorando a sincronização entre áudio e vídeo. As marcações de data e hora permitem o aplicativo determinar quando um quadro de áudio específico será (ou foi) apresentado fora do dispositivo ao usuário. Você pode usar a informação de data e hora para sincronizar os quadros de áudio com os de vídeo com mais precisão.

Miracast™ certificado para Wi-Fi

Android 4.4 agora podem ser certificados pela Especificação de Display Wi-Fi do Wi-Fi Alliance como compatíveis com Miracast. Para ajudar nos testes, uma nova opção de Display sem fio ao desenvolvedor expor controles e ajustes de configuração avançados para certificação de Display sem fio. Você pode acessar essa opção em Settings > Developer options > Wireless display certification. O Nexus 5 é um dispositivo de display sem fio certificado para Miracast.

Computação com RenderScript

Gráfico de otimizações do RenderScript

Referências de desempenho para o Android 4.4 em relação ao Android 4.3, execução nos mesmos dispositivos (Nexus 7 e Nexus 10).

Melhorias contínuas no desempenho

Quando seus aplicativos usam o RenderScript, eles se beneficiam do ajuste contínuo do desempenho no tempo de execução do próprio RenderScript, sem precisar de recompilação. O gráfico à direita mostra os ganhos de desempenho do Android 4.4 em dois chipsets populares.

Aceleração de GPU

Todo aplicativo que usa o RenderScript em um dispositivo compatível se beneficia da aceleração de GPU sem precisar alterar ou recompilar o código. Desde quando o Nexus 10 lançou a aceleração de GPU do RenderScript pela primeira vez, diversos outros parceiros de hardware adicionaram compatibilidade.

Agora, com o Android 4.4, a aceleração de GPU está disponível no Nexus 5, além do Nexus 4, Nexus 7 (2013) e Nexus 10, mas nós estamos trabalhando com nossos parceiros para levá-la a mais dispositivos o quanto antes.

RenderScript no Android NDK

Agora, você pode tirar vantagem do RenderScript diretamente no seu código nativo. Uma nova API em C++ do Kit de desenvolvimento nativo do Android (NDK) permite acessar a mesma funcionalidade do RenderScript disponível nas APIs de estrutura, inclusive intrínsecos de script, kernels personalizados e muito mais.

Se você tem tarefas grandes e que precisam de muito desempenho a tratar no código nativo, pode executar essas tarefas usando o RenderScript e integrá-las ao código nativo. O RenderScript oferece desempenho excelente em diversos dispositivos, com compatibilidade automática com CPUs multinúcleo, GPUs e outros processadores.

Ao criar um aplicativo que usa o RenderScript pelo NDK, é possível distribuí-lo a qualquer dispositivo com Android 2.2 ou posterior, assim como com a biblioteca de compatibilidade do RenderScript disponível para APIs de estrutura.

Gráficos

GLES2.0 SurfaceFlinger

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 Compositor de hardware do Android, o HWComposer 1.3, oferece suporte a composição de hardware de uma exibição virtual além da tela externa principal (por exemplo, HDMI) e melhorou a interoperabilidade com o OpenGL ES.

Novos tipos de conectividade

Novos perfis de Bluetooth

Android 4.4 é compatível com dois novos perfis de Bluetooth para permitir que os aplicativos aceitem um maior conjunto de interações de mídia e de baixo consumo de energia. O Bluetooth HID over GATT (HOGP) dá ao aplicativo um link de baixa latência com dispositivos periféricos de baixo consumo de energia, como mouse, controle de jogos e teclados. O Bluetooth MAP permite que os aplicativos troquem mensagens com um dispositivo próximo, por exemplo, um terminal automotivo para uso remoto ou outro dispositivo móvel. Como uma extensão ao Bluetooth AVRCP 1.3, os usuários agora podem definir o volume absoluto do sistema a partir dos dispositivos Bluetooth.

A compatibilidade da plataforma com HOGP, MAP e AVRCP é sustentada pela pilha de Bluedroid Bluetooth introduzida pela Google e pela Broadcom no Android 4.2. A compatibilidade está disponível imediatamente em dispositivos Nexus e outros compatíveis com Android que ofereçam os recursos de Bluetooth necessários.

IR Blasters

Android 4.4 introduziu compatibilidade da plataforma com IR blasters embutidos, junto com uma nova API e um serviço de sistema que permite criar aplicativos para tirar aproveitá-los.

Usando a nova API, é possível criar aplicativos que permitam aos usuários controlar remotamente TVs, rádios, comutadores e outros dispositivos eletrônicos. A API permite ao aplicativo verificar se o celular ou tablet tem um emissor infravermelho, consultar as frequências da operadora e, em seguida, enviar sinais infravermelhos.

Como a API é padrão nos dispositivos Android com Android 4.4 ou posterior, seu aplicativo pode oferecer compatibilidade com o maior conjunto possível de fornecedores sem programar códigos de integração para esse fim.

Compatibilidade com TDLS de Wi-Fi

Android 4.4 introduziu uma forma simples de transferir mídia e outros dados de forma mais rápida entre dispositivos conectados à mesma rede Wi-Fi por meio da compatibilidade com Wi-Fi Tunneled Direct Link Setup (TDLS).

Acessibilidade

Configurações gerais do sistema para legendas

Android 4.4 agora oferece uma melhor experiência de acessibilidade nos aplicativos por meio da adição de preferências gerais do sistema para legendas. Os usuários podem acessar Settings > Accessibility > Captions para definir preferências gerais de legenda, como se deve-se exibir legendas e em que idioma, tamanho e estilo do texto a usar, entre outros.

Os aplicativos que usam vídeo agora podem acessar as configurações de legenda do usuário e ajustar a apresentação de acordo com elas. Uma nova API gerenciadora de legenda permite verificar e monitorar as preferências de legenda do usuário. O gerenciador de legendas fornece a condição preferida para as legendas do usuário, assim como o local preferido, o fator de dimensionamento e o estilo do texto. O estilo do texto abrange cores de primeiro e segundo planos, propriedades das bordas e tipo de letra.

Agora, os aplicativos podem consultar as preferências de legenda gerais do sistema do usuário. Um exemplo de estilo de exibição esperado é exibido direto nas configurações.

Além disso, os aplicativos que usam VideoView podem usar uma nova API para passar um fluxo de legendas junto com um stream de vídeo para renderização. O sistema lida automaticamente com a exibição das legendas nos quadros de vídeo de acordo com as configurações gerais do usuário. Atualmente, o VideoView é compatível com exibição automática de legendas somente no formato WebVTT.

Todos os dispositivos que mostram legendas devem verificar as preferências de legenda gerais do usuário e renderizar as legendas de forma mais próxima possível a essas preferências. Para obter mais informações sobre como combinações de configuração específicas devem ficar, você pode dar uma olhada em uma prévia de legendas em diferentes idiomas, tamanhos e estilos direto no aplicativo Settings.

APIs de acessibilidade melhorada

Android 4.4 estende as APIs de acessibilidade para sustentar descrição semântica e estrutural mais precisa e a observação de elementos na tela. Com as novas APIs, os desenvolvedores podem aumentar a qualidade do retorno acessível fornecendo serviços de acessibilidade com mais informações sobre elementos na tela.

Nos nós de acessibilidade, agora os desenvolvedores podem determinar se um nó é uma janela pop-up, obter seu tipo de entrada e muito mais. Você ainda pode usar as novas APIs para trabalhar com nós que contenham informações em tipo de grade, como listas e tabelas. Por exemplo: agora você pode especificar novas ações suportadas, coleta de informações, 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, e agora podem detectar mudanças no modo de exploração de toque do dispositivo.

Compatibilidade com usuários internacionais

Espelhamento de desenhável por localidades RTL

Se o aplicativo visar usuários que usam scripts RTL, é possível usar uma nova API para declarar que um desenhável deve ser espelhado automaticamente quando a configuração de localidade do usuário incluir um idioma RTL (que se lê da direita para a esquerda).

Declarar um desenhável como espelhado automaticamente ajuda a evitar a duplicação de ativos no seu aplicativo e reduz o tamanho do APK. Quando se tem desenháveis reutilizáveis para apresentações LRT e RLT, você pode declarar as versões padrão como autoespelhadas e, em seguida, omitir esses Desenháveis dos recursos RTL.

A opção Force RTL layout facilita o teste de localização do aplicativo.

É possível declarar diversos tipos de desenhável como autoespelhados no código do aplicativo, como bitmap, nine-patch, camada, lista de estados e outros desenháveis. Você ainda pode declarar um desenhável como autoespelhado nos arquivos de recurso usando um novo atributo.

Forçar layout RTL

Para facilitar os testes e a depuração de problemas de espelhamento do layout sem alternar para um idioma RTL, o Android contém uma nova opção ao desenvolvedor para forçar a orientação RTL ao layout em todos os aplicativos.

A opção Forçar layout RTL alterna o dispositivo para layout RTL para todas as localidades e exibe o texto no idioma atual. Isso pode ajudar a encontrar problemas de layout nos aplicativos sem precisar exibi-los em um idioma RTL. Você pode acessar a opção em Settings > Developer options > Force RTL layout direction.

Melhorias na segurança

SELinux (modo de imposição)

Android 4.4 atualizou sua configuração de SELinux de “permissiva” para “impositiva”. Isso significa que possíveis violações à política dentro de um domínio SELinux que tenha uma política imposta serão bloqueadas.

Algoritmos de criptografia melhorados

O Android melhorou ainda mais sua segurança ao adicionar compatibilidade com mais dois algoritmos de criptografia. A compatibilidade com algoritmo de assinatura digital de curva elíptica (ECDSA) foi adicionado ao provedor de keystore, aumentando a segurança para assinaturas digitais, aplicáveis a cenários como assinatura de um aplicativo ou de uma conexão de dados. A função de derivação da chave Scrypt foi implementada para proteger as chaves criptográficas usadas para criptografia de disco completa.

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 da rede por meio de uma VPN sem afetar 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 é complicado com essas proteções. FORTIFY_SOURCE foi melhorado 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 aplicativo usa, assim como os recursos usados por outros aplicativos e serviços executados no sistema.

O Procstats mantém registros do comportamento dos aplicativos em execução 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 seu desempenho. Isso é mais importante para aplicativos que iniciam serviços executados em segundo plano, já que permite monitorar quanto tempo ficam em execução e quanta RAM usam na execução. O procstats também coletará dados para aplicativos de primeiro plano sobre o uso de memória ao longo do tempo para determinar o perfil de memória geral do aplicativo.

O procstats pode ajudar a identificar serviços em segundo plano iniciados pelo seu aplicativo. Você pode acompanhar o tempo por que esses serviços continuam em execução e quanta RAM usam por esse período. O procstats também permite criar um perfil do aplicativo com ele em primeiro plano, por meio do seu uso de memória ao longo do tempo, para determinar o perfil de memória geral.

A nova ferramenta procstats permite verificar o uso de memória de aplicativos e serviços ao longo do tempo.

A ferramenta meminfo melhorada permite ver detalhes do uso de memória de um aplicativo.

Você pode acessar o procstats pela ferramenta adb incluída no Android SDK, adb shell dumpsys procstats. Além disso, para criação de perfil no dispositivo, veja a opção Process Stats ao desenvolvedor abaixo.

Status e criação de perfil de memória no dispositivo

Android 4.4 contém uma nova opção ao desenvolvedor para facilitar a análise do perfil de memória do aplicativo durante a execução em dispositivo ou emulador. Ela é especialmente útil para se obter uma visualização de como o aplicativo usa a memória e é executado em dispositivos com pouca RAM. Acesse a opção em Settings > Developer options > Process stats

O process stats é uma maneira conveniente de verificar o uso de memória do seu aplicativo. É possível ver o aplicativo comparado com outros aplicativos e aumentar o zoom em dados específicos sobre o aplicativo ou seus serviços de segundo plano.

A opção Process Stats exibe diversas métricas de alto nível sobre o uso de memória do seu aplicativo, com base nos dados coletados usando o novo serviço procstats. Na tela principal há um resumo de status de memória do sistema. O verde indica o tempo gasto relativo com baixo uso de RAM, o amarelo indica uso moderado de RAM e o vermelho indica alto uso de RAM (crítico).

Abaixo do resumo há uma lista resumindo cada carga de memória do aplicativo no sistema. Para cada aplicativo, uma barra azul indica a carga de memória relativa computada (tempo de execução x avg_pss) de seu processo e um percentual indica o tempo gasto relativo em segundo plano. É possível filtrar a lista para exibir somente processos em primeiro plano, segundo plano e em cache, e você pode incluir ou excluir processos do sistema. Você ainda pode mudar a duração dos dados coletados para 3, 6, 12 ou 24 horas e pode incluir ou excluir memória uss.

Para ver o uso de memória de um aplicativo específico em mais detalhes e de forma isolada, toque no aplicativo. Agora você pode ver um resumo da memória consumida de cada aplicativo, além do percentual do intervalo de coleta em que o aplicativo estava em execução. Além disso, é possível ver o uso médio e o uso máximo acima o período da coleta e abaixo dos serviços do aplicativo e do percentual de tempo de execução.

Analisar o aplicativo usando os dados do Process Stats pode revelar problemas e sugerir possíveis otimizações. Por exemplo: se o aplicativo fica em execução por mais tempo do que deveria ou usa muita memória por determinado tempo, pode haver erros no código, e você pode resolvê-los para melhorar o desempenho do aplicativo, especialmente ao executar em um dispositivo com pouca RAM.