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

Jelly Bean

Android 4.3

Android 4.3 em smartphone e tablet

Este é o Android 4.3, uma versão ainda melhor do Jelly Bean.

O Android 4.3 inclui otimizações de desempenho e novos recursos incríveis para usuários e desenvolvedores. Este documento oferece um resumo das novidades para os desenvolvedores.

Veja o documento das APIs do Android 4.3 para uma visão detalhada das novas APIs para desenvolvedores.

Saiba mais sobre os novos recursos do Jelly Bean para os usuários em www.android.com.

Mais rápido, mais suave, mais responsivo

O Android 4.3 aprimora as melhorias de desempenho já incluídas no Jelly Bean (tempo de vsync, buffer triplo, latência de toque reduzida, otimização de entrada de CPU e renderização 2D acelerada por hardware) e acrescenta novas otimizações que tornam o Android ainda mais rápido.

Para melhorar o desempenho gráfico, o renderizador 2D acelerado por hardware agora otimiza o fluxo de comandos de desenho, transformando-o em um formato de GPU mais eficiente ao reorganizar e mesclar operações de desenho. O renderizador também pode processar várias linhas de execução (multithreading) em diversos núcleos de CPU para executar determinadas tarefas.

O Android 4.3 também melhora a renderização de formas e texto. Formas como círculos e retângulos arredondados agora são renderizadas com maior qualidade e de forma mais eficiente. Otimizações para texto incluem um desempenho melhor ao usar várias fontes ou conjuntos de glifos complexos (CJK), maior qualidade de renderização ao redimensionar texto e renderização mais rápida de sombras projetadas.

A alocação de buffer de janela aprimorada resulta em uma alocação de buffer de imagem mais rápida para seus aplicativos, reduzindo o tempo gasto para iniciar a renderização quando você cria uma janela.

Para gráficos de maior desempenho, o Android 4.3 introduz compatibilidade com o OpenGL ES 3.0 e o torna acessível para aplicativos por meio de APIs nativas e de framework. Nos dispositivos compatíveis, o mecanismo de renderização 2D acelerado por hardware usa o OpenGL ES 3.0 para otimizar o gerenciamento de texturas e aumentar a fidelidade de renderização de gradiente.

OpenGL ES 3.0 para gráficos de alto desempenho

O Android 4.3 introduz compatibilidade com plataforma para o Khronos OpenGL ES 3.0, fornecendo jogos e outros aplicativos com recursos de gráficos 2D e 3D de alto desempenho em dispositivos compatíveis. Você pode aproveitar o OpenGL ES 3.0 e as extensões EGL relacionadas usando vinculações de APIs de framework ou API nativas por meio do Kit de desenvolvimento nativo do Android (NDK, na sigla em inglês).

A nova funcionalidade fornecida no OpenGL ES 3.0 inclui aceleração de efeitos visuais avançados, compactação de textura ETC2/EAC de alta qualidade como um recurso padrão, uma nova versão da linguagem de sombreamento GLSL ES com compatibilidade com números inteiros e pontos flutuantes de 32 bits, renderização avançada de texturas, tamanho padronizado de texturas e formatos de processamento de buffer.

É possível usar as APIs OpenGL ES 3.0 para criar gráficos altamente complexos e eficientes que são executados em vários dispositivos Android compatíveis, e você pode oferecer compatibilidade com um formato de compactação de textura padrão nesses dispositivos.

O OpenGL ES 3.0 é um recurso opcional que depende do hardware gráfico subjacente. A compatibilidade já está disponível nos dispositivos Nexus 7 (2013), Nexus 4 e Nexus 10.

Conectividade Bluetooth aprimorada

Conectividade com dispositivos e sensores Bluetooth Smart

Agora você pode projetar e criar aplicativos que interajam com a última geração de dispositivos e sensores pequenos e com baixo consumo de energia que usam a tecnologia Bluetooth Smart.

O Android 4.3 oferece uma API padrão para interação com dispositivos Bluetooth Smart.

O Android 4.3 introduz compatibilidade integrada com plataforma para Bluetooth Smart Ready na função central e oferece um conjunto padrão de APIs que os aplicativos podem usar para descobrir dispositivos próximos, consultar serviços GATT e ler/gravar características.

Com as novas APIs, seus aplicativos podem procurar com eficiência os dispositivos e serviços de interesse. Para cada dispositivo, você pode verificar os serviços GATT compatíveis de acordo com o UUID e gerenciar conexões por código do dispositivo e intensidade do sinal. Você pode se conectar a um servidor GATT hospedado no dispositivo e ler ou gravar características, ou registrar um listener para receber notificações sempre que essas características forem alteradas.

É possível implementar compatibilidade em qualquer perfil do GATT. Você pode ler ou gravar características padrão ou adicionar compatibilidade com características personalizadas, conforme necessário. Seu aplicativo pode funcionar como cliente ou servidor e pode transmitir e receber dados nos dois modos. As APIs são genéricas, então é possível oferecer compatibilidade a interações com diversos dispositivos, como tags de proximidade, smartwatches, medidores de condicionamento físico, controles de jogos, controles remotos, dispositivos de saúde e muito mais.

A compatibilidade com Bluetooth Smart já está disponível nos dispositivos Nexus 7 (2013) e Nexus 4 e será ampliada para cada vez mais dispositivos Android nos próximos meses.

Perfil do AVRCP 1.3

O Android 4.3 passa a ser compatível com o Bluetooth AVRCP 1.3, para que seus aplicativos possam ter interações mais ricas com dispositivos de streaming de mídia remoto. Aplicativos como players de mídia podem aproveitar o AVRCP 1.3 por meio das APIs de cliente de controle remoto introduzidas no Android 4.0. Além de expor controles de reprodução nos dispositivos remotos conectados por Bluetooth, os aplicativos agora podem transmitir metadados como nome da faixa, compositor e outros tipos de metadados de mídia.

A compatibilidade com plataforma para o AVRCP 1.3 foi integrada na pilha Bluedroid Bluetooth lançada pelo Google e pela Broadcom no Android 4.2. A compatibilidade está disponível nos dispositivos Nexus e em outros dispositivos Android que oferecem recursos A2DP/AVRCP.

Compatibilidade com perfis restritos

Configuração de um perfil restrito

O proprietário de um tablet pode configurar um ou mais perfis restritos nas configurações e gerenciá-los de forma independente.

Configuração de restrições em um perfil

Seu aplicativo pode oferecer restrições para permitir que os proprietários gerenciem o conteúdo do aplicativo quando ele estiver sendo executado em um perfil.

O Android 4.3 estende o recurso multiusuários para tablets com perfis restritos, uma nova maneira de gerenciar usuários e os respectivos recursos em um único dispositivo. Com os perfis restritos, os proprietários de tablets podem configurar ambientes separados para cada usuário de forma rápida, com a capacidade de gerenciar restrições mais refinadas nos aplicativos disponíveis nesses ambientes. Perfis restritos são ideais para amigos e familiares, usuários convidados, quiosques, dispositivos de pontos de venda e muito mais.

Cada perfil restrito oferece um espaço isolado e seguro com o próprio armazenamento local, telas iniciais, widgets e configurações. Diferentemente dos usuários, os perfis são criados a partir do ambiente do proprietário do tablet, com base nos aplicativos instalados pelo proprietário e nas contas do sistema. O proprietário controla quais aplicativos instalados são ativados no novo perfil, e o acesso às contas do proprietário é desativado por padrão.

Aplicativos que precisam acessar as contas do proprietário (para login, preferências ou outros usos) podem ativar o acesso declarando um atributo de manifesto, e o proprietário pode revisar e gerenciar esses aplicativos a partir das configurações do perfil.

Para desenvolvedores, os perfis restritos representam uma nova maneira de oferecer mais valor e controle aos usuários. Você pode implementar restrições de aplicativos (controles de recursos ou de conteúdo compatíveis com seu aplicativo) e anunciá-los aos proprietários de tablets nas configurações do perfil.

É possível adicionar restrições de aplicativos diretamente às configurações do perfil usando tipos booleanos, de seleções e de seleções múltiplas predefinidos. Caso queira mais flexibilidade, você pode até mesmo iniciar sua própria interface do usuário a partir das configurações do perfil para oferecer qualquer tipo de restrição desejada.

Quando seu aplicativo é executado em um perfil, ele pode verificar se há alguma restrição configurada pelo proprietário e aplicá-la adequadamente. Por exemplo, um aplicativo de mídia pode oferecer uma restrição para permitir que o proprietário defina uma faixa etária para o perfil. No momento da execução, o aplicativo pode verificar a configuração de idade e gerenciar o conteúdo de acordo com a faixa etária escolhida.

Se seu aplicativo não foi projetado para uso em perfis restritos, você pode desativar esse recurso totalmente para que ele não possa ser ativado em nenhum perfil restrito.

Recursos de localização e sensor otimizadas

O Google Play Services oferece APIs avançadas de localização que podem ser usadas em aplicativos. O Android 4.3 otimiza essas APIs em dispositivos compatíveis com novos recursos de hardware e software que minimizam o uso da bateria.

A fronteira geográfica virtual de hardware otimiza a eficiência de energia executando computação de localização no hardware do dispositivo, e não no software. Nos dispositivos compatíveis com a fronteira geográfica virtual de hardware, as APIs do Google Play Services relacionadas poderão usar essa otimização para economizar bateria enquanto o dispositivo está em movimento.

O modo de somente busca por Wi-Fi é uma nova otimização de plataforma que permite aos usuários fazer a busca por Wi-Fi sem se conectarem a uma rede Wi-Fi, a fim de melhorar a precisão da localização e economizar bateria. Aplicativos que dependem do Wi-Fi para serviços de localização agora podem solicitar que os usuários ativem o modo de somente busca nas configurações avançadas de Wi-Fi. O modo de somente busca por Wi-Fi não depende do hardware do dispositivo e está disponível como parte da plataforma Android 4.3.

Os aplicativos são capazes de gerenciar melhor as leituras de novos tipos de sensores. Um vetor de rotação de jogos permite que desenvolvedores de jogos detectem a rotação do dispositivo sem precisar se preocupar com interferências magnéticas. O giroscópio não calibrado e os sensores do magnetômetro não calibrados relatam medições brutas, bem como tendências estimadas para os aplicativos.

Os novos recursos de hardware já estão disponíveis nos dispositivos Nexus 7 (2013) e Nexus 4, e qualquer fabricante de dispositivo ou fornecedor de chipset pode integrá-los aos dispositivos deles.

Novos recursos de mídia

Framework modular de DRM

Para atender às necessidades da próxima geração de serviços de mídia, o Android 4.3 apresenta uma estrutura DRM modular que permite aos desenvolvedores de aplicativos de mídia integrarem mais facilmente o DRM nos próprios protocolos de streaming, como o MPEG DASH (Dynamic Adaptive Streaming over HTTP, ISO/IEC 23009-1).

Por meio de uma combinação de novas APIs e melhorias em APIs existentes, a framework de DRM de mídia oferece um conjunto integrado de serviços para gerenciar licenciamento e provisionamento, acessar codecs de baixo nível e decodificar dados de mídia criptografados. Uma nova API MediaExtractor permite receber metadados PSSH para a mídia DASH. Aplicativos que usam a framework de DRM de mídia gerenciam a comunicação de rede com um servidor de licenças e processam o streaming de dados criptografados a partir de uma biblioteca de conteúdo.

Codificador VP8

O Android 4.3 introduz compatibilidade integrada com a codificação VP8, acessível a partir de APIs de framework e nativas. Para aplicativos que usam APIs nativas, a plataforma inclui cabeçalhos de extensão OpenMAX 1.1.2 para fornecer compatibilidade com perfis e níveis de VP8. A compatibilidade com a codificação VP8 inclui configurações para taxa de bits de destino, controle de taxa, taxa de quadros, particionamento de token, resiliência de erros, reconstrução e filtros de loop. A API da plataforma introduz a compatibilidade com o codificador VP8 em uma variedade de formatos para que você possa aproveitar o melhor formato para seu conteúdo.

A codificação VP8 está disponível em software para todos os dispositivos compatíveis que executam o Android 4.3. Para ter o melhor desempenho, a plataforma também oferece compatibilidade com a codificação VP8 acelerada por hardware em dispositivos compatíveis.

Codificação de vídeo de uma superfície

A partir do Android 4.3, você pode usar uma superfície como entrada para um codificador de vídeo. Por exemplo, agora você pode direcionar um stream de uma superfície OpenGL ES para o codificador, em vez de precisar copiar de um buffer para outro.

Multiplexador de mídia

Os aplicativos podem usar novas APIs de multiplexador de mídia para combinar streams de áudio e vídeo básicos em um único arquivo de saída. Atualmente, os aplicativos podem multiplexar um único stream de áudio MPEG-4 e um único stream de vídeo MPEG-4 em um único arquivo de saída MPEG-4. As novas APIs são equivalentes às APIs de desmultiplexador de mídia introduzidas no Android 4.2.

Progresso da reprodução e arraste do marcador de mídia em clientes de controle remoto

Desde o Android 4.0, os players de mídia e aplicativos semelhantes podem oferecer controles de reprodução a partir de clientes de controle remoto, como a tela de bloqueio do dispositivo, notificações e dispositivos remotos conectados por Bluetooth. A partir do Android 4.3, esses aplicativos também podem expor o progresso e a velocidade da reprodução por meio dos clientes de controle remoto, bem como receber comandos para ir a uma posição específica da mídia.

Novas formas de criar aplicativos bonitos

Acesso a notificações

As notificações são, há muito tempo, um recurso conhecido do Android porque permitem que os usuários vejam informações e atualizações de todo o sistema em um só lugar. No Android 4.3, os aplicativos podem observar o stream de notificações com a permissão do usuário e exibir as notificações da forma que quiserem, incluindo enviá-las para dispositivos próximos conectados por Bluetooth.

Você pode acessar notificações por meio de novas APIs que permitem registrar um serviço de listener de notificações e, com a permissão do usuário, receber notificações à medida que são exibidas na barra de status. As notificações são entregues a você na íntegra, com todos os detalhes sobre o aplicativo de origem, o horário de envio, a visualização e o estilo do conteúdo e a prioridade. Você pode avaliar os campos de interesse nas notificações, processar ou adicionar contexto do seu aplicativo e encaminhá-las para exibição da maneira que preferir.

A nova API fornece retornos de chamada quando uma notificação é adicionada, atualizada e removida (seja porque o usuário a dispensou, seja porque o aplicativo de origem a removeu). Você poderá iniciar quaisquer intents associados à notificação ou às ações dela, além de dispensá-los a partir do sistema, permitindo que seu aplicativo ofereça uma interface do usuário completa para as notificações.

Os usuários permanecem no controle de quais aplicativos podem receber notificações. A qualquer momento, eles podem consultar as configurações para ver quais aplicativos têm acesso às notificações e ativar ou desativar o acesso, conforme necessário. O acesso à notificação é desativado por padrão. Os aplicativos podem usar um novo intent para levar o usuário diretamente para as configurações para ativar o serviço de listener após a instalação.

Ver sobreposições

Agora você pode criar sobreposições transparentes sobre Views e ViewGroups para renderizar uma hierarquia de View temporária ou efeitos de animação temporários sem alterar a hierarquia de layout subjacente. As sobreposições são particularmente úteis quando você quer criar animações, como deslizar uma visualização para fora do contêiner ou arrastar itens na tela sem afetar a hierarquia da visualização.

Modo de layout de limites ópticos

Um novo modo de layout permite que você gerencie o posicionamento de Views dentro de ViewGroups de acordo com os limites ópticos delas, e não com os limites de corte. Os limites de corte representam o limite externo real de um widget, enquanto os novos limites ópticos descrevem onde o widget parece estar, dentro dos limites de corte. Você pode usar o modo de layout de limites ópticos para alinhar corretamente widgets que usam efeitos visuais externos, como sombras e brilhos.

Tipos personalizados de animação de rotação

Os aplicativos agora podem definir os tipos de animação de saída e entrada usados em uma janela quando o dispositivo é girado. Você pode definir as propriedades da janela para ativar saltos, transições ou rotação padrão de janela. O sistema usa os tipos personalizados de animação quando a janela está em tela cheia e não coberta por outras janelas.

Modos de orientação da tela

Os aplicativos podem definir novos modos de orientação para Activities para garantir que elas sejam exibidas na orientação adequada quando o dispositivo for virado. Além disso, os aplicativos podem usar um novo modo para bloquear a tela na orientação atual. Isso é útil para aplicativos que usam a câmera e querem desativar a rotação durante a gravação de vídeos.

Intent para lidar com respostas rápidas

O Android 4.3 introduz um novo intent público que permite que qualquer aplicativo manipule respostas rápidas, que são mensagens de texto enviadas pelo usuário em resposta a uma chamada recebida, sem necessidade de atender a chamada ou desbloquear o dispositivo. Seu aplicativo pode detectar o intent e enviar a mensagem ao autor da chamada pelo sistema de mensagens. O intent inclui o destinatário (autor da chamada), bem como a mensagem em si.

Compatibilidade com usuários internacionais

Mais partes do Android 4.3 foram otimizadas para idiomas RTL.

Melhorias de RTL

O Android 4.3 inclui aprimoramentos de desempenho de RTL e maior compatibilidade com RTL em widgets de IU de framework, incluindo ProgressBar/Spinner e ExpandableListView. Mais informações de depuração são visíveis por meio da ferramenta uiautomatorviewer. Além disso, agora há mais componentes de IU do sistema que reconhecem RTL, como notificações, barra de navegação e barra de ação.

Para fornecer uma melhor experiência em todo o sistema em scripts RTL, mais aplicativos de sistema padrão agora são compatíveis com layouts RTL, incluindo a Tela de início, Configurações rápidas, Telefone, Pessoas, Assistente de configuração, Relógio, Downloads e muito mais.

Utilitários para localização

As pseudolocalidades facilitam o teste da localização do aplicativo.

O Android 4.3 também inclui novos utilitários e APIs para criar strings RTL melhores e testar suas IUs localizadas. A nova classe BidiFormatter fornece uma API simples para agrupar strings Unicode, para que os dados de script RTL sejam exibidos como pretendido em mensagens para localidades LTR e vice-versa. Para permitir que você use esse utilitário de maneira mais ampla nos seus aplicativos, a API BidiFormatter também está disponível agora para as versões anteriores da plataforma por meio do Support Package no SDK do Android.

Para ajudar a gerenciar a formatação de datas entre localidades, o Android 4.3 inclui um novo método getBestDateTimePattern(), que gera automaticamente a melhor forma localizada possível de uma data UTS Unicode para uma localidade especificada. É uma maneira conveniente de fornecer uma experiência mais localizada para os usuários.

Para ajudar a testar seu aplicativo com mais facilidade em outras localidades, o Android 4.3 apresenta as pseudolocalidades como uma nova opção do desenvolvedor. As pseudolocalidades simulam o idioma, o script e as características de exibição associados a uma localidade ou grupo de idiomas. Atualmente, você pode testar com uma pseudolocalidade para Inglês acentuado, que permite ver como sua IU funciona com acentos de script e caracteres usados em vários idiomas europeus.

Acessibilidade e automação de IU

A partir do Android 4.3, os serviços de acessibilidade podem observar e filtrar eventos de tecla, como processar atalhos de teclado ou fornecer paridade de navegação com entradas de gesto. O serviço recebe os eventos e pode processá-los conforme necessário antes de serem passados para o sistema ou outros aplicativos instalados.

Os serviços de acessibilidade podem declarar novos atributos de recurso para descrever o que os serviços deles podem fazer e quais recursos de plataforma usam. Por exemplo, eles podem declarar a capacidade de filtrar eventos de tecla, recuperar o conteúdo da janela, ativar o reconhecimento por toque ou recursos de acessibilidade na Web. Em alguns casos, os serviços precisam declarar um atributo de recurso antes de poder acessar os recursos da plataforma relacionados. O sistema usa os atributos de recurso do serviço para gerar uma caixa de diálogo de aceitação para os usuários, para que possam ver e concordar com os recursos antes de iniciá-los.

Com base na estrutura de acessibilidade do Android 4.3, um novo framework de automação de IU permite que os testes interajam com a IU do dispositivo simulando ações do usuário e analisando o conteúdo da tela. Por meio do framework de automação de IU, você pode executar operações básicas, definir a rotação da tela, gerar eventos de entrada, fazer capturas de tela e muito mais. É uma maneira poderosa de automatizar os testes em cenários de usuários realistas, incluindo ações ou sequências que abrangem vários aplicativos.

Empresas e segurança

Configuração de Wi-Fi para redes WPA2-Enterprise

Os aplicativos agora podem configurar as credenciais de Wi-Fi que precisam para estabelecer conexões com pontos de acesso corporativos WPA2. Os desenvolvedores podem usar novas APIs para configurar as credenciais do EAP e Encapsulated EAP (fase 2) para os métodos de autenticação usados na empresa. Aplicativos com permissão para acessar e alterar o Wi-Fi podem configurar credenciais de autenticação para vários métodos de autenticação EAP e Fase 2.

Sandbox Android reforçado com o SELinux

O Android agora usa o SELinux, um sistema de controle de acesso obrigatório (MAC, na sigla em inglês) do kernel do Linux para ampliar o sandbox do aplicativo baseado em UID. Isso protege o sistema operacional contra possíveis vulnerabilidades de segurança.

Melhorias do KeyChain

A API KeyChain agora oferece um método que permite que os aplicativos confirmem que as chaves do sistema estão vinculadas a uma raiz de hardware confiável para o dispositivo. Isso fornece um local para criar ou armazenar chaves privadas que não podem ser exportadas do dispositivo, mesmo em caso de comprometimento da raiz ou do kernel.

Provedor de armazenamento de chaves do Android

O Android 4.3 introduz APIs e um provedor de keystore que permitem que os aplicativos criem chaves de uso exclusivo. Ao usar as APIs, os aplicativos podem criar ou armazenar chaves privadas que não podem ser vistas ou usadas por outros aplicativos e podem ser adicionadas ao keystore sem nenhuma interação do usuário.

O provedor de keystore oferece os mesmos benefícios de segurança que a API KeyChain fornece para credenciais do sistema, como credenciais de vinculação a um dispositivo. As chaves privadas do keystore não podem ser exportadas do dispositivo.

Restringir o Setuid dos aplicativos Android

A partição /system agora é montada nosuid para processos gerados por zigotos, impedindo que os aplicativos Android executem programas setuid. Isso reduz a superfície de ataque raiz e a probabilidade de possíveis vulnerabilidades de segurança.

Novas formas de analisar o desempenho

O Systrace usa uma nova sintaxe de comando e permite coletar mais tipos de dados de criação de perfil.

Melhoria na geração de registros do Systrace

O Android 4.3 é compatível com uma versão aprimorada da ferramenta Systrace, que é mais fácil de usar e fornece acesso a mais tipos de informações para criar um perfil de desempenho do seu aplicativo. Agora é possível coletar dados de rastreamento de módulos de hardware, funções do kernel, VM Dalvik, incluindo coleta de lixo, carregamento de recursos e muito mais.

O Android 4.3 também inclui novas APIs Trace que você pode usar nos seus aplicativos para marcar seções de código específicas a serem rastreadas usando eventos de início/término do Systrace. Quando as seções de código marcadas são executadas, o sistema grava os eventos de início/término no registro de rastreamento. O impacto sobre o desempenho do aplicativo é mínimo, por isso, os tempos relatados oferecem uma visualização precisa do que seu aplicativo está fazendo.

É possível visualizar eventos específicos do aplicativo em uma linha do tempo no arquivo de saída do Systrace e analisar os eventos no contexto de outros dados de rastreamento do kernel e do espaço do usuário. Juntamente com as tags do Systrace, as seções personalizadas de aplicativos podem oferecer novas maneiras de entender o desempenho e o comportamento dos seus aplicativos.

Criação de perfil de GPU na tela no Android 4.3.

Criação de perfil de GPU na tela

O Android 4.3 adiciona novas opções do desenvolvedor para ajudar a analisar o desempenho dos aplicativos e identificar problemas de renderização em qualquer dispositivo ou emulador.

Na opção Classificar render. GPU, você pode ver a taxa de quadros efetiva do aplicativo na tela enquanto ele está em execução. Você pode optar por exibir dados de criação de perfil como gráficos de linha ou barra na tela, com cores indicando o tempo gasto na criação de comandos de desenho (azul), emissão dos comandos (laranja) e espera pela conclusão dos comandos (amarelo). O sistema atualiza os gráficos na tela continuamente, exibindo um gráfico para cada Activity visível, incluindo a barra de navegação e a de notificações.

Uma linha verde destaca o limite de 16 ms para operações de renderização. Assim, você pode avaliar a taxa de quadros efetiva do aplicativo em relação a uma meta de 60 fps (porque 1/60 de segundo equivale a aproximadamente 16 ms). Se você vir operações que cruzam a linha verde, poderá analisá-las mais a fundo usando o Systrace e outras ferramentas.

Em dispositivos com Android 4.2 e versões posteriores, as opções do desenvolvedor ficam ocultas por padrão. É possível exibi-las a qualquer momento tocando sete vezes em Config. > Sobre o telefone > Número da versão em qualquer dispositivo Android compatível.

Aviso StrictMode para URIs de arquivo

A adição mais recente à ferramenta StrictMode é uma restrição de política que avisa quando seu aplicativo expõe um URI file:// ao sistema ou a outro aplicativo. Em alguns casos, o aplicativo destinatário pode não ter acesso ao caminho de URI file://. Portanto, ao compartilhar arquivos entre aplicativos, é preciso usar um URI content:// (com a permissão apropriada). Essa nova política ajuda você a identificar e corrigir esses casos. Se você está procurando uma maneira conveniente de armazenar e expor arquivos para outros aplicativos, tente usar o provedor de conteúdo FileProvider, disponível na Biblioteca de Suporte.

Android 4.2

Android 4.2 em smartphone e tablet

Este é o Android 4.2, a versão mais recente do Jelly Bean.

O Android 4.2 tem otimizações de desempenho, uma IU de sistema atualizada e novos recursos incríveis para usuários e desenvolvedores. Este documento oferece um resumo das novidades para os desenvolvedores.

Veja o documento das APIs do Android 4.2 para uma visão detalhada das novas APIs para desenvolvedores.

Saiba mais sobre os novos recursos do Jelly Bean para os usuários em www.android.com.

Mais rápido, mais suave, mais responsivo

O Android 4.2 se baseia nas melhorias de desempenho já incluídas no Jelly Bean (tempo de vsync, buffer triplo, latência de toque reduzida e otimização de entrada de CPU) e adiciona novas otimizações que tornam o Android ainda mais rápido.

Melhorias no renderizador 2D acelerado por hardware tornam as animações comuns, como rolagem e deslizamento, mais rápidas e suaves. Em particular, o desenho é otimizado para camadas, recortes e formas específicas (retângulos arredondados, círculos e formas ovais).

Uma variedade de otimizações de renderização do WebView torna a rolagem de páginas da Web mais suave, sem instabilidade e atrasos.

O Renderscript Compute do Android é a primeira plataforma computacional adaptada para ser executada diretamente em uma GPU de dispositivo móvel. Ele usa automaticamente os recursos de computação de GPU sempre que possível, melhorando significativamente o desempenho de processamento gráfico e de imagens. Qualquer aplicativo que use o Renderscript em um dispositivo compatível pode se beneficiar imediatamente dessa integração da GPU sem precisar recompilar.

Interface de usuário refinada e atualizada

O Android 4.2 refina a experiência do usuário do Jelly Bean e oferece os padrões familiares da interface do Android, como a barra de status, a barra do sistema e a janela de notificações para todos os tablets.

Todos os tamanhos de tela agora apresentam a barra de status na parte superior, com acesso suspenso a notificações e um novo menu de Configurações rápidas. A barra do sistema familiar aparece na parte inferior, com botões facilmente acessíveis com qualquer mão. A bandeja de aplicativos também está disponível em todos os tamanhos de tela.

Um tablet, muitos usuários

Agora, vários usuários podem compartilhar um único tablet Android, com acesso conveniente a um espaço dedicado para cada usuário. Os usuários podem alternar para os espaços deles com um único toque na tela de bloqueio.

Em um dispositivo multiusuário, o Android oferece a cada um deles um ambiente separado, incluindo armazenamento em cartão SD emulado específico do usuário. Os usuários também têm os próprios widgets, telas iniciais, contas, configurações, arquivos e aplicativos, que são mantidos separados pelo sistema. Todos os usuários compartilham os principais serviços do sistema, mas o sistema garante que os aplicativos e dados de cada um permaneçam isolados. Na prática, é como se cada um dos vários usuários tivesse o próprio dispositivo Android.

Os usuários podem instalar e desinstalar aplicativos a qualquer momento nos ambientes deles. Para economizar espaço de armazenamento, o Google Play fará o download de um APK somente se ele ainda não tiver sido instalado por outro usuário no dispositivo. Se o aplicativo já estiver instalado, o Google Play registrará a instalação do novo usuário da maneira normal, mas não fará o download de outra cópia do aplicativo. Vários usuários podem executar a mesma cópia de um APK porque o sistema cria uma nova instância para cada usuário, que inclui um diretório de dados específico.

Para desenvolvedores, o suporte multiusuário é transparente: seus aplicativos não precisam fazer nada especial para serem executados normalmente em um ambiente multiusuário, e não é preciso fazer alterações nos seus APKs existentes ou publicados. O sistema gerencia seu aplicativo em cada espaço de usuário, assim como faz em um ambiente de usuário único.

Novas maneiras de envolver os usuários

Widget de bloqueio de tela da Agenda

Você pode estender widgets de aplicativos para que sejam executados na tela de bloqueio, para um acesso instantâneo ao seu conteúdo.

Widgets da tela de bloqueio

No Android 4.2, os usuários podem colocar widgets de aplicativos diretamente nas telas de bloqueio para acesso instantâneo ao conteúdo dos aplicativos favoritos sem precisar desbloquear o dispositivo. Os usuários podem adicionar até cinco widgets na tela de bloqueio, escolhendo entre os widgets fornecidos pelos aplicativos instalados. A tela de bloqueio exibe cada widget no próprio painel, permitindo que os usuários deslizem para a esquerda e para a direita para visualizar diferentes painéis e os respectivos widgets.

Como todos os widgets de aplicativos, os da tela de bloqueio podem exibir qualquer tipo de conteúdo e podem aceitar interação direta com o usuário. Eles podem ser totalmente autônomos, como um widget que oferece controles para tocar música, ou podem permitir que os usuários acessem diretamente uma Activity no aplicativo, depois de desbloquear o dispositivo, se necessário.

Para os desenvolvedores, os widgets da tela de bloqueio oferecem uma nova maneira incrível de envolver os usuários. Eles permitem que você coloque seu conteúdo na frente dos usuários em um local que eles veem com frequência e oferecem mais oportunidades de levar os usuários diretamente ao seu aplicativo.

Você pode aproveitar esse novo recurso criando um novo widget de aplicativo ou estendendo um widget da tela inicial existente. Se seu aplicativo já incluir widgets da tela inicial, você poderá estendê-los à tela de bloqueio com poucas alterações. Para oferecer uma experiência de usuário otimizada, você pode atualizar o widget para usar toda a área da tela de bloqueio, quando disponível, e redimensionar para telas menores, quando necessário. Você também pode adicionar recursos aos seus widgets que possam ser especialmente úteis ou convenientes à tela de bloqueio.

Daydream

O Daydream é um modo de proteção de tela interativo que é iniciado quando o dispositivo de um usuário está ancorado ou em carregamento. Nesse modo, o sistema inicia um daydream, serviço de conteúdo remoto fornecido por um aplicativo instalado, como o protetor de tela do dispositivo. O usuário pode ativar o Daydream no aplicativo Config. e escolher o daydream a ser exibido.

Os daydreams combinam os melhores recursos de planos de fundo interativos e widgets da tela inicial, mas são mais poderosos. Eles permitem que você ofereça qualquer tipo de conteúdo em um contexto completamente novo, com interações do usuário, como ver fotos, abrir áudio ou vídeo ou ir direto para seu aplicativo com um único toque.

Como os daydreams podem ser iniciados automaticamente quando um dispositivo está ancorado ou sendo carregado, eles também oferecem uma ótima maneira de apoiar novos tipos de experiências, como modo de exibição ou leanback, modo de demonstração ou quiosque e "modo de atração", sem necessidade de hardware especial.

Modo protetor de tela Daydream

O Daydream permite criar protetores de tela interativos que exibem qualquer tipo de conteúdo.

Os daydreams são semelhantes às Activities e podem fazer qualquer coisa que a Activity faz, desde renderizar uma hierarquia de IU (sem usar as RemoteViews) até desenhar diretamente usando o Canvas, OpenGL e SurfaceTexture, entre outros. Eles podem abrir vídeo e áudio e até aceitar interação direta com o usuário. No entanto, os daydreams não são Activities, por isso não afetam a pilha de retorno nem aparecem em "Recentes" e não podem ser iniciados diretamente do aplicativo.

A implementação de um daydream é direta e você pode aproveitar os componentes e recursos de IU que já criou para outras partes do seu aplicativo. Você pode disponibilizar vários daydreams em seu aplicativo e oferecer conteúdo e configurações de exibição diferentes para cada um deles.

Compatibilidade com tela externa

O Android 4.2 introduz compatibilidade de plataforma com telas externas que vai muito além do espelhamento. Os aplicativos agora podem direcionar conteúdo exclusivo para uma ou várias telas conectadas a um dispositivo Android. Os aplicativos podem aproveitar isso para oferecer novos tipos de interação e experiências de entretenimento aos usuários.

Gerenciador de tela

Os aplicativos interagem com as telas por meio de um novo serviço de sistema gerenciador de tela. Seu aplicativo pode enumerar as telas e verificar os recursos de cada uma, incluindo tamanho, densidade, nome de exibição, código, compatibilidade com vídeo seguro e muito mais. Seu aplicativo também pode receber retornos de chamada quando forem adicionadas ou removidas telas ou quando os recursos delas forem alterados, a fim de gerenciar melhor seu conteúdo em telas externas.

Janela de apresentação

Para facilitar a exibição de conteúdo em uma tela externa, o framework fornece um novo objeto de IU chamado Presentation, um tipo de caixa de diálogo que representa uma janela para o conteúdo do seu aplicativo em uma tela externa específica. Seu aplicativo fornece apenas a tela a ser usada, um tema para a janela e qualquer conteúdo exclusivo a ser exibido. A Presentation lida com recursos aumentados e renderiza seu conteúdo de acordo com as características da tela de destino.

Você pode assumir o controle total de duas ou mais telas independentes usando a Presentation.

Uma Presentation concede ao seu aplicativo controle total sobre a janela de exibição remota e o conteúdo dela, além de permitir gerenciá-lo com base em eventos de entrada do usuário, como pressionamentos de teclas, gestos e eventos de movimento, entre outros. Você pode usar todas as ferramentas normais para criar uma IU e renderizar conteúdo na Presentation, desde a criação de uma hierarquia de visualização arbitrária até o uso de SurfaceView ou SurfaceTexture para desenhar diretamente na janela para conteúdo de stream ou visualizações da câmera.

Seleção de tela preferencial

Quando várias telas externas estão disponíveis, você pode criar quantas Presentations forem necessárias, com cada uma mostrando conteúdo exclusivo em uma tela específica. Em muitos casos, você pode querer apenas mostrar seu conteúdo em uma única tela externa, mas sempre naquela que for melhor para o conteúdo da Presentation. Para isso, o sistema pode ajudar seu aplicativo a escolher a melhor tela a ser usada.

Para encontrar a melhor tela, seu aplicativo pode consultar o gerenciador de telas sobre a tela preferida da Presentation do sistema e receber retornos de chamada quando essa tela for alterada. Como alternativa, você pode usar o serviço de roteador de mídia, estendido no Android 4.2, para receber notificações quando uma rota de vídeo do sistema for alterada. Seu aplicativo pode exibir o conteúdo por padrão na Activity principal até que uma tela de Presentation preferida seja anexada, momento em que ela pode alternar automaticamente para o conteúdo da Presentation na tela preferida. Seus aplicativos também podem usar MediaRouteActionProvider e MediaRouteButton do roteador de mídia para oferecer IU padrão de seleção de telas.

Conteúdo protegido

Para aplicativos que lidam com conteúdo protegido ou criptografado, a API Display agora informa os recursos de vídeo seguro de telas conectadas. Seu aplicativo consulta uma tela para descobrir se ela oferece uma saída de vídeo segura ou fornece buffers gráficos protegidos e, em seguida, escolhe o stream ou decodificação de conteúdo apropriado para tornar o conteúdo visível. Para mais segurança em objetos SurfaceView, seu aplicativo pode definir uma sinalização segura para indicar que o conteúdo nunca deve aparecer em capturas de tela ou em uma saída de tela não segura, mesmo quando espelhada.

Display sem fio

A partir do Android 4.2, os usuários de dispositivos compatíveis podem se conectar a uma tela externa via Wi-Fi usando o Display Wi-Fi, uma solução de display sem fio ponto a ponto em conformidade com o programa de certificação Miracast™. Quando um display sem fio é conectado, os usuários podem transmitir qualquer tipo de conteúdo para a tela grande, incluindo fotos, jogos e mapas, entre outros itens.

Os aplicativos podem usar as telas sem fio da mesma forma que fazem com outras telas externas, e não são necessárias outras ações. O sistema gerencia a conexão de rede e transmite sua Presentation ou outro conteúdo do aplicativo para a tela sem fio conforme necessário.

Compatibilidade nativa com RTL

Espelhamento de layout RTL

Os desenvolvedores agora podem espelhar layouts para idiomas RTL.

O Android 4.2 introduz compatibilidade nativa completa para layouts RTL (da direita para a esquerda), incluindo o espelhamento de layout. Com a compatibilidade nativa, você pode fornecer a mesma excelente experiência do aplicativo a todos os usuários, independentemente de o idioma deles usar um script com leitura da direita para a esquerda ou da esquerda para a direita.

Quando o usuário alternar o idioma do sistema para um script da direita para a esquerda, o sistema agora fornecerá o espelhamento automático dos layouts de UI do aplicativo e de todos os widgets de visualização, além do espelhamento bidirecional de elementos de texto para leitura e entrada de caracteres.

Seu aplicativo pode aproveitar o espelhamento de layout RTL com o mínimo de esforço. Se você quiser que o aplicativo seja espelhado, basta declarar um novo atributo no manifesto dele e alterar todas as propriedades de layout "esquerda/direita" para novos equivalentes "início/fim". Em seguida, o sistema lida com o espelhamento e a exibição da IU conforme necessário.

Para um controle preciso da IU do aplicativo, o Android 4.2 inclui novas APIs que permitem gerenciar a direção do layout, a direção do texto, o alinhamento do texto, a gravidade e a direção do local nos componentes de View. Você pode até criar versões personalizadas de layout, drawables e outros recursos para exibição quando um script da direita para a esquerda estiver em uso.

Para ajudar a depurar e otimizar seus layouts personalizados da direita para a esquerda, a ferramenta HierarchyViewer agora permite que você veja as propriedades de início/fim, a direção do layout, a direção do texto e o alinhamento de texto para todas as Views na hierarquia.

Melhorias para idiomas internacionais

O Android 4.2 inclui uma variedade de otimizações de fontes e caracteres para usuários internacionais:

  • Para usuários coreanos, uma nova opção de fonte está disponível: Nanum (나눔 글꼴) Gothic, uma fonte unicode projetada especialmente para o script de idioma coreano.
  • Compatibilidade aprimorada com textos verticais japoneses exibidos em WebViews.
  • Melhoria do kerning e posicionamento para as fontes padrão índicas, tailandesas, árabes e hebraicas.

O teclado Android padrão também inclui um conjunto atualizado de dicionários:

  • Dicionários aprimorados para francês (com compatibilidade com bigrama), inglês e russo
  • Novos dicionários para dinamarquês, grego, finlandês, lituano, letão, polonês, esloveno, sérvio, sueco e turco

Novas maneiras de criar uma IU bonita

Fragments aninhados

Para ter mais controle sobre seus componentes de interface do usuário e torná-los mais modulares, o Android 4.2 permite aninhar Fragments dentro de Fragments. Um novo gerenciador de Fragment permite inserir quaisquer outros Fragments como nós filhos na hierarquia de View.

É possível usar Fragments aninhados de diversas maneiras, mas eles são especialmente úteis para implementar componentes de IU reutilizáveis e dinâmicos dentro de outro componente de IU desse mesmo tipo. Por exemplo, se você usar o ViewPager para criar fragmentos que deslizam para a esquerda e para a direita, agora será possível inserir fragmentos em cada Fragment do pager de visualização.

Para aproveitar ao máximo os Fragments aninhados no aplicativo, esse recurso foi adicionado à versão mais recente da Biblioteca de Suporte do Android.

Acessibilidade

Agora, o sistema ajuda os serviços de acessibilidade a diferenciar a exploração por toque dos gestos de acessibilidade enquanto estão no modo de exploração por toque. Quando um usuário toca na tela, o sistema notifica o serviço de que uma interação de toque genérica foi iniciada. Em seguida, ele rastreia a velocidade da interação por toque e determina se é uma exploração por toque (lenta) ou um gesto de acessibilidade (rápido) e notifica o serviço. Quando a interação por toque termina, o sistema notifica o serviço.

O sistema fornece uma nova opção de acessibilidade global que permite que um serviço de acessibilidade abra o menu "Configurações rápidas" com base em uma ação do usuário. Também foi adicionado ao Android 4 um novo tipo de feedback sobre acessibilidade para dispositivos em braille.

Para oferecer informações aos serviços de acessibilidade sobre o significado das Views para os devidos fins, o framework fornece novas APIs para associar uma View como etiqueta de outra. A etiqueta para cada View está disponível para serviços de acessibilidade por meio de AccessibilityNodeInfo.

Câmera aprimorada com HDR

O Android 4.2 introduz uma nova interface de hardware de câmera e pipeline para melhorar o desempenho. Em dispositivos compatíveis, os aplicativos podem usar um novo modo de cena de câmera HDR para capturar uma imagem usando técnicas de High Dynamic Range.

Além disso, o framework passou a fornecer uma API para permitir que os aplicativos verifiquem se o som do obturador da câmera pode ser desativado. Os aplicativos podem permitir que o usuário desative o som ou escolha uma alternativa para o som padrão do obturador, o que é recomendado.

Computação Renderscript

No Android 4.2, a computação Renderscript apresenta novos recursos de script, novas otimizações e integração direta de GPU para o mais alto desempenho em operações de computação.

Filterscript

O Filterscript é um subconjunto do Renderscript focado no processamento otimizado de imagens em uma ampla variedade de chipsets de dispositivos. Os desenvolvedores podem gravar operações de processamento de imagens no Filterscript usando a API de tempo de execução Renderscript padrão, mas com restrições mais rígidas que garantam maior compatibilidade e otimização aprimorada em CPUs, GPUs e DSPs.

O Filterscript é ideal para operações de processamento simples de imagens e computação com aceleração de hardware, como aquelas que podem ser gravadas para os sombreadores de fragmentos OpenGL ES. Como ele impõe um conjunto moderado de restrições ao hardware, as operações são otimizadas e aceleradas em mais tipos de chipsets de dispositivos. Qualquer aplicativo voltado à API de nível 17 ou posterior pode usar o Filterscript.

Intrínsecos de script

No Android 4.2, o Renderscript passa a ser compatível com um conjunto de intrínsecos de script, que são primitivos de filtragem pré-implementados e acelerados para reduzir a quantidade de código que você precisa escrever e para garantir que o aplicativo tenha o máximo ganho de desempenho possível.

Os intrínsecos estão disponíveis para mesclagem, desfoque, matriz de cores, convolução 3x3 e 5x5, tabela de consulta por canal e conversão de um buffer Android YUV em RGB.

Grupos de scripts

Agora, é possível criar grupos de scripts Renderscript e executar todos com uma única chamada, como se fossem parte de um único script. Isso permite que o Renderscript otimize a execução dos scripts de uma maneira que não seria possível se os scripts fossem executados individualmente.

Gráfico de otimizações do RenderScript

Comparativos de processamento de imagem Renderscript são executados em diferentes versões da plataforma Android (Android 4.0, 4.1 e 4.2) apenas na CPU em um dispositivo Galaxy Nexus.

Comparativos de processamento de imagem Renderscript entre operações executadas com GPU + CPU e aquelas executadas somente na CPU no mesmo dispositivo Nexus 10.

Se você tiver um gráfico acíclico direcionado de operações Renderscript para executar, poderá usar uma classe "builder" para criar um grupo de scripts que defina as operações. No tempo de execução, o Renderscript otimiza a ordem de execução e as conexões entre essas operações para um desempenho melhor.

Melhorias contínuas de otimização

Quando você usa o Renderscript para operações de computação, seus aplicativos se beneficiam de melhorias contínuas de desempenho e otimização no próprio mecanismo Renderscript, sem qualquer impacto no código do aplicativo ou necessidade de recompilação.

À medida que a otimização melhora, suas operações são executadas de forma mais rápida e em mais chipsets, sem nenhum trabalho para você. O gráfico à direita destaca o ganho de desempenho proporcionado pelas melhorias contínuas de otimização do Renderscript em versões sucessivas da plataforma Android.

Computação em GPU

A computação com Renderscript é a primeira plataforma computacional adaptada para ser executada diretamente em uma GPU de dispositivo móvel. Agora, ela usa automaticamente os recursos de computação de GPU sempre que possível para melhorar o desempenho. Com a integração da GPU, até mesmo as computações mais complexas para processamento de gráficos ou imagens podem ser executadas com um desempenho muito melhor.

Qualquer aplicativo que use o Renderscript em um dispositivo compatível pode se beneficiar imediatamente dessa integração da GPU, sem necessidade de recompilar. O tablet Nexus 10 é o primeiro dispositivo compatível com essa integração.

Novas opções do desenvolvedor integradas

O sistema Android 4.2 inclui várias novas opções de desenvolvedor que facilitam a criação de aplicativos com boa aparência e desempenho. As novas opções expõem recursos para depurar e criar um perfil no seu aplicativo em qualquer dispositivo ou emulador.

Em dispositivos que executam o Android 4.2, as opções do desenvolvedor ficam ocultas por padrão, ajudando a criar uma experiência melhor para os usuários. É possível exibir essas opções a qualquer momento tocando sete vezes em Config. > Sobre o telefone > Número da versão em qualquer dispositivo Android compatível.

As novas opções do desenvolvedor oferecem mais formas de criar um perfil e fazer depuração em um dispositivo.

Veja as novas opções do desenvolvedor no Android 4.2:

  • Obter relatório de bugs: faz uma captura de tela imediatamente, envia informações sobre o estado do dispositivo para o armazenamento de arquivos local e as anexa a uma nova mensagem de e-mail de saída.
  • Relat. de bugs menu do b. ligar: adiciona uma nova opção ao menu de energia do dispositivo e às configurações rápidas para gerar um relatório de bugs (veja acima).
  • Verificar apps por USB: permite desativar as verificações de aplicativos para o sideload por USB, mantendo a verificação de outras fontes, como o navegador. Isso pode acelerar o processo de desenvolvimento e ao mesmo tempo manter o recurso de segurança ativado.
  • Atualizações de camadas de hardware: as camadas de hardware piscam em verde quando são atualizadas.
  • Mostrar overdraw da GPU: destaca as áreas de overdraw da GPU.
  • Forçar 4x MSAA: permite 4x MSAA em aplicativos Open GL ES 2.0.
  • Simular telas secundárias: cria uma ou mais janelas de sobreposição não seguras na tela atual para uso como uma tela remota simulada. Você pode controlar o tamanho e a densidade da tela simulada.
  • Ativar rastream. OpenGL: permite rastrear a execução de OpenGL usando Logcat, Systrace ou callstack em glGetError.

Novas tecnologias de plataforma

O Android 4.2 inclui uma variedade de tecnologias de plataforma aprimoradas e novas para oferecer compatibilidade com casos de uso de comunicações inovadores em uma ampla gama de dispositivos de hardware. Na maioria dos casos, as novas tecnologias de plataforma e as melhorias não afetam diretamente seus aplicativos para que você possa se beneficiar deles sem qualquer modificação.

Melhorias na segurança

Cada versão do Android inclui dezenas de melhorias de segurança para proteger os usuários. Veja algumas das melhorias no Android 4.2:

  • Verificação de aplicativos: os usuários podem optar por ativar a verificação de aplicativos para que eles sejam filtrados por um verificador antes da instalação. A verificação de aplicativos poderá alertar o usuário se ele tentar instalar um aplicativo que possa ser perigoso. Se um aplicativo for especialmente nocivo, ela poderá bloquear a instalação.
  • Mais controle de SMS premium: o Android fornecerá uma notificação se um aplicativo tentar enviar um SMS para um código curto que usa serviços premium, o que pode gerar cobranças adicionais. O usuário poderá escolher se quer permitir que o aplicativo envie a mensagem ou a bloqueie.
  • VPN sempre ativa: a VPN pode ser configurada para que os aplicativos não tenham acesso à rede até que uma conexão VPN seja estabelecida. Isso impede que os aplicativos enviem dados por outras redes.
  • Fixação de certificados: a implementação libcore SSL agora é compatível com a fixação de certificados. Os domínios fixados receberão uma falha na validação do certificado se ele não encadear um conjunto de certificados esperados. Isso protege contra possíveis comprometimentos de autoridades de certificação.
  • Exibição aprimorada de permissões do Android: as permissões foram organizadas em grupos que são compreendidos com mais facilidade pelos usuários. Durante a análise das permissões, o usuário pode clicar na permissão para ver informações mais detalhadas sobre a permissão.
  • Aumento da proteção do instalId: o daemon installd não é executado como usuário raiz, reduzindo a possível superfície de ataque para escalonamento de privilégios de raiz.
  • Aumento da proteção do script init: scripts init agora aplicam a semântica O_NOFOLLOW para evitar ataques relacionados a links simbólicos.
  • FORTIFY_SOURCE: o Android agora implementa FORTIFY_SOURCE, que é usado por bibliotecas e aplicativos do sistema para evitar corrupção de memória.
  • Configuração padrão do ContentProvider: os aplicativos voltados ao nível de API 17 terão "export" definido como "false" por padrão para cada ContentProvider, reduzindo a superfície de ataque padrão dos aplicativos.
  • Criptografia: modificação das implementações padrão de SecureRandom e Cipher.RSA para uso do OpenSSL. Agora, há compatibilidade com SSLSocket para TLSv1.1 e TLSv1.2 que usem OpenSSL 1.0.1
  • Correções de segurança: as bibliotecas de código aberto atualizadas com correções de segurança incluem WebKit, libpng, OpenSSL e LibXML. O Android 4.2 também inclui correções de vulnerabilidades específicas do sistema operacional. Foram fornecidas informações sobre essas vulnerabilidades aos membros do Open Handset Alliance, e as correções estão disponíveis no Android Open Source Project. Para melhorar a segurança, alguns dispositivos com versões anteriores do Android também podem incluir essas correções.

Nova pilha Bluetooth

O Android 4.2 introduz uma nova pilha Bluetooth otimizada para uso com dispositivos Android. A nova pilha Bluetooth, desenvolvida em colaboração entre o Google e a Broadcom, substitui a pilha com base no BlueZ e oferece compatibilidade e confiabilidade aprimoradas.

Áudio de baixa latência

O Android 4.2 melhora a compatibilidade com reprodução de áudio de baixa latência a partir das melhorias feitas na versão do Android 4.1 para a latência de saída de áudio usando o OpenSL ES, as APIs Soundpool e do gerador de tons. Essas melhorias dependem da compatibilidade do hardware: os dispositivos que oferecem esses recursos de áudio de baixa latência podem anunciar a compatibilidade aos aplicativos por meio de uma constante de recurso de hardware. Novas APIs AudioManager são fornecidas para consultar a taxa de amostragem de áudio nativo e o tamanho do buffer para uso em dispositivos que reivindicam esse recurso.

Nova interface de hardware da câmera

O Android 4.2 introduz uma nova implementação da pilha de câmera. O subsistema da câmera inclui as implementações dos componentes no pipeline da câmera, como a captura no modo de fotos em sequência com controles de processamento.

Nova interface de hardware NFC e interface do controlador

O Android 4.2 introduz suporte para controladores com base no padrão NCI do NFC-Forum. O NCI fornece um protocolo de comunicação padrão entre um Controlador NFC (NFCC, na sigla em inglês) e um host de dispositivo, e a nova pilha NFC desenvolvida em colaboração entre o Google e a Broadcom é compatível com ele.

Otimizações do ambiente de execução Dalvik

O ambiente de execução Dalvik inclui melhorias de desempenho e segurança em uma ampla gama de arquiteturas:

  • Compatibilidade com x86 JIT da Intel e com MIPS JIT do MIPS
  • Parâmetros de coleta de lixo otimizados para dispositivos com mais de 512 MB
  • Implementações padrão de SecureRandom e Cipher (o RSA agora usa o OpenSSL)
  • Compatibilidade com SSLSocket para TLSv1.1 e TLSv1.2 via OpenSSL 1.0.1
  • Nova compatibilidade intrínseca com métodos StrictMath abs, min, max e sqrt
  • BouncyCastle atualizado para 1.47
  • zlib atualizado para 1.27
  • dlmalloc atualizado para 2.8.6

Android 4.1

Este é o Android 4.1, a primeira versão do Jelly Bean.

O Android 4.1 é a versão mais veloz e avançada do Android. Fizemos melhorias em toda a plataforma e adicionamos novos recursos incríveis para usuários e desenvolvedores. Este documento oferece um resumo das novidades para os desenvolvedores.

Veja o documento das APIs do Android 4.1 para uma visão detalhada das novas APIs para desenvolvedores.

Saiba mais sobre os recursos do Jelly Bean para usuários em www.android.com.

Mais rápido, mais suave, mais responsivo

O Android 4.1 foi otimizado para oferecer o melhor desempenho do Android e a menor latência de toque em uma interface de usuário simples e intuitiva.

Para garantir uma taxa de quadros consistente, o Android 4.1 estende o tempo de vsync para todos os desenhos e animações feitos pelo framework do Android. Tudo funciona em sincronia com um sinal de funcionamento de vsync de 16 milissegundos (renderização de aplicativos, eventos de toque, composição de tela e atualização de exibição) para que os quadros não fiquem adiantados ou atrasados.

O Android 4.1 também adiciona buffer triplo ao pipeline de gráficos para uma renderização mais consistente, que faz tudo parecer mais suave, da rolagem à paginação e animações.

O Android 4.1 reduz a latência do toque não apenas sincronizando o toque com o tempo de vsync, mas também prevendo onde seu dedo estará no momento da atualização da tela. Isso resulta em uma resposta de toque mais reativa e uniforme. Além disso, após períodos de inatividade, o Android aplica um aumento de entrada da CPU ao próximo evento de toque para garantir que não haja latência.

As ferramentas podem ajudar você a conseguir o melhor desempenho dos aplicativos. O Android 4.1 foi desenvolvido para funcionar com uma nova ferramenta chamada systrace, que coleta dados diretamente do kernel do Linux para produzir uma visão geral das atividades do sistema. Os dados são representados como um grupo de gráficos de séries temporais empilhadas verticalmente para ajudar a isolar interrupções de renderização e outros problemas. A ferramenta já está disponível no SDK do Android (ferramentas R20 ou posteriores).

Acessibilidade aprimorada

As novas APIs para serviços de acessibilidade permitem lidar com gestos e gerenciar o foco da acessibilidade à medida que o usuário percorre os elementos na tela e os botões de navegação usando gestos de acessibilidade, acessórios e outras entradas. O sistema Talkback e o reconhecimento por toque foram reprojetados para usar o foco de acessibilidade a fim de facilitar o uso e oferecer um conjunto completo de APIs para desenvolvedores.

Os serviços de acessibilidade podem vincular os próprios tutoriais às configurações de acessibilidade para ajudar os usuários a configurar e usar os serviços.

Os aplicativos que usam componentes padrão da View herdam a compatibilidade com os novos recursos de acessibilidade automaticamente, sem nenhuma alteração no código. Os aplicativos que usam Views personalizadas podem usar novas APIs de nó de acessibilidade para indicar as partes da View que são de interesse dos serviços de acessibilidade.

Compatibilidade com usuários internacionais

Compatibilidade com texto bidirecional e outros idiomas

O Android 4.1 ajuda você a alcançar mais usuários por meio da compatibilidade com texto bidirecional nos elementos TextView e EditText. Os aplicativos podem exibir ou editar texto nos scripts da esquerda para a direita ou da direita para a esquerda. Também podem usar novas localidades em árabe e hebraico e fontes associadas.

Veja outros tipos de compatibilidade com novos idiomas:

  • Idiomas índicos adicionais: kannada, telugu e malaiala
  • Os novos caracteres emoji da versão 6.0 do Unicode
  • Melhor compatibilidade com glifos para usuários japoneses (renderiza versões de glifos específicas do japonês quando o idioma do sistema é configurado como japonês)
  • Glifos em árabe otimizados para WebViews, além de glifos em árabe para TextViews
  • Compatibilidade com texto vertical em WebViews, incluindo texto Ruby e glifos de texto vertical adicionais
  • O recurso negrito sintético já está disponível para todas as fontes que não têm glifos em negrito

Keymaps instaláveis pelo usuário

A plataforma agora é compatível com mapas de teclado instaláveis pelo usuário, como teclados internacionais adicionais e tipos especiais de layout. Por padrão, o Android 4.1 inclui 27 keymaps internacionais para teclados, incluindo o Dvorak. Quando os usuários conectam um teclado, eles podem acessar o aplicativo Config. e selecionar um ou mais atalhos de teclado que querem usar. Ao digitar, os usuários podem alternar entre os atalhos de teclado usando um atalho (ctrl-space).

É possível criar um aplicativo para publicar atalhos de teclado adicionais no sistema. O APK pode incluir os recursos de layout de teclado com base no formato de atalhos de teclado padrão do Android. O aplicativo é capaz de oferecer mais layouts de teclado ao usuário declarando um broadcast receiver adequado para ACTION_QUERY_KEYBOARD_LAYOUTS no manifesto.

Novas maneiras de criar uma IU bonita

Os desenvolvedores podem criar estilos de notificação personalizados, como os mostrados nos exemplos acima, para exibir conteúdo e ações avançados.

Notificações expansíveis

As notificações são um recurso exclusivo e famoso do Android. Os desenvolvedores podem usá-las para mostrar informações importantes ou baseadas em tempo aos usuários na barra de notificações, fora da IU normal do aplicativo.

O Android 4.1 oferece uma atualização importante para o framework de notificações do Android. Os aplicativos agora podem exibir notificações maiores e mais detalhadas para os usuários, que podem ser expandidas e recolhidas com um gesto de pinça ou deslizamento. As notificações são compatíveis com novos tipos de conteúdo, incluindo fotos, têm uma prioridade configurável e podem até incluir várias ações.

Por meio de um criador de notificações aprimorado, os aplicativos podem criar notificações que usam uma área maior, com até 256 dp de altura. Há três estilos de notificação baseados em modelos disponíveis:

  • BigTextStyle: uma notificação que inclui um objeto TextView de várias linhas.
  • BigInboxStyle: uma notificação que mostra qualquer tipo de lista, como mensagens, títulos e assim por diante.
  • BigPictureStyle: uma notificação que mostra conteúdo visual, como um bitmap.

Além dos estilos baseados em modelos, você pode criar seus próprios estilos de notificação usando qualquer View remota.

Os aplicativos podem adicionar até três ações a uma notificação, que são exibidas abaixo do conteúdo dela. As ações permitem que os usuários respondam diretamente às informações da notificação de maneiras alternativas, como por e-mail ou por telefone, sem abrir o aplicativo.

Com as notificações expansíveis, os aplicativos podem fornecer mais informações ao usuário, sem esforço e sob demanda. Os usuários permanecem no controle e podem tocar em qualquer notificação e mantê-la pressionada para ter informações sobre o remetente e, opcionalmente, desativar outras notificações do aplicativo.

Os widgets de aplicativos podem ser redimensionados automaticamente para caber na tela inicial e carregar conteúdos diferentes conforme os tamanhos são alterados.

Widgets de aplicativos redimensionáveis

O Android 4.1 apresenta widgets de aplicativos aprimorados que podem ser redimensionados automaticamente, com base no local em ficam na tela inicial, no tamanho definido pelo usuário e no espaço disponível na tela inicial. As novas APIs de widget de aplicativos permitem que você use isso para otimizar o conteúdo do widget do seu aplicativo à medida que o tamanho dos widgets muda.

Quando um widget muda de tamanho, o sistema notifica o provedor de widget do aplicativo host, que pode recarregar o conteúdo do widget conforme necessário. Por exemplo, um widget pode exibir imagens maiores e mais avançadas, bem como recursos ou opções adicionais. Os desenvolvedores ainda podem manter o controle sobre os tamanhos máximo e mínimo e podem atualizar outras opções de widget sempre que necessário.

Você também pode fornecer layouts de paisagem e retrato separados para seus widgets, que o sistema insufla conforme apropriado quando a orientação da tela muda.

Agora, os widgets do aplicativo podem ser exibidos em telas de início de terceiros e outros aplicativos host por meio de um novo intent de vinculação (AppWidgetManager.ACTION_APPWIDGET_BIND).

O Android 4.1 facilita o gerenciamento da navegação para cima que está disponível para os usuários a partir dos seus aplicativos e ajuda a garantir uma experiência consistente.

Você pode definir a navegação para cima para componentes individuais de Activity da IU adicionando um novo atributo XML ao arquivo de manifesto do aplicativo. No tempo de execução, quando Activities são ativadas, o sistema extrai do arquivo de manifesto a árvore de navegação para cima e cria automaticamente a navegação para cima na barra de ações. Os desenvolvedores que declaram a navegação para cima no manifesto não precisam mais gerenciar a navegação por retorno de chamada no tempo de execução, embora também possam fazê-lo, se necessário.

Também está disponível uma nova classe TaskStackBuilder, que permite montar rapidamente uma pilha de tarefas sintética para inicialização imediata ou para ser usada quando uma Activity é iniciada a partir de um PendingIntent. Criar uma pilha de tarefas sintéticas é especialmente útil quando os usuários iniciam Activities a partir de visualizações remotas, como widgets e notificações na tela inicial, porque permite que o desenvolvedor forneça uma experiência consistente e gerenciada na navegação de retorno.

Animações fáceis para inicialização de Activity

É possível usar uma nova classe auxiliar, ActivityOptions, para criar e controlar a animação exibida quando você inicia suas Activities. Por meio da classe auxiliar, você pode especificar recursos de animação personalizada a serem usados quando a atividade for iniciada ou solicitar novas animações de zoom que iniciem a partir de qualquer retângulo especificado na tela e que opcionalmente inclua um bitmap de miniatura.

Transições para os modos "Luzes apagadas" e "Tela cheia"

Novos sinalizadores de IU do sistema na View permitem a transição limpa de uma IU normal (com barra de ação, barra de navegação e barra do sistema visíveis) para "modo luzes apagadas" (com barra de status e barra de ação ocultas e barra de navegação esmaecida) ou "modo de tela cheia" (com barra de status, barra de ação e barra de navegação todas ocultas).

Novos tipos de Views remotas

Agora os desenvolvedores podem usar visualizações GridLayout e ViewStub nos widgets e notificações da tela inicial. O GridLayout permite que você estruture o conteúdo das suas visualizações remotas e gerencie alinhamentos de visualizações filhas com uma hierarquia de IU mais superficial. ViewStub é uma View invisível, de tamanho zero, que pode ser usada para inflar lentamente recursos de layout no tempo de execução.

Visualização do plano de fundo interativo

O Android 4.1 torna mais fácil para os usuários encontrar e instalar planos de fundo interativos de aplicativos que os incluem. Se seu aplicativo inclui planos de fundo interativos, você pode iniciar uma Activity (ACTION_CHANGE_LIVE_WALLPAPER) que mostra ao usuário uma visualização do plano de fundo interativo do próprio aplicativo. A partir da visualização, os usuários podem carregar diretamente o plano de fundo interativo.

Fotos de contato de alta resolução

Com o Android 4.1, você pode armazenar fotos de contato com até 720 x 720, tornando os contatos ainda mais ricos e pessoais. Os aplicativos podem armazenar e recuperar fotos de contato nesse tamanho ou usar qualquer outro tamanho necessário. O tamanho máximo de foto compatível em dispositivos específicos pode variar. Por isso, os aplicativos devem consultar o provedor de contatos integrado no tempo de execução para descobrir o tamanho máximo do dispositivo atual.

Novos tipos de entrada e recursos

Saiba mais sobre os dispositivos adicionados e removidos

Aplicativos podem se registrar para serem notificados quando qualquer novo dispositivo de entrada estiver conectado, por USB, Bluetooth ou qualquer outro tipo de conexão. Eles podem usar essas informações para alterar o estado ou os recursos conforme necessário. Por exemplo, um jogo pode receber notificação de que um novo teclado ou joystick foi conectado, indicando a presença de um novo jogador.

Consultar os recursos dos dispositivos de entrada

O Android 4.1 inclui APIs que permitem que aplicativos e jogos aproveitem todos os dispositivos de entrada que estão conectados e disponíveis.

Os aplicativos podem consultar o gerenciador de dispositivos para enumerar todos os dispositivos de entrada conectados no momento e aprender sobre os recursos de cada um deles.

Controlar a vibração em dispositivos de entrada

Entre outros recursos, os aplicativos podem usar qualquer serviço de vibrador associado a um dispositivo de entrada conectado, como os controles com Rumble Pak.

Animação e gráficos

Vsync para aplicativos

A extensão do vsync em todo o framework do Android leva a uma taxa de quadros mais consistente e a uma interface de usuário suave e estável. Para que os aplicativos também sejam beneficiados, o Android 4.1 estende o tempo de vsync para todos os desenhos e animações iniciados pelos aplicativos. Isso permite que eles otimizem as operações na linha de execução de IU e fornece uma base de tempo estável para a sincronização.

Os aplicativos podem aproveitar o tempo de vsync gratuitamente por meio do framework de animação do Android. Agora, a estrutura de animação usa o tempo de vsync para gerenciar automaticamente a sincronização entre os animadores.

Para usos especializados, os aplicativos podem acessar o tempo de vsync por meio de APIs expostas pela nova classe Choreographer. Os aplicativos podem solicitar invalidação no próximo quadro de vsync. Essa é uma boa maneira de programar animações quando o aplicativo não estiver usando o framework de animação. Para usos mais avançados, os aplicativos podem publicar um retorno de chamada que a classe Choreographer executará no próximo quadro.

Novas ações de animação e tipos de transição

A estrutura de animação agora permite definir as ações de início e fim a serem executadas nas animações ViewPropertyAnimator, para ajudar a sincronizá-las com outras animações ou ações no aplicativo. A ação pode executar qualquer objeto executável. Por exemplo, o executável pode determinar outra animação para iniciar quando a anterior terminar.

Agora você também pode especificar que um ViewPropertyAnimator use uma camada durante a animação. Anteriormente, a prática recomendada era animar visualizações complicadas configurando uma camada antes de iniciar uma animação e depois manipular um evento onAnimationEnd() para remover a camada quando a animação terminasse. Agora, o método withLayer() no ViewPropertyAnimator simplifica esse processo com uma única chamada de método.

Um novo tipo de transição no LayoutTransition permite automatizar animações em resposta a todas as alterações de layout em um ViewGroup.

Novos tipos de conectividade

Android Beam

O Android Beam é uma tecnologia conhecida baseada em NFC que permite aos usuários compartilhar instantaneamente, apenas aproximando dois telefones com NFC ativada.

No Android 4.1, o Android Beam facilita o compartilhamento de imagens, vídeos ou outros payloads ao usar o Bluetooth para a transferência de dados. Quando o usuário aciona uma transferência, o Android Beam passa da NFC para o Bluetooth, o que facilita muito o gerenciamento da transferência de um arquivo de um dispositivo para outro.

Descoberta de serviços por rede Wi-Fi

O Android 4.1 passa a ser compatível com a descoberta de serviços baseada em DNS multicast, que permite que os aplicativos encontrem e se conectem a serviços oferecidos por dispositivos pares por meio de redes Wi-Fi, incluindo dispositivos móveis, impressoras, câmeras, players de mídia e outros. Os desenvolvedores podem aproveitar a descoberta de serviços por rede Wi-Fi para criar jogos multiplataforma ou jogos e experiências de aplicativos.

Usando a API de descoberta de serviços, os aplicativos podem criar e registrar qualquer tipo de serviço, para que qualquer outro dispositivo com NSD ativado o descubra. O serviço é anunciado por multicast na rede usando um identificador de string legível, que permite ao usuário identificar mais facilmente o tipo de serviço.

Dispositivos de consumo podem usar a API para verificar e descobrir serviços disponíveis em dispositivos conectados à rede Wi-Fi local. Após a descoberta, os aplicativos podem usar a API para resolver o serviço para um endereço IP e uma porta por meio dos quais ele pode estabelecer uma conexão de soquete.

Você pode aproveitar essa API para criar novos recursos nos seus aplicativos. Por exemplo, você pode permitir que os usuários se conectem a uma webcam, impressora ou aplicativo em outro dispositivo móvel compatível com conexões Wi-Fi ponto a ponto.

Descoberta de serviços por Wi-Fi P2P

A Ice Cream Sandwich passou a ser compatível com Wi-Fi ponto a ponto (P2P, na sigla em inglês), uma tecnologia que permite que os aplicativos descubram e façam pareamento diretamente, por meio de uma conexão ponto a ponto com largura de banda alta (em conformidade com o programa de certificação Wi-Fi Direct™ da Alliance). O Wi-Fi P2P é uma maneira ideal de compartilhar mídia, fotos, arquivos e outros tipos de dados e sessões, mesmo quando não há rede celular ou Wi-Fi disponível.

O Android 4.1 leva o Wi-Fi P2P ainda mais longe, acrescentando compatibilidade com a API para descoberta de serviços pré-associados. A descoberta de serviço pré-associados permite que seus aplicativos recebam informações mais úteis de dispositivos próximos sobre os serviços compatíveis antes de tentarem se conectar. Os aplicativos podem iniciar a descoberta de um serviço específico e filtrar a lista de dispositivos detectados para aqueles que realmente são compatíveis com o serviço ou o aplicativo de destino.

Por exemplo, isso significa que seu aplicativo pode descobrir apenas dispositivos que são "impressoras" ou que têm um jogo específico disponível, em vez de descobrir todos os dispositivos P2P Wi-Fi próximos. Por outro lado, seu aplicativo pode anunciar o serviço que fornece para outros dispositivos, que podem descobri-lo e negociar uma conexão. Isso simplifica muito a descoberta e o pareamento para os usuários e permite que os aplicativos aproveitem o Wi-Fi P2P com mais eficiência.

Com a descoberta de serviços por Wi-Fi P2P, você pode criar aplicativos e jogos multijogador que compartilham fotos, vídeos, jogabilidade, placares ou quase tudo, sem precisar de Internet ou rede móvel. Os usuários podem se conectar usando apenas uma conexão P2P direta, o que evita o uso da largura de banda móvel.

Gerenciamento de largura de banda da rede

O Android 4.1 ajuda os aplicativos a gerenciar o uso de dados adequadamente quando o dispositivo está conectado a uma rede limitada, incluindo o tethering a um ponto de acesso móvel. Os aplicativos podem consultar se a rede atual é limitada antes de iniciar um download grande que possa ficar relativamente caro para o usuário. Por meio da API, agora você pode ter uma ideia clara de quais redes são sensíveis ao uso de dados e gerenciar sua atividade de rede de acordo.

Novos recursos de mídia

Acesso ao codec de mídia

O Android 4.1 oferece acesso de baixo nível a codecs de hardware e software da plataforma. Os aplicativos podem consultar o sistema para descobrir quais codecs de mídia de baixo nível estão disponíveis no dispositivo e depois usá-los como necessário. Por exemplo, você pode criar várias instâncias de um codec de mídia, enfileirar buffers de entrada e receber buffers de saída em retorno. Além disso, o framework de codec de mídia é compatível com conteúdo protegido. Os aplicativos podem consultar um codec disponível que seja capaz de abrir conteúdo protegido com uma solução de DRM disponível no dispositivo.

Áudio USB

A compatibilidade com saída de áudio USB permite que os fornecedores de hardware criem hardware, como estações de áudio que tenham interface com dispositivos Android. Essa funcionalidade também é exposta com o Android Open Accessory Development Kit (ADK) para dar a todos os desenvolvedores a chance de criar o próprio hardware.

Ativação de gravação de áudio

O Android agora permite acionar a gravação de áudio com base na conclusão de uma faixa de reprodução de áudio. Isso é útil para situações como tocar um tom para que os usuários comecem a falar para gravar as vozes. Esse recurso ajuda a sincronizar a gravação para não gravar o áudio que está sendo reproduzido no momento e impede que as gravações sejam iniciadas com muito atraso.

Áudio multicanal

O Android 4.1 é compatível com áudio multicanal em dispositivos que têm saída de áudio multicanal por meio da porta HDMI. O áudio multicanal permite que você ofereça experiências de rich media aos usuários para aplicativos como jogos, aplicativos de música e players de vídeo. Para dispositivos que não possuem hardware compatível, o Android automaticamente faz o downmix do áudio para o número de canais aceitos pelo dispositivo (geralmente estéreo).

O Android 4.1 também acrescenta compatibilidade integrada com codificação/decodificação de áudio AAC 5.1.

Pré-processamento de áudio

Os desenvolvedores podem aplicar efeitos de pré-processamento ao áudio que está sendo gravado, como aplicar supressão de ruído para melhorar a qualidade da gravação de voz, cancelamento de eco acústico e controle de ganho automático para áudio com níveis de volume inconsistentes. Aplicativos que exigem alta qualidade e gravação de áudio limpa serão beneficiados por esses pré-processadores.

Encadeamento de áudio

O MediaPlayer é compatível com encadeamento de streams de áudio para que seja possível escutar arquivos de áudio sem pausas. Isso é útil para aplicativos que exigem transições contínuas entre arquivos de áudio, como players de música, para tocar álbuns com faixas ou jogos contínuos.

Media Router

As novas APIs MediaRouter, MediaRouteActionProvider e MediaRouteButton fornecem mecanismos padrão e IU para escolher onde abrir a mídia. A compatibilidade é integrada para fones de ouvido com fio e fones de ouvido e alto-falantes Bluetooth a2dp, e é possível adicionar suas próprias opções de roteamento no seu aplicativo.

Computação Renderscript

O Android 4.1 estende a computação Renderscript para oferecer mais flexibilidade. Agora você pode testar texturas nos seus scripts de computação Renderscript, e novos pragmas estão disponíveis para definir a precisão de ponto flutuante exigida por seus scripts. Isso permite que você ative as instruções NEON, como operações matemáticas de vetor rápido no caminho da CPU, que não seriam possíveis com o padrão IEEE 754-2008 completo.

Agora você pode depurar scripts de computação Renderscript em emuladores e dispositivos de hardware baseados em x86. Você também pode definir vários kernels no estilo raiz em um único arquivo de origem Renderscript.

Android Browser e WebView

No Android 4.1, o Android Browser e as WebViews incluem estas melhorias:

  • Melhor experiência de usuário com vídeo HTML5, incluindo toque para reproduzir/pausar e transição suave do modo inline para o de tela cheia
  • Velocidade de renderização aprimorada e uso reduzido de memória para melhor desempenho de rolagem e zoom
  • Desempenho aprimorado de animação em HTML5/CSS3/Canvas
  • Entrada de texto aprimorada
  • Atualização do JavaScript Engine (V8) para melhorar o desempenho do JavaScript
  • Compatibilidade com a especificação de HTML5 Media Capture atualizada (o atributo “capture” nos elementos input type=file)

APIs e serviços do Google

Para ampliar ainda mais os recursos do Android, vários novos serviços estão disponíveis para o sistema operacional.

Google Cloud Messaging para Android

O Google Cloud Messaging (GCM) é um serviço que permite aos desenvolvedores enviar dados de mensagens curtas aos usuários em dispositivos Android, sem precisar de uma solução de sincronização própria.

O GCM processa todos os detalhes de enfileiramento e entrega de mensagens de maneira eficiente aos dispositivos Android de destino. Ele é compatível com o multicast de mensagens e pode alcançar até mil dispositivos conectados simultaneamente a uma única solicitação. Ele também é compatível com payloads de mensagens, o que significa que, além de enviar mensagens de tickles para um aplicativo no dispositivo, os desenvolvedores podem enviar até 4K de dados.

O Google Cloud Messaging é totalmente gratuito para todos os desenvolvedores, e a inscrição é fácil. Consulte a página do Google Cloud Messaging a respeito de registro, downloads e documentação.

Criptografia de aplicativos

A partir do Android 4.1, o Google Play ajudará a proteger os ativos de aplicativos criptografando todos os aplicativos pagos com uma chave específica do dispositivo antes de serem entregues e armazenados em um dispositivo.

Atualizações inteligentes de aplicativos

As atualizações inteligentes de aplicativos são um novo recurso do Google Play que apresenta uma maneira melhor de fornecer atualizações de aplicativos para dispositivos. Quando os desenvolvedores publicam uma atualização, o Google Play fornece apenas os bits que foram alterados para os dispositivos, e não o APK inteiro. Isso torna as atualizações muito mais leves na maioria dos casos, de forma que o download delas seja mais rápido, haja economia de bateria do dispositivo e conservação do uso de largura de banda no plano de dados móveis dos usuários. Geralmente, uma atualização de aplicativo inteligente tem cerca de 1/3 do tamanho de uma atualização completa do APK.

Google Play Services

O Google Play Services ajuda os desenvolvedores a integrar os serviços do Google, como autenticação, aos aplicativos deles fornecidos pelo Google Play.

O Google Play Services é provisionado automaticamente para dispositivos de usuários finais pelo Google Play, então tudo que você precisa é de uma biblioteca de thin client nos aplicativos.

Como seu aplicativo contém apenas a pequena biblioteca de cliente, você pode aproveitar esses serviços sem grande aumento no tamanho do download e no espaço de armazenamento. Além disso, o Google Play fornecerá atualizações regulares aos serviços, sem que os desenvolvedores precisem publicar atualizações de aplicativos para aproveitá-los.

Para mais informações sobre as APIs incluídas no Google Play Services, consulte a página do desenvolvedor do Google Play Services.