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 em uma gama muito mais ampla de dispositivos — incluindo 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 apresenta novas APIs e ferramentas para ajudar você a criar aplicativos inovadores, responsivos e eficientes em termos de memória.
Os OEMs que estão criando a próxima geração de dispositivos Android podem aproveitar recomendações e opções direcionadas para executar o Android 4.4 com eficiência, mesmo em dispositivos de pouca memória. Otimização do cache de código JIT do Dalvik, mesclagem de página idêntica do kernel (KSM), 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 memória para processos, definam tamanhos de cache gráfico, controlem a recuperação de memória e muito mais.
No Android, as mudanças no sistema melhoram o gerenciamento de memória e reduzem o uso de memória. Os processos principais do sistema foram reduzidos para usar menos heap e agora protegem de forma mais agressiva a memória do sistema contra apps que consomem grandes quantidades de RAM. Quando vários serviços são iniciados de uma só vez, como quando a conectividade de rede muda, o Android agora inicia os serviços em série, em pequenos grupos, para evitar o pico de demandas de memória.
Para desenvolvedores, o Android 4.4 ajuda a criar 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 de grande memória conforme necessário, dependendo dos casos de uso que você quer oferecer em dispositivos básicos. Saiba mais sobre como otimizar seus apps para dispositivos com pouca memória neste link.
As novas ferramentas também oferecem insights poderosos sobre o uso de memória do app. A ferramenta procstats detalha o uso da memória ao longo do tempo, com tempos de execução e pegada 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 identificação de tendências e problemas de memória e revela uma sobrecarga de memória adicional que não estava visível anteriormente.
Novos recursos de NFC pela Emulação de cartão host
O Android 4.4 introduz o novo suporte da plataforma para transações seguras com NFC pela emulação de cartão host (HCE, na sigla em inglês) para pagamentos, programas de fidelidade, acesso a cartões, cartões de transporte público e outros serviços personalizados. Com o HCE, qualquer app em um dispositivo Android pode emular um smart card NFC, permitindo que os usuários toquem para iniciar transações com o app escolhido. Não é necessário ter um elemento de segurança provisionado (SE) no dispositivo. Os apps também 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) por aproximação 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 aplicativo (AIDs) conforme definido na ISO/IEC 7816-4 como a base para rotear transações para os aplicativos Android corretos.
Os apps declaram os AIDs compatíveis nos arquivos de manifesto, junto 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 mostra 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. O suporte para HCE já está amplamente disponível na maioria dos controladores NFC, que oferecem suporte dinâmico para transações HCE e SE. Os dispositivos com Android 4.4 que oferecem suporte a NFC incluem o recurso "Pagar por aproximação" para pagamentos fáceis usando HCE.
Estrutura de impressão
Agora, os apps Android podem imprimir qualquer tipo de conteúdo por Wi-Fi ou serviços hospedados na nuvem, como o Google Cloud Print. Em apps com impressão ativada, os usuários podem descobrir as impressoras disponíveis, mudar os tamanhos de papel, escolher páginas específicas para impressão e imprimir quase qualquer tipo de documento, imagem ou arquivo.
O Android 4.4 introduz o suporte nativo da plataforma à impressão, além de APIs para gerenciar a impressão e adicionar novos tipos de suporte a impressoras. A plataforma oferece 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 fornece serviços compartilhados e uma interface do sistema para impressão, dando aos usuários um controle consistente sobre a impressão em qualquer app. O gerenciador de impressão também garante a segurança do conteúdo conforme ele é transmitido entre processos, de um app para um serviço de impressão.
Os fabricantes de impressoras podem usar novas APIs para desenvolver os próprios serviços de impressão, componentes com plugue 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 descoberta e a instalação deles pelos usuários nos dispositivos. Assim como em outros apps, você pode atualizar os serviços de impressão over-the-air a qualquer momento.
Os apps clientes podem usar novas APIs para adicionar recursos de impressão aos apps com poucas mudanças no código. Na maioria dos casos, você adiciona uma ação de impressão à barra de ações e uma interface para escolher os itens a serem impressos. Você também implementaria APIs para criar trabalhos de impressão, consultar o status do gerenciador de impressão 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 maior compatibilidade, o Android usa PDF como o formato de arquivo principal para impressão. Antes da impressão, o app precisa gerar uma versão em PDF paginada corretamente do conteúdo. Para sua conveniência, a API de impressão oferece classes auxiliares nativas e da WebView para que você possa criar PDFs usando APIs padrão de desenho do Android. Se o app souber como desenhar o conteúdo, ele poderá criar rapidamente um PDF para impressão.
A maioria dos dispositivos com Android 4.4 inclui o Google Cloud Print pré-instalado como serviço de impressão, além de vários apps do Google com suporte à impressão, incluindo o Chrome, o Drive, a Galeria e o 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 mais usados pelos usuários. Uma interface padrão fácil de usar permite que os usuários naveguem pelos arquivos e acessem documentos recentes de maneira consistente em todos os apps e provedores.
Os serviços de armazenamento local ou em nuvem podem participar desse ecossistema implementando uma nova classe de provedor de documentos que encapsule os serviços. A classe do provedor inclui todas as APIs necessárias para registrar o provedor no sistema e gerenciar a navegação, leitura e 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, como texto, fotos e planos de fundo, além de vídeos, áudio e muito mais.
Se você criar um provedor de documentos para um serviço local ou em nuvem, poderá enviá-lo aos usuários como parte do seu app Android atual. Depois de fazer o download e a instalação do app, os usuários terão acesso instantâneo ao serviço em qualquer app que participe do framework. Isso pode ajudar você a ganhar exposição e engajamento do usuário, já que os usuários vão encontrar seus serviços com mais facilidade.
Se você desenvolver um app cliente que gerencia 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 mostra automaticamente a interface padrão para navegar em documentos, incluindo todos os provedores de documentos disponíveis.
É possível integrar o 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 do app, sem mudanças ou atualizações necessárias no código.
O framework de acesso ao armazenamento está integrado à intent GET_CONTENT. Assim, 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 como uma forma de permitir que os usuários importem dados. O framework de acesso ao armazenamento e a interface do sistema para navegação facilitam a localização e a importação de dados de uma variedade maior de fontes.
A maioria dos dispositivos com Android 4.4 vai incluir o Google Drive e o armazenamento local pré-integrados como provedores de documentos, e os apps do Google que funcionam com arquivos também usam o novo framework.
Sensores de baixo consumo
Agrupamento de sensores
O Android 4.4 introduz o suporte da plataforma ao lote de sensores de hardware, uma nova otimização que pode reduzir drasticamente o consumo de energia pelas atividades do sensor em andamento.
Com o envio em lote de sensores, o Android trabalha com o hardware do dispositivo para coletar e enviar eventos de sensores de maneira eficiente em lotes, em vez de individualmente conforme são detectados. Isso permite que o processador de aplicativos do dispositivo permaneça em um estado inativo de baixa energia até que os lotes sejam entregues. É possível solicitar eventos em lote de qualquer sensor usando um listener de eventos padrão e controlar o intervalo em que você recebe os 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 e de longa duração, como atividades físicas, rastreamento de local, monitoramento e muito mais. Isso pode tornar seu app mais eficiente e permite monitorar eventos do sensor continuamente, mesmo com a tela desligada e o sistema em suspensão.
No momento, o agrupamento de sensores está disponível no Nexus 5, e estamos trabalhando com nossos parceiros de chipset para disponibilizar esse recurso em mais dispositivos o mais rápido possível.
Detector e contador de passos
O Android 4.4 também adiciona suporte à plataforma para dois novos sensores compostos: detector de passos e pedômetro, que permitem que seu app rastreie passos quando o usuário estiver andando, 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 com cada passo. O pedômetro 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 do sensor são integrados à plataforma e ao hardware, não é necessário manter seus próprios algoritmos de detecção no app.
O detector de passos e os sensores de contador estão disponíveis no Nexus 5, e estamos trabalhando com nossos parceiros de chipset para levá-los aos novos dispositivos o mais rápido possível.
Provedor de SMS
Se você desenvolve um app de mensagens que usa SMS ou MMS, agora é possível usar um provedor de SMS compartilhado e novas APIs para gerenciar o armazenamento e a recuperação de mensagens do app. O novo provedor de SMS e as APIs definem um modelo de interação padronizado para todos os apps que processam mensagens SMS ou MMS.
Além do novo provedor e das 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 a nova intent SMS_DELIVER. Outros apps ainda podem detectar mensagens recebidas usando a intent SMS_RECEIVED. Além disso, o sistema agora permite que apenas o app padrão grave dados de mensagens para o provedor, embora outros apps possam ler a qualquer momento. Os apps que não são padrão do usuário ainda podem enviar mensagens. O sistema processa a gravação dessas mensagens para o provedor em nome do app, para que os usuários possam vê-las no app padrão.
O novo provedor e a semântica ajudam a melhorar a experiência do usuário quando vários apps de mensagens estão instalados e ajudam você a criar novos recursos de mensagens com APIs totalmente compatíveis com versões futuras.
Novas formas de criar aplicativos bonitos
Modo imersivo de tela cheia
Agora seus apps podem usar todos os pixels na tela do dispositivo para mostrar o conteúdo e capturar eventos de toque. O Android 4.4 adiciona um novo modo imersivo em tela cheia que permite criar interfaces de sangria total que vão de uma borda à outra em smartphones e tablets, ocultando toda a interface 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 fica oculta, mesmo enquanto os usuários interagem com o app ou jogo. É possível capturar eventos de toque em qualquer lugar da tela, mesmo em áreas que seriam ocupadas pelas barras do sistema. Isso oferece uma ótima maneira de criar uma interface maior, mais rica e imersiva no app ou jogo, além de reduzir distrações visuais.
Para garantir que os usuários sempre tenham acesso fácil e consistente à interface do sistema no modo imersivo em tela cheia, o Android 4.4 oferece suporte a um novo gesto: no modo imersivo, um deslizar de borda na parte de cima ou de baixo da tela agora revela a interface do sistema.
Para retornar ao modo imersivo, os usuários podem tocar na tela fora dos limites da barra ou esperar um curto período para que as barras sejam ocultadas automaticamente. Para uma experiência consistente do usuário, o novo gesto também funciona com métodos anteriores de ocultação da 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 principais da interface que expõem ações diferentes. Muitos apps também usam animações para ajudar os usuários a entender o progresso deles nesses estados e as ações disponíveis em cada um. Para facilitar a criação de animações de alta qualidade no app, o Android 4.4 apresenta um novo framework de transições.
O framework de transições permite definir cenas, geralmente hierarquias de visualização e transições, que descrevem como animar ou transformar as cenas quando o usuário entra ou sai delas. É possível usar vários tipos de transição predefinidos para animar suas cenas com base em propriedades específicas, como limites de layout ou visibilidade. Também há um tipo de transição automática que desbota, move e redimensiona visualizações automaticamente durante uma mudança de cena. Além disso, é possível definir transições personalizadas que animam as propriedades mais importantes para o app e conectar 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 rapidamente, sem precisar definir cenas. Por exemplo, é possível 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, é fácil invocá-las no app. Por exemplo, você pode 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 vão começar automaticamente para animar as mudanças especificadas.
Para controlar as transições que são executadas entre cenas específicas no fluxo do aplicativo, use o TransitionManager. O TransitionManager permite definir a relação entre 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 o conteúdo, agora é possível usar novos estilos e temas de janela para solicitar a interface do sistema translúcida, incluindo a barra de status e a 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 acessar mais informações sobre notificações recebidas que foram criadas 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, como 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 da WebView baseada no Chromium. A nova WebView do Chromium oferece o suporte mais recente para padrões, desempenho e compatibilidade para criar e exibir seu conteúdo baseado na Web.
O Chromium WebView fornece ampla compatibilidade com HTML5, CSS3 e JavaScript. Ele oferece suporte à maioria dos recursos HTML5 disponíveis no Chrome para Android 30. Ela também traz uma versão atualizada do mecanismo JavaScript (V8) que oferece uma performance JavaScript muito melhor.
Além disso, a nova WebView do Chromium oferece suporte à depuração remota usando as Ferramentas do desenvolvedor do Chrome. Por exemplo, é possível usar o Chrome DevTools na sua máquina de desenvolvimento para inspecionar, depurar e analisar o 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 com o Android 4.4 e versões mais recentes. Você pode aproveitar a nova WebView imediatamente, com modificações mínimas nos apps e conteúdos atuais. Na maioria dos casos, seu 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 fornece 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 de criar tutoriais e demonstrações do 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 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 à resolução de exibição do dispositivo na orientação atual. Quando terminar a gravação, você pode compartilhar o vídeo diretamente do seu dispositivo ou extrair o arquivo MP4 para o computador host para pós-produção.
Se o app reproduzir vídeos ou outros conteúdos protegidos que você não quer que sejam capturados pelo gravador de tela, use SurfaceView.setSecure() para marcar o conteúdo como seguro.
É possível acessar a gravação de tela usando a ferramenta adb incluída no SDK do Android, com o comando adb shell screenrecord. Também é possível iniciá-lo pelo Logcat no Android Studio.
Alternância de resolução pela reprodução adaptativa
O Android 4.4 oferece suporte formal para 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 a mudança perfeita de resolução durante a reprodução. O cliente pode começar a alimentar os frames de vídeo de entrada do decodificador de uma nova resolução e a resolução dos buffers de saída muda automaticamente, sem uma lacuna significativa.
A mudança de resolução no Android 4.4 permite que os apps de mídia ofereçam uma experiência de streaming de vídeo muito melhor. Os apps podem verificar o suporte à reprodução adaptativa no momento da execução usando APIs atuais e implementar a mudança de resolução usando novas APIs introduzidas no Android 4.4.
Criptografia comum para DASH
O Android agora oferece suporte à Criptografia comum (CENC, na sigla em inglês) para MPEG-DASH, oferecendo um esquema DRM padrão e multiplataforma para gerenciar a proteção de conteúdo. Os apps podem aproveitar a CENC pelo framework DRM modular do Android e pelas APIs da plataforma para oferecer suporte ao DASH.
Transmissão ao vivo em HTTP
O Android 4.4 atualiza o suporte da plataforma ao HTTP Live Streaming (HLS) para um superconjunto da versão 7 da especificação HLS (versão 4 do protocolo). Consulte o rascunho do IETF para mais detalhes.
Encapsulamento de áudio para DSP
Para reprodução de áudio de alto desempenho e baixo consumo de energia, o Android 4.4 adiciona suporte de plataforma para encapsulamento de áudio em um processador de sinal digital (DSP) no chipset do dispositivo. Com o roteamento, a decodificação de áudio e os efeitos de saída 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 em 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 sem encapsulamento.
Os aplicativos de mídia podem aproveitar o roteamento 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 ele estiver disponível no dispositivo.
O encapsulamento de áudio exige suporte no hardware do dispositivo. No momento, o encaminhamento de áudio está disponível no Nexus 5, e estamos trabalhando com nossos parceiros de chipset para disponibilizar o recurso em mais dispositivos o mais rápido possível.
Monitoramento de áudio
Os apps podem usar novas ferramentas de monitoramento no efeito Visualizador para receber atualizações sobre os níveis de pico e RMS de qualquer áudio que esteja sendo reproduzido no dispositivo. Por exemplo, você pode usar isso de forma criativa em visualizadores de música ou para 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 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
O framework de áudio agora pode informar carimbos de data/hora de apresentação da HAL de saída de áudio para os aplicativos, para uma melhor sincronização de á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. Você pode usar as informações de carimbo de data/hora para sincronizar o áudio com mais precisão com os frames de vídeo.
Miracast™ certificado para Wi-Fi
Os dispositivos Android 4.4 agora podem ser certificados pela especificação de exibição Wi-Fi da Wi-Fi Alliance como compatíveis com o Miracast. Para ajudar nos testes, uma nova opção para desenvolvedores de Display sem fio expõe controles e configurações de configuração avançados para a certificação de Display sem fio. Acesse a opção em Configurações > Opções do desenvolvedor > Certificação de exibição sem fio. O Nexus 5 é um dispositivo de exibição sem fio certificado pelo Miracast.
Computação com RenderScript
Melhorias contínuas de desempenho
Quando seus apps usam o RenderScript, eles se beneficiam de ajustes contínuos de desempenho no próprio ambiente de execução do RenderScript, sem a necessidade de recompilação. O gráfico à direita mostra ganhos de desempenho no Android 4.4 em dois chipsets populares.
Aceleração de GPU
Qualquer app que use o RenderScript em um dispositivo compatível se beneficia da aceleração de GPU, sem mudanças de código ou recompilação. Desde que o Nexus 10 estreou a aceleração da GPU do RenderScript, 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 disponibilizar esse recurso em mais dispositivos o mais rápido possível.
RenderScript no Android NDK
Agora você pode aproveitar o RenderScript diretamente do 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 scripts intrínsecos, kernels personalizados e muito mais.
Se você tiver tarefas grandes e com uso intensivo de recursos para processar em código nativo, poderá realizar essas tarefas usando o RenderScript e integrá-las ao código nativo. O RenderScript oferece ótimo desempenho em uma ampla variedade de dispositivos, com suporte automático para CPUs e GPUs de vários núcleos e outros processadores.
Ao criar um app que usa o RenderScript pelo NDK, é possível distribuí-lo para qualquer dispositivo com o Android 2.2 ou versões mais recentes, 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, 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 do OpenGL ES.
Novos tipos de conectividade
Novos perfis de Bluetooth
O Android 4.4 oferece suporte a dois novos perfis 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 sobre GATT (HOGP, na sigla em inglês) oferece aos apps uma vinculação de baixa latência com dispositivos periféricos de baixa potência, como mouses, joysticks e teclados. O MAP do Bluetooth permite que seus apps troquem mensagens com um dispositivo próximo, por exemplo, um terminal automotivo para uso com 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 usando os dispositivos Bluetooth.
O suporte à plataforma para HOGP, MAP e AVRCP foi integrado à pilha Bluedroid Bluetooth lançada pelo Google e pela Broadcom no Android 4.2. A compatibilidade está disponível imediatamente nos dispositivos Nexus e em outros dispositivos Android que oferecem recursos Bluetooth compatíveis.
IR Blasters
O Android 4.4 introduz suporte à plataforma para dispositivos de transmissão de infravermelho integrados, além de uma nova API e um serviço do sistema que permitem criar apps para aproveitar esses recursos.
Com a nova API, é possível criar apps que permitem aos usuários controlar remotamente TVs, sintonizadores, interruptores e outros dispositivos eletrônicos nas proximidades. A API permite que seu app verifique se o smartphone ou tablet tem um emissor de infravermelho, consulte as frequências da operadora e envie sinais de infravermelho.
Como a API é padrão em dispositivos Android com o Android 4.4 ou mais recente, seu app pode oferecer suporte à maior variedade possível de fornecedores sem precisar escrever um código de integração personalizado.
Compatibilidade com TDLS de Wi-Fi
O Android 4.4 apresenta uma maneira simples de transmitir mídia e outros dados com mais rapidez entre dispositivos que já estão na mesma rede Wi-Fi, com suporte para a configuração de link direto com túneis do Wi-Fi (TDLS, na sigla em inglês).
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 em todo o sistema para legendas. Os usuários podem acessar Configurações > Acessibilidade > Legendas para definir as preferências globais de legendas, como mostrar legendas e qual idioma, tamanho e estilo de texto usar.
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 de gerenciamento de legendas permite verificar e monitorar as preferências de legenda do usuário. O gerenciador de legendas fornece o estado de legenda preferido do usuário, bem como a localidade, o fator de escalonamento e o estilo de texto preferidos. O estilo de texto inclui cores de primeiro e segundo plano, propriedades de borda e tipo de letra.
Além disso, os apps que usam VideoView podem usar uma nova API para transmitir um stream de legenda com um stream de vídeo para renderização. O sistema processa automaticamente a exibição das legendas nos frames de vídeo de acordo com as configurações do usuário em todo o sistema. No momento, o VideoView oferece suporte apenas à exibição automática de legendas no formato WebVTT.
Todos os apps que mostram legendas precisam verificar as preferências de legenda do usuário em todo o sistema e renderizar as legendas o mais próximo possível dessas preferências. Para saber como as combinações específicas de configurações devem ficar, confira uma prévia das legendas em diferentes idiomas, tamanhos e estilos no app Configurações.
APIs de acessibilidade melhorada
O Android 4.4 estende as APIs de acessibilidade para oferecer suporte a uma descrição estrutural e semântica mais precisa e à observação de elementos na tela. Com as novas APIs, os desenvolvedores podem melhorar a qualidade do feedback acessível fornecendo aos serviços de acessibilidade mais informações sobre os elementos na tela.
Em nós de acessibilidade, os desenvolvedores agora podem determinar se um nó é um pop-up, conferir o tipo de entrada dele e muito mais. Também é possível usar novas APIs para trabalhar com nós que contêm informações semelhantes a uma grade, como listas e tabelas. Por exemplo, agora é possível especificar novas ações com suporte, 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 acontecendo no conteúdo da janela e agora 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 destinado a usuários que usam scripts RTL, use 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, é possível declarar as versões padrão como espelhadas automaticamente e, em seguida, omitir esses drawables dos recursos RTL.
É possível declarar vários tipos de drawables como espelhados automaticamente no código do aplicativo, como bitmap, nine-patch, camada, 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 RTL
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 para desenvolvedores para forçar a direção de layout RTL em todos os apps.
A opção "Forçar layout RTL" muda o dispositivo para o layout RTL em todas as localidades e exibe o texto no idioma atual. Isso pode ajudar a encontrar problemas de layout em todo o app, sem precisar exibir o app em um idioma RTL. Você pode acessar a opção em Configurações > Opções do desenvolvedor > 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 "permissive" para "restrito". Isso significa que possíveis violações de política em um domínio do SELinux que tenha uma política de aplicação serão bloqueadas.
Algoritmos de criptografia melhorados
O Android melhorou ainda mais a segurança adicionando suporte a mais dois algoritmos criptográficos. O suporte ao algoritmo de assinatura digital de curva elíptica (ECDSA) foi adicionado ao provedor de keystore para melhorar a segurança da assinatura digital, aplicável a cenários como a assinatura de um aplicativo ou uma conexão de dados. A função de derivação de chave Scrypt é implementada para proteger as chaves criptográficas usadas para 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 outros usuários no dispositivo. Além disso, o Android agora oferece suporte ao nível 2 do FORTIFY_SOURCE, e todo o código é compilado com essas proteções. O 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 usados pelo app, 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 da memória para ajudar a determinar a eficiência deles. Isso é mais importante para apps que iniciam serviços executados em segundo plano, já que permite monitorar por quanto tempo eles estão em execução e quanto de RAM eles estão usando enquanto isso. O procstats também coleta dados sobre o uso de memória de apps em primeiro plano ao longo do tempo para determinar o perfil geral de 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 quanto de RAM eles usam enquanto isso. O procstats também permite criar um perfil do app enquanto ele está em primeiro plano, usando o uso de memória ao longo do tempo para determinar o perfil geral de memória.
É possível acessar o procstats na ferramenta adb incluída no SDK do Android, adb shell dumpsys procstats. Além disso, para criar perfis no dispositivo, consulte a opção de desenvolvedor "Process Stats" 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 app enquanto ele está sendo executado em qualquer dispositivo ou emulador. É especialmente útil para saber como o app usa a memória e funciona em dispositivos com pouca RAM. Acesse a opção em Configurações > Opções do desenvolvedor > Estatísticas do processo.
A opção Process Stats mostra várias métricas de alto nível sobre o uso de memória do app com base nos dados coletados usando o novo serviço procstats. Na tela principal, é possível conferir um resumo do status da memória do sistema. Verde indica a quantidade relativa de tempo gasto com uso baixo de RAM, amarelo indica uso moderado de RAM e vermelho indica uso alto (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 de memória computada relativa (runtime 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, em segundo plano ou em cache, e incluir ou excluir processos do sistema. Também é possível mudar a duração dos dados coletados para 3, 6, 12 ou 24 horas e incluir ou excluir a memória do usuário.
Para analisar o uso de memória de um app específico, toque nele. Para cada app, agora é possível conferir um resumo da memória consumida e a porcentagem do intervalo de coleta em que o app foi executado. Você também pode conferir o uso médio e máximo durante o período de coleta e, abaixo dos serviços do app, a porcentagem de tempo em que eles foram executados.
Analisar o app usando os dados nas estatísticas de processo 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 ao longo de um período, pode haver bugs no código que podem ser resolvidos para melhorar a performance do app, especialmente quando executado em um dispositivo com pouca RAM.