Android 4.3
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 fornece um resumo das novidades para os desenvolvedores.
Consulte 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 se baseia nas melhorias de desempenho já incluídas no Jelly Bean (tempo de vsync, buffer triplo, latência de toque reduzida, aumento de entrada da CPU e renderização 2D acelerada por hardware) e adiciona 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 exibição, transformando-o em um formato de GPU mais eficiente ao reorganizar e mesclar operações de desenho. Para o processamento com várias linhas de execução, o renderizador agora também pode usar multithreading em vários 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 de maneira mais eficiente. As otimizações de texto incluem maior desempenho ao usar várias fontes ou conjuntos de glifos complexos (CJK), maior qualidade de renderização ao dimensionar o 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 apps, reduzindo o tempo necessário para iniciar a renderização ao criar uma janela.
Para gráficos de melhor desempenho, o Android 4.3 introduz o suporte ao OpenGL ES 3.0 (link em inglês) e o torna acessível para apps por APIs nativas e de framework. Em dispositivos com suporte, o mecanismo de renderização 2D acelerada por hardware aproveita o OpenGL ES 3.0 para otimizar o gerenciamento de textura 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 gráficos 2D e 3D de alto desempenho em dispositivos com suporte. Você pode aproveitar o OpenGL ES 3.0 e as extensões EGL relacionadas usando APIs do framework ou vinculações de API nativas por meio do Kit de desenvolvimento nativo do Android (NDK, na sigla em inglês).
As principais novas funcionalidades oferecidas no OpenGL ES 3.0 incluem aceleração de efeitos visuais avançados, compactação de textura ETC2/EAC de alta qualidade como recurso padrão, uma nova versão da linguagem de sombreamento GLSL ES com suporte a números inteiros e ponto flutuante de 32 bits, renderização avançada de texturas e tamanho padronizado de textura e formatos de buffer de renderização.
Você pode 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, além de oferecer suporte a um único 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 apps que interajam com a geração mais recente de dispositivos e sensores pequenos e com baixo consumo de energia que usam a tecnologia Bluetooth Smart.
![](https://developer.android.google.cn/static/images/jb-btle.png?authuser=9&hl=pt-br)
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 fornece um conjunto padrão de APIs que os apps podem usar para descobrir dispositivos por perto, consultar serviços GATT e ler/gravar características.
Com as novas APIs, seus apps podem verificar com eficiência dispositivos e serviços de interesse. Para cada dispositivo, é possível verificar os serviços GATT compatíveis com o UUID e gerenciar conexões por ID 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 mudarem.
É possível implementar compatibilidade em qualquer perfil do GATT. É possível ler ou gravar características padrão ou adicionar suporte a características personalizadas, conforme necessário. O app pode funcionar como cliente ou servidor e transmitir e receber dados em qualquer um dos modos. As APIs são genéricas. Portanto, você poderá oferecer suporte a interações com vários dispositivos, como tags de proximidade, relógios, medidores de condicionamento físico, controles de jogos, controles remotos, dispositivos de saúde e muito mais.
O suporte para Bluetooth Smart Ready já está disponível nos dispositivos Nexus 7 (2013) e Nexus 4 e será suportado para um número cada vez maior de dispositivos compatíveis com Android nos próximos meses.
Perfil do AVRCP 1.3
O Android 4.3 adiciona suporte integrado ao Bluetooth AVRCP 1.3, para que seus aplicativos possam oferecer suporte a interações mais ricas com dispositivos de streaming de mídia remoto. Apps 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 em dispositivos remotos conectados por Bluetooth, os apps agora podem transmitir metadados como nome da faixa, compositor e outros tipos de metadados de mídia.
O suporte da plataforma ao AVRCP 1.3 é criado na pilha Bluedroid Bluetooth lançada pelo Google e pela Broadcom no Android 4.2. O suporte está disponível a partir de agora em dispositivos Nexus e outros dispositivos compatíveis com Android que oferecem funcionalidade A2DP/AVRCP.
Compatibilidade com perfis restritos
![Configuração de um perfil restrito](https://developer.android.google.cn/static/images/jb-profiles-create-n713.png?authuser=9&hl=pt-br)
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](https://developer.android.google.cn/static/images/jb-profiles-restrictions-n713.png?authuser=9&hl=pt-br)
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ário para tablets com perfis restritos, uma nova maneira de gerenciar usuários e os recursos deles 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 apps disponíveis nesses ambientes. Perfis restritos são ideais para amigos e familiares, usuários convidados, quiosques, dispositivos de ponto 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. Ao contrário dos usuários, os perfis são criados no ambiente do proprietário do tablet, com base nos apps instalados e nas contas do sistema do proprietário. O proprietário controla quais apps instalados são ativados no novo perfil, e o acesso às contas dele é desativado por padrão.
Os apps que precisam acessar as contas do proprietário (para login, preferências ou outros usos) podem declarar um atributo de manifesto, e o proprietário pode revisar e gerenciar esses apps nas configurações do perfil.
Para desenvolvedores, os perfis restritos oferecem uma nova maneira de oferecer mais valor e controle aos usuários. Você pode implementar restrições de apps (controles de recursos ou conteúdo com suporte do app) e anunciá-los aos proprietários de tablets nas configurações do perfil.
É possível adicionar restrições de app diretamente às definições de configuração do perfil usando tipos predefinidos de booleano, seleção e seleção múltipla. Caso queira mais flexibilidade, é possível até mesmo iniciar sua própria interface a partir das configurações de perfil para oferecer qualquer tipo de restrição.
Quando o app é executado em um perfil, ele pode verificar se há restrições configuradas pelo proprietário e aplicá-las corretamente. Por exemplo, um app de música pode oferecer uma restrição para permitir que o proprietário defina um nível de maturidade para o perfil. No ambiente de execução, o app pode verificar a configuração de maturidade e gerenciar o conteúdo de acordo com a faixa etária preferencial.
Se o app não tiver sido projetado para uso em perfis restritos, você poderá desativar esse recurso completamente 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 de localização avançadas que podem ser usadas em apps. 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 o cálculo da localização no hardware do dispositivo, e não no software. Em dispositivos com suporte à fronteira geográfica virtual de hardware, as APIs de geofence do Google Play Services poderão aproveitar essa otimização para economizar bateria enquanto o dispositivo está em movimento.
O modo somente busca por Wi-Fi é uma nova otimização de plataforma que permite que os usuários mantenham a busca por Wi-Fi ativada sem se conectar a uma rede Wi-Fi, melhorando a precisão da localização e economizando bateria. Apps que dependem de Wi-Fi para serviços de localização agora podem pedir que os usuários ativem o modo 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. Sensores de giroscópio não calibrado e magnetômetro sem calibração informam medições brutas, bem como vieses estimados para apps.
Os novos recursos de hardware já estão disponíveis nos dispositivos Nexus 7 (2013) e Nexus 4, e qualquer fabricante de dispositivos ou fornecedor de chipset pode incorporá-los nos seus dispositivos.
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 de DRM modular, que permite que os desenvolvedores de aplicativos de mídia integrem o DRM com mais facilidade aos próprios protocolos de streaming, como 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 estrutura 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 que você receba os metadados PSSH para a mídia DASH. Os apps que usam o framework de DRM de mídia gerenciam a comunicação da rede com um servidor de licença e processam o streaming de dados criptografados de uma biblioteca de conteúdo.
Codificador VP8
O Android 4.3 introduz compatibilidade integrada com a codificação VP8, acessível no framework e em APIs nativas. Para apps que usam APIs nativas, a plataforma inclui cabeçalhos de extensão OpenMAX 1.1.2 para oferecer suporte a perfis e níveis VP8. A compatibilidade com a codificação VP8 inclui configurações de taxa de bits de destino, controle de taxa, frame rate, particionamento de token, resiliência de erros, filtros de reconstrução e loop. A API da plataforma oferece suporte ao codificador VP8 em vários formatos para que você possa aproveitar o melhor formato para seu conteúdo.
A codificação VP8 está disponível no software em todos os dispositivos compatíveis que executam o Android 4.3. Para ter o melhor desempenho, a plataforma também oferece suporte à 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, é possível usar uma superfície como entrada para um codificador de vídeo. Por exemplo, agora você pode direcionar um stream de uma superfície do OpenGL ES para o codificador, em vez de precisar copiar entre buffers.
Multiplexador de mídia
Os apps podem usar novas APIs de multiplexador de mídia para combinar streams básicos de áudio e vídeo 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 desmuxação de mídia introduzidas no Android 4.2.
Progresso da reprodução e acesso a pontos em clientes de controle remoto
Desde o Android 4.0, 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 pelos clientes de controle remoto, além de receber comandos para pular para uma posição específica da reprodução.
Novas formas de criar aplicativos bonitos
Acesso a notificações
As notificações são um recurso conhecido do Android há muito tempo porque permitem que os usuários vejam informações e atualizações de todo o sistema, tudo em um só lugar. Agora, no Android 4.3, os apps podem observar o fluxo de notificações com a permissão do usuário e exibir as notificações da maneira que quiserem, incluindo as enviando para dispositivos próximos conectados por Bluetooth.
É possível acessar notificações usando 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 mostradas na barra de status. As notificações são enviadas a você na íntegra, com todos os detalhes sobre o app de origem, o horário de postagem, 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 app e encaminhá-los para exibição da maneira que quiser.
A nova API fornece callbacks quando uma notificação é adicionada, atualizada e removida, seja porque o usuário a dispensou ou porque o app de origem a removeu. Você poderá iniciar qualquer intent anexada à notificação ou às ações dela, bem como dispensá-la do sistema, permitindo que seu app ofereça uma interface do usuário completa para notificações.
Os usuários permanecem no controle de quais apps podem receber notificações. A qualquer momento, eles podem consultar as configurações para ver quais apps têm acesso às notificações e ativar ou desativar o acesso conforme necessário. O acesso a notificações é desativado por padrão. Os apps podem usar uma nova intent para levar o usuário diretamente às configurações e 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 de visualização.
Modo de layout de limites ópticos
Um novo modo de layout permite gerenciar o posicionamento de visualizações dentro de ViewGroups de acordo com os limites ópticos delas, em vez dos limites de corte. Os limites de recorte 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 os widgets que usam efeitos visuais externos, como sombras e brilhos.
Tipos personalizados de animação de rotação
Os apps 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 de animação personalizados quando a janela está em tela cheia e não é coberta por outras.
Modos de orientação da tela
Os apps podem definir novos modos de orientação para atividades, garantindo que elas sejam mostradas na orientação adequada quando o dispositivo for virado. Além disso, os apps podem usar um novo modo para bloquear a tela na orientação atual. Isso é útil para apps 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 apresenta uma nova intent pública que permite que qualquer app processe respostas rápidas, que são mensagens de texto enviadas pelo usuário em resposta a uma chamada recebida, sem precisar atender a chamada ou desbloquear o dispositivo. Seu app pode detectar a intent e enviar a mensagem ao autor da chamada pelo sistema de mensagens. A intent inclui o destinatário (autor da chamada), bem como a mensagem em si.
Compatibilidade com usuários internacionais
![](https://developer.android.google.cn/static/images/jb-rtl-arabic-n4.png?authuser=9&hl=pt-br)
![](https://developer.android.google.cn/static/images/jb-rtl-hebrew-n4.png?authuser=9&hl=pt-br)
Mais partes do Android 4.3 foram otimizadas para idiomas RTL.
Melhorias de RTL
O Android 4.3 inclui melhorias de desempenho de RTL e maior suporte a RTL
em widgets de IU do framework, incluindo ProgressBar/Spinner e
ExtensibleListView. Mais informações de depuração são visíveis na
ferramenta uiautomatorviewer
. Além disso, mais componentes da interface do sistema
agora reconhecem RTL, como notificações, barra de navegação e barra de ações.
Para oferecer uma melhor experiência geral em scripts RTL, mais apps de sistema padrão agora oferecem suporte a layouts RTL, incluindo 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
![](https://developer.android.google.cn/static/images/jb-pseudo-locale-zz.png?authuser=9&hl=pt-br)
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 as interfaces localizadas. Uma nova classe BidiFormatter fornece uma API simples para unir strings Unicode, para que os dados de script RTL sejam exibidos conforme planejado nas mensagens de localidade LTR e vice-versa. Para permitir que você use esse utilitário de forma mais ampla nos seus apps, a API BidiFormatter também está disponível para versões anteriores da plataforma com o pacote de suporte 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 seus usuários.
Para ajudar você a testar seu app com mais facilidade em outras localidades, o Android 4.3 apresenta as pseudolocalidades como uma nova opção para desenvolvedores. As pseudolocalidades simulam o idioma, o script e as características de exibição associados a uma localidade ou um grupo de idiomas. Atualmente, você pode testar com uma pseudolocalidade para Inglês acentuado, que permite ver como sua interface funciona com acentos de script e caracteres usados em vários idiomas europeus.
Acessibilidade e automação de IU
No Android 4.3 e versões mais recentes, os serviços de acessibilidade podem observar e filtrar eventos de tecla, por exemplo, para processar atalhos de teclado ou fornecer paridade de navegação com entrada baseada em gestos. O serviço recebe os eventos e pode processá-los conforme necessário antes de serem transmitidos para o sistema ou outros apps 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, extrair conteúdo da janela, ativar a exploração por toque ou ativar 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 ativação para os usuários. Assim, eles podem conferir e concordar com os recursos antes do início.
Com base no framework de acessibilidade do Android 4.3, um novo framework de automação da interface permite que os testes interajam com a interface do dispositivo simulando ações do usuário e introspectando o conteúdo da tela. Com ele, você pode realizar operações básicas, definir a rotação da tela, gerar eventos de entrada, fazer capturas de tela e muito mais. Essa é uma maneira eficiente de automatizar os testes em cenários de usuário realistas, incluindo ações ou sequências que abrangem vários apps.
Empresas e segurança
Configuração de Wi-Fi para redes WPA2-Enterprise
Agora, os apps podem configurar as credenciais de Wi-Fi necessárias para conexões com pontos de acesso WPA2 Enterprise. Os desenvolvedores podem usar novas APIs para configurar as credenciais do Extensible Authentication Protocol (EAP) e do Encapsulated EAP (fase 2) para os métodos de autenticação usados na empresa. Apps com permissão para acessar e mudar 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 de todo o sistema estão vinculadas a uma raiz de hardware de confiança do 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 um provedor de keystore e APIs que permitem que os aplicativos criem chaves de uso exclusivo. Com as APIs, os apps podem criar ou armazenar chaves privadas que não podem ser vistas nem usadas por outros apps 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 está montada nosuid
para
processos gerados pelo zigoto, impedindo que 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
![](https://developer.android.google.cn/static/images/jb-systrace.png?authuser=9&hl=pt-br)
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 oferece suporte a uma versão aprimorada da ferramenta Systrace, que é mais fácil de usar e oferece acesso a mais tipos de informações para criar perfis de desempenho do seu app. 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 podem ser usadas nos aplicativos para marcar seções específicas de código 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/fim no registro de rastreamento. O impacto no desempenho do app é mínimo. Por isso, os tempos informados oferecem uma visão precisa do que o app está fazendo.
É possível visualizar eventos específicos do app 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 do app podem oferecer novas maneiras de entender o desempenho e o comportamento dos seus apps.
![](https://developer.android.google.cn/static/images/jb-gpu-profile-clk-n4.png?authuser=9&hl=pt-br)
![](https://developer.android.google.cn/static/images/jb-gpu-profile-cal-n4.png?authuser=9&hl=pt-br)
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 você a analisar o desempenho do app e identificar problemas de renderização em qualquer dispositivo ou emulador.
Na opção Criação do perfil de renderização de GPU, é possível conferir o frame rate efetivo do app na tela enquanto ele está em execução. Você pode optar por mostrar dados de criação de perfil como gráficos de barras ou de linhas 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 atividade visível, incluindo a barra de navegação e a barra de notificações.
Uma linha verde destaca o limite de 16 ms para operações de renderização. Assim, você pode avaliar o frame rate efetivo do app em relação a uma meta de 60 QPS (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 o Android 4.2 e versões mais recentes, as opções do desenvolvedor ficam ocultas por padrão. É possível exibi-las a qualquer momento tocando sete vezes em Configurações > Sobre o dispositivo > 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 app expõe um URI file://
ao sistema ou a outro app.
Em alguns casos, o app de recebimento pode não ter acesso ao caminho de URI
file://
. Portanto, ao compartilhar arquivos entre apps, um URI content://
precisa
ser usado (com a permissão adequada). 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
apps, tente usar o provedor de conteúdo FileProvider
, disponível
na Biblioteca de Suporte.
Android 4.2
![Android 4.2 em smartphone e tablet](https://developer.android.google.cn/static/images/jb-device-2.png?authuser=9&hl=pt-br)
Este é o Android 4.2, a versão mais recente do Jelly Bean.
O Android 4.2 conta com otimizações de desempenho, uma interface de sistema atualizada e novos recursos incríveis para usuários e desenvolvedores. Este documento fornece um resumo das novidades para os desenvolvedores.
Consulte 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 aumento de entrada da CPU e adiciona novas otimizações que tornam o Android ainda mais rápido.
As 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 determinadas formas (retângulos arredondados, círculos e ovais).
Várias otimizações de renderização do WebView tornam a rolagem de páginas da Web mais suave, livre de instabilidade e atrasos.
O Renderscript Compute do Android é a primeira plataforma computacional portada para ser executada diretamente em uma GPU de dispositivo móvel. Ela aproveita automaticamente os recursos de computação com GPU sempre que possível, melhorando significativamente o desempenho do processamento de gráficos e imagens. Qualquer app que use o Renderscript em um dispositivo com suporte 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 traz padrões familiares de interface do Android, como barra de status, barra do sistema e 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 conhecida aparece na parte de baixo, 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 cada um deles tendo acesso conveniente a um espaço dedicado para cada usuário. Os usuários podem alternar para os espaços com um único toque na tela de bloqueio.
Em um dispositivo multiusuário, o Android oferece a cada usuário um ambiente separado, incluindo o armazenamento em cartão SD emulado específico do usuário. Os usuários também têm os próprios telas iniciais, widgets, contas, configurações, arquivos e apps, e o sistema os mantém separados. Todos os usuários compartilham os principais serviços do sistema, mas o sistema garante que os aplicativos e dados de cada um deles permaneçam isolados. Na verdade, cada um dos vários usuários tem 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 faz o download de um APK somente se ele ainda não tiver sido instalado por outro usuário no dispositivo. Se o app já estiver instalado, o Google Play vai registrar a instalação do novo usuário da maneira normal, mas não fará o download de outra cópia do app. 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, incluindo um diretório de dados específicos.
Para desenvolvedores, o suporte multiusuário é transparente: seus apps não precisam fazer nada especial para serem executados normalmente em um ambiente multiusuário e não é necessário fazer mudanças nos APKs existentes ou publicados. O sistema gerencia seu app em cada espaço de usuário da mesma forma que em um ambiente de usuário único.
Novas maneiras de envolver os usuários
![Widget de bloqueio de tela da Agenda](https://developer.android.google.cn/static/images/jb-lock-calendar.png?authuser=9&hl=pt-br)
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 apps diretamente nas telas de bloqueio para acesso instantâneo ao conteúdo dos apps favoritos sem precisar desbloquear o app. Os usuários podem adicionar até cinco widgets da tela de bloqueio, escolhendo os widgets fornecidos pelos apps 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 widgets deles.
Como todos os widgets de apps, os da tela de bloqueio podem exibir qualquer tipo de conteúdo e podem aceitar interação direta do usuário. Eles podem ser totalmente independentes, como um widget que oferece controles para tocar música ou podem permitir que os usuários acessem uma atividade no app depois de desbloquear o dispositivo, conforme necessário.
Para os desenvolvedores, os widgets da tela de bloqueio oferecem uma nova maneira incrível de envolver os usuários. Com elas, você exibe seu conteúdo aos usuários em um local que eles veem com frequência e oferece mais oportunidades de trazer os usuários diretamente para o app.
Você pode aproveitar esse novo recurso criando um novo widget de app ou estendendo um widget da tela inicial que já existe. Se o app já inclui widgets da tela inicial, eles podem ser estendidos à tela de bloqueio com pequenas mudanças. Para oferecer aos usuários uma experiência ideal, você pode atualizar o widget para usar toda a área da tela de bloqueio, quando disponível, e redimensionar em telas menores, se necessário. Você também pode adicionar recursos aos widgets que podem ser especialmente úteis ou convenientes na tela de bloqueio.
Daydream
O Daydream é um modo de protetor de tela interativo que é iniciado quando o dispositivo de um usuário está encaixado ou carregando. Nesse modo, o sistema inicia um daydream, um serviço de conteúdo remoto fornecido por um app instalado, como protetor de tela do dispositivo. O usuário pode ativar o Daydream no app Configurações 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 oferecer qualquer tipo de conteúdo em um contexto completamente novo, com interações do usuário, como virar fotos, abrir áudio ou vídeo ou acessar seu app com um único toque.
Como os Daydreams podem iniciar automaticamente quando um dispositivo está carregando ou ancorado, eles também oferecem ao app uma ótima maneira de oferecer suporte a novos tipos de experiências do usuário, como os modos leanback ou de exibição, modo de demonstração ou quiosque e "modo de atração", tudo isso sem precisar de hardware especial.
![Modo protetor de tela Daydream](https://developer.android.google.cn/static/images/jb-dream-1.png?authuser=9&hl=pt-br)
O Daydream permite criar protetores de tela interativos que exibem qualquer tipo de conteúdo.
Os Daydreams são semelhantes às atividades e podem fazer tudo que a Activity faz, desde renderizar uma hierarquia de interface (sem usar RemoteViews) até desenhar diretamente usando Canvas, OpenGL, SurfaceTexture e muito mais. Eles podem reproduzir vídeo e áudio e podem até aceitar interação direta com o usuário. No entanto, os daydreams não são atividades, por isso não afetam a backstack nem aparecem em Recentes e não podem ser iniciados diretamente do app.
Implementar um Daydream é simples, e você pode aproveitar os componentes e recursos de IU que já criou para outras partes do seu app. É possível fornecer vários Daydreams no seu app e oferecer conteúdo e configurações de exibição diferentes para cada um.
Compatibilidade com tela externa
O Android 4.2 introduz compatibilidade de plataforma com telas externas que vai muito além do espelhamento. Os apps agora podem direcionar conteúdo exclusivo para uma ou várias telas conectadas a um dispositivo Android. Os apps podem se basear nisso para oferecer novos tipos de experiências de interação e 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 app pode enumerar as telas e verificar os recursos de cada uma, incluindo tamanho, densidade, nome de exibição, ID, suporte a vídeo seguro e muito mais. O app também pode receber callbacks quando telas são adicionadas ou removidas ou quando os recursos mudam, para gerenciar melhor o 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 app em uma tela externa específica. O app apenas fornece a tela a ser usada, um tema para a janela e qualquer conteúdo exclusivo para mostrar. A apresentação processa a inflação de recursos e a renderização do conteúdo de acordo com as características da tela de destino.
![](https://developer.android.google.cn/static/images/external-display.png?authuser=9&hl=pt-br)
Você pode assumir o controle total de duas ou mais telas independentes usando a Presentation.
Uma apresentação dá ao app controle total sobre a janela de exibição remota e o conteúdo dela e permite que você o gerencie com base em eventos de entrada do usuário, como teclas pressionadas, gestos, eventos de movimento e muito mais. Você pode usar todas as ferramentas normais para criar uma interface e renderizar conteúdo na apresentação, 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 transmitido ou visualizações de câmera.
Seleção de tela preferencial
Quando várias telas externas estiverem disponíveis, você poderá criar quantas apresentações precisar, cada uma mostrando conteúdo exclusivo em uma tela específica. Em muitos casos, você pode querer mostrar o conteúdo apenas em uma única tela externa, mas sempre naquela que for melhor para o conteúdo da Apresentação. Para isso, o sistema pode ajudar seu aplicativo a escolher a melhor tela a ser usada.
Para encontrar a melhor tela a ser usada, seu app pode consultar o gerenciador de exibição para a exibição preferencial da apresentação do sistema e receber callbacks quando essa tela mudar. 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 mudar. Seu app pode mostrar conteúdo por padrão na atividade principal até que uma tela de apresentação preferida seja conectada. Nesse momento, ele pode alternar automaticamente para o conteúdo da apresentação na tela preferencial. Os apps também podem usar o MediaRouteActionProvider e MediaRouteButton do roteador de mídia para oferecer a IU padrão de seleção de tela.
Conteúdo protegido
Para apps que processam conteúdo protegido ou criptografado, a API Display agora informa os recursos de vídeo seguro de telas conectadas. O app consulta uma tela para descobrir se ela oferece uma saída de vídeo segura ou buffers gráficos protegidos e, em seguida, escolhe o stream ou a decodificação de conteúdo adequado para tornar o conteúdo visível. Para maior segurança em objetos SurfaceView, seu app pode definir uma flag segura para indicar que o conteúdo nunca pode 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 com suporte podem se conectar a uma tela externa por Wi-Fi usando o Display Wi-Fi, uma solução de display sem fio ponto a ponto que está em conformidade com o programa de certificação MiracastTM. Quando uma tela sem fio está conectada, os usuários podem fazer streaming de qualquer tipo de conteúdo para a tela grande, incluindo fotos, jogos, mapas e muito mais.
Os apps podem aproveitar as telas sem fio da mesma maneira que fazem com outras telas externas, e nenhum trabalho extra é necessário. O sistema gerencia a conexão de rede e transmite a apresentação ou outro conteúdo do app para a tela sem fio conforme necessário.
Compatibilidade nativa com RTL
![Espelhamento de layout RTL](https://developer.android.google.cn/static/images/jb-rtl.png?authuser=9&hl=pt-br)
Os desenvolvedores agora podem espelhar layouts para idiomas RTL.
O Android 4.2 introduz suporte nativo completo para layouts RTL (da direita para a esquerda), incluindo o espelhamento de layout. Com suporte à RTL nativo, você pode oferecer a mesma experiência de app a todos os usuários, independente de o idioma usar um script que lê da direita para a esquerda ou um que leia da esquerda para a direita.
Quando o usuário muda o idioma do sistema para um script da direita para a esquerda, o sistema agora fornece espelhamento automático dos layouts da interface do app e de todos os widgets de visualização, além do espelhamento bidi 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 app seja espelhado, basta declarar um novo atributo no manifesto do app e mudar todas as propriedades de layout "esquerda/direita" para novos equivalentes "início/fim". Em seguida, o sistema processa o espelhamento e a exibição da interface conforme adequado.
Para um controle preciso sobre a interface do seu app, o Android 4.2 inclui novas APIs que permitem gerenciar a direção do layout, direção do texto, alinhamento do texto, gravidade e direção da localidade em componentes 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ê confira as propriedades inicial/final, a direção do layout, a direção do texto e o alinhamento do texto para todas as visualizações 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 (나눔 글꼴) gótica, uma fonte Unicode projetada especialmente para o script do idioma coreano.
- Compatibilidade aprimorada com textos verticais japoneses exibidos em WebViews.
- Aprimoramento do kerning e do posicionamento de fontes para fontes padrão índica, tailandesa, árabe e hebraica.
O teclado padrão do Android também inclui um conjunto atualizado de dicionários:
- Dicionários aprimorados para francês (com suporte a 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 e torná-los mais modulares, o Android 4.2 permite aninhar fragmentos dentro de Fragments. Para qualquer fragmento, um novo gerenciador de fragmentos permite inserir outros fragmentos como nós filhos na hierarquia de visualização.
Você pode usar fragmentos aninhados de várias maneiras, mas eles são especialmente úteis para implementar componentes de IU reutilizáveis e dinâmicos dentro de um componente de IU dinâmico e reutilizável. 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 fragmento do paginador de visualização.
Para aproveitar os fragmentos aninhados de forma mais ampla no app, 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 distinguir entre a exploração de toque e gestos de acessibilidade 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 oferece 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.2 um novo tipo de feedback de acessibilidade para dispositivos em braille.
Para fornecer insights aos serviços de acessibilidade sobre o significado das visualizações para fins de acessibilidade, o framework fornece novas APIs para associar uma visualização como o rótulo de outra. O rótulo de cada visualização está disponível para os serviços de acessibilidade pelo AccessibilityNodeInfo.
Câmera aprimorada com HDR
O Android 4.2 apresenta uma nova interface de hardware de câmera e pipeline para melhorar o desempenho. Em dispositivos com suporte, os apps podem usar um novo modo de cena da câmera HDR para capturar uma imagem usando técnicas de imagem de alto alcance dinâmico.
Além disso, o framework agora fornece uma API para permitir que os apps verifiquem se o som do obturador da câmera pode ser desativado. Os apps podem permitir que o usuário desative o som ou escolha um som alternativo no lugar do 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 melhor 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 padrão do RenderScript, mas com restrições mais rigorosas que garantem maior compatibilidade e otimização aprimorada em CPUs, GPUs e DSPs.
O Filterscript é ideal para acelerar o hardware em operações de processamento e computação simples de imagens, como aquelas que podem ser escritas para sombreadores de fragmento do 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 adiciona suporte a um conjunto de intrínsecos de script, primitivos de filtragem pré-implementados que são acelerados para reduzir a quantidade de código que você precisa escrever e garantir que seu app tenha o maior ganho de desempenho possível.
Os intrínsecos estão disponíveis para combinações, desfoque, matriz de cores, convolução 3x3 e 5x5, tabela de consulta por canal e conversão de um buffer YUV do Android em RGB.
Grupos de scripts
Agora é possível criar grupos de scripts Renderscript e executar todos eles com uma única chamada, como se fizessem parte de um único script. Isso permite que o Renderscript otimize a execução dos scripts de maneiras que não seria possível se os scripts fossem executados individualmente.
![Gráfico de otimizações do RenderScript](https://developer.android.google.cn/static/images/jb-rs-chart-versions.png?authuser=9&hl=pt-br)
As comparações de processamento de imagens Renderscript são executadas em diferentes versões da plataforma Android (Android 4.0, 4.1 e 4.2) somente na CPU em um dispositivo Galaxy Nexus.
![](https://developer.android.google.cn/static/images/jb-rs-chart-gpu.png?authuser=9&hl=pt-br)
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 do 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 ter o melhor desempenho.
Melhorias contínuas de otimização
Quando você usa o Renderscript para operações de computação, seus apps se beneficiam de melhorias contínuas de desempenho e otimização no próprio mecanismo do RenderScript, sem nenhum impacto no código do app ou necessidade de recompilação.
À medida que a otimização melhora, suas operações são executadas mais rapidamente e em mais chipsets, sem nenhum trabalho da sua parte. 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, ele usa automaticamente os recursos de computação de GPU sempre que possível para melhorar o desempenho. Com a integração de GPU, até mesmo os cálculos mais complexos para processamento de gráficos ou imagens podem ser executados com desempenho significativamente aprimorado.
Qualquer app que use o Renderscript em um dispositivo com suporte pode se beneficiar imediatamente dessa integração da GPU, sem recompilação. 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 uma variedade de novas opções de desenvolvedor que facilitam a criação de apps com ótima aparência e desempenho. As novas opções expõem recursos para depurar e criar um perfil no seu app em qualquer dispositivo ou emulador.
Em dispositivos com 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 as opções do desenvolvedor a qualquer momento tocando sete vezes em Configurações > Sobre o dispositivo > Número da versão em qualquer dispositivo Android compatível.
![](https://developer.android.google.cn/static/images/jb-dev-options-device.png?authuser=9&hl=pt-br)
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:
- Criar relatório do bug: faz uma captura de tela imediatamente, despeja informações de estado do dispositivo no armazenamento de arquivos local e as anexa a uma nova mensagem de e-mail de saída.
- Relatórios de bugs no menu liga/desliga: 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 apps para sideload por USB, enquanto ainda verifica apps de outras fontes, como o navegador. Isso pode acelerar o processo de desenvolvimento e, ao mesmo tempo, manter o recurso de segurança ativado.
- Mostrar 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 MSAA 4x: permite 4x MSAA em apps 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 rastreamentos do OpenGL: permite rastrear a execução do OpenGL usando o Logcat, o 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 suporte a casos de uso de comunicação inovadores em uma ampla variedade de dispositivos de hardware. Na maioria dos casos, as novas tecnologias de plataforma e as melhorias não afetam diretamente seus apps, para que você possa aproveitá-las 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 ativar a opção "Verificar apps" para que eles sejam filtrados por um verificador antes da instalação. A verificação de apps poderá alertar o usuário se ele tentar instalar um app que possa ser nocivo. Se um aplicativo for especialmente ruim, ela poderá bloquear a instalação.
- Mais controle de SMS premium: o Android fornecerá uma notificação se um aplicativo tentar enviar SMS para um código curto que usa serviços premium, o que pode gerar cobranças adicionais. O usuário pode escolher se quer permitir que o app envie a mensagem ou a bloqueie.
- VPN sempre ativada: 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 se encadear a um conjunto de certificados esperados. Isso protege contra possíveis comprometimentos de autoridades certificadoras.
- Exibição aprimorada de permissões do Android: as permissões foram organizadas em grupos que são mais facilmente compreendidos 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.
- Hardening instalado: o daemon instalado não é executado como usuário raiz, reduzindo a superfície de ataque potencial 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. Isso é usado por bibliotecas e aplicativos do sistema para evitar a corrupção da memória.
- Configuração padrão do ContentProvider: os aplicativos voltados ao nível 17 da API terão "export" definido como "false" por padrão para cada ContentProvider, reduzindo a superfície de ataque padrão deles.
- Criptografia: modificação das implementações padrão de SecureRandom e Cipher.RSA para usar o OpenSSL. Foi adicionado suporte ao SSLSocket para TLSv1.1 e TLSv1.2 usando 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 para vulnerabilidades específicas. Foram fornecidas informações sobre essas vulnerabilidades aos membros da 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 apresenta 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 o suporte à reprodução de áudio de baixa latência, começando com as melhorias feitas na versão do Android 4.1 para latência de saída de áudio usando o OpenSL ES, o Soundpool e as APIs de gerador de tons. Essas melhorias dependem da compatibilidade de hardware. Os dispositivos que oferecem esses recursos de áudio de baixa latência podem anunciar a compatibilidade com apps usando uma constante de recurso de hardware. As 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 captura no modo de burst com controles de processamento.Nova interface de hardware NFC e interface do controlador
O Android 4.2 introduz o suporte a 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 oferece suporte a ele.Otimizações do ambiente de execução Dalvik
O ambiente de execução Dalvik inclui melhorias de desempenho e segurança em uma variedade maior 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.RSA agora usam 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
![](https://developer.android.google.cn/static/images/jb-android-4.1.png?authuser=9&hl=pt-br)
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 ótimos recursos novos 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 no 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 mais recentes).
![](https://developer.android.google.cn/static/images/jb-accessibility-focus-250.png?authuser=9&hl=pt-br)
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
![](https://developer.android.google.cn/static/images/jb-r2l.png?authuser=9&hl=pt-br)
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
![](https://developer.android.google.cn/static/images/jb-notif-ex1.png?authuser=9&hl=pt-br)
Os desenvolvedores podem criar estilos de notificação personalizados, como os mostrados nos exemplos acima, para mostrar conteúdo e ações avançados.
Notificações que podem ser abertas
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 aceitam novos tipos de conteúdo, incluindo fotos, têm prioridade configurável e podem até mesmo 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. Três estilos de notificação baseados em modelos estão 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.
![](https://developer.android.google.cn/static/images/jb-appwidgets.png?authuser=9&hl=pt-br)
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 widgets de apps permitem que você aproveite isso para otimizar o conteúdo do widget do app à 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.
Os widgets de apps agora podem ser mostrados em telas de início de terceiros e outros apps host por meio de um novo intent de vinculação (AppWidgetManager.ACTION_APPWIDGET_BIND).
Navegação de tarefas simplificada
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 o app inclui planos de fundo interativos, agora você pode iniciar uma atividade (ACTION_CHANGE_LIVE_WALLPAPER) que mostra ao usuário uma prévia do plano de fundo interativo. 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 com dispositivos específicos pode variar. Por isso, os apps precisam consultar o provedor de contatos integrado no tempo de execução para saber 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 frames mais consistente e a uma interface suave e estável. Para que os aplicativos também se beneficiem, o Android 4.1 estende o tempo de vsync para todos os desenhos e animações iniciados por 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 sem custo financeiro 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
O Ice Cream Sandwich introduziu suporte ao Wi-Fi ponto a ponto (P2P, na sigla em inglês), uma tecnologia que permite que os apps descubram e pareiem diretamente por uma conexão ponto a ponto com alta largura de banda (em conformidade com o programa de certificação Wi-Fi DirectTM) da Wi-Fi Alliance. O Wi-Fi P2P é a 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 Open Accessory Development Kit (ADK) do Android 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 instruções NEON, como operações matemáticas de vetor rápido no caminho da CPU, o que não seria possível 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é 1.000 dispositivos conectados simultaneamente com 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 app no dispositivo, os desenvolvedores podem enviar até 4K de dados.
O Google Cloud Messaging é totalmente sem custo financeiro para todos os desenvolvedores, e a inscrição é fácil. Consulte a página do Google Cloud Messaging para 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. Agora, quando os desenvolvedores publicam uma atualização, o Google Play fornece somente os bits que foram alterados nos dispositivos, e não o APK inteiro. Isso torna as atualizações muito mais leves na maioria dos casos, tornando o download mais rápido, economizando a bateria do dispositivo e preservando o uso da largura de banda no plano de dados móveis dos usuários. Em média, uma atualização de app 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.