Nível da API: 15
O Android 4.0.3 (ICE_CREAM_SANDWICH_MR1
)
é uma versão incremental da família de plataformas
Android 4.0 (ICE_CREAM_SANDWICH
). Ela inclui novos recursos para
usuários e desenvolvedores, mudanças na API e várias correções de bugs.
Para desenvolvedores, a plataforma Android 4.0.3 está disponível como um componente para download do SDK do Android. A plataforma disponível para download inclui uma biblioteca Android e uma imagem do sistema, além de um conjunto de skins de emulador e muito mais. Para começar a desenvolver ou testar no Android 4.0.3, use o Android SDK Manager para fazer o download da plataforma no seu SDK.
Visão geral da API
As seções abaixo fornecem uma visão geral técnica das novas APIs no Android 4.0.3.
API de fluxo social no Provedor de contatos
Aplicativos que usam dados de fluxo social, como atualizações de status e check-ins, agora podem sincronizar esses dados com cada um dos contatos do usuário, fornecendo itens em um stream com fotos de cada um.
A tabela do banco de dados que contém o fluxo de rede social de um contato individual é
definida por android.provider.ContactsContract.StreamItems, o URI para
que está aninhado no diretório ContactsContract.RawContacts
ao qual os itens de stream pertencem. Cada tabela de fluxo de redes sociais inclui
várias colunas para metadados sobre cada item de fluxo, como um ícone
que representa a origem (um avatar), um rótulo para o item, o conteúdo de texto
principal, comentários sobre o item (como respostas de outras pessoas) e
muito mais. As fotos associadas a um stream são armazenadas em outra tabela, definida por
android.provider.ContactsContract.StreamItemPhotos, que está disponível
como um subdiretório do URI
android.provider.ContactsContract.StreamItems.
Consulte android.provider.ContactsContract.StreamItems e android.provider.ContactsContract.StreamItemPhotos para ver mais informações.
Para ler ou gravar itens de stream de redes sociais de um contato, um aplicativo precisa
solicitar permissão do usuário, declarando <uses-permission
android:name="android.permission.READ_SOCIAL_STREAM">
e/ou <uses-permission
android:name="android.permission.WRITE_SOCIAL_STREAM">
nos arquivos de manifesto dele.
Provedor de agenda
- Adiciona a classe
CalendarContract.Colors
para representar
uma tabela de cores no Provedor
do Agenda. A classe fornece campos para acessar
as cores disponíveis para uma determinada conta. As cores são referenciadas por
COLOR_KEY
,
que precisa ser exclusivo para um determinado nome/tipo de conta. Esses valores só podem ser
atualizados pelo adaptador de sincronização.
- Adiciona
ALLOWED_AVAILABILITY
e
ALLOWED_ATTENDEE_TYPES
para suporte a troca/sincronização.
- Adiciona
TYPE_RESOURCE
(como salas de conferências) para participantes e
AVAILABILITY_TENTATIVE
,
assim como EVENT_COLOR_KEY
para eventos.
CalendarContract.Colors
para representar
uma tabela de cores no Provedor
do Agenda. A classe fornece campos para acessar
as cores disponíveis para uma determinada conta. As cores são referenciadas por
COLOR_KEY
,
que precisa ser exclusivo para um determinado nome/tipo de conta. Esses valores só podem ser
atualizados pelo adaptador de sincronização.ALLOWED_AVAILABILITY
e
ALLOWED_ATTENDEE_TYPES
para suporte a troca/sincronização.TYPE_RESOURCE
(como salas de conferências) para participantes e
AVAILABILITY_TENTATIVE
,
assim como EVENT_COLOR_KEY
para eventos.Widgets da tela inicial
A partir do Android 4.0, os widgets da tela inicial não podem mais incluir o
próprio padding. Em vez disso, o sistema agora adiciona padding de forma automática para cada widget,
com base nas características da tela atual. Isso leva a uma apresentação mais uniforme
e consistente de widgets em uma grade. Para auxiliar os aplicativos que hospedam
widgets de tela inicial, a plataforma fornece um novo método
getDefaultPaddingForWidget()
. Os aplicativos podem chamar esse método para receber o padding definido pelo sistema e contabilizá-lo ao calcular o número de células a serem alocadas para o widget.
Verificação ortográfica
- Para apps que acessam serviços de corretor ortográfico, um novo método
cancel()
cancela todas as tarefas pendentes e em execução em uma sessão. - Para serviços de corretor ortográfico, uma nova sinalização de sugestões,
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
, permite que os serviços diferenciem sugestões de maior confiança das de menor confiança. Por exemplo, um corretor ortográfico pode definir a flag se uma palavra de entrada não estiver no dicionário do usuário, mas tiver prováveis sugestões, ou não configurar a sinalização se uma palavra de entrada não estiver no dicionário e tiver sugestões que provavelmente serão menos úteis.Os apps conectados ao corretor ortográfico podem usar a sinalização
RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS
em combinação com outros atributos de sugestão, bem como os métodosgetSuggestionsAttributes()
egetSuggestionsCount()
, para determinar se as palavras de entrada precisam ser marcadas como erros de digitação e oferecer sugestões. - Um novo estilo
FLAG_AUTO_CORRECTION
para períodos de texto indica que a correção automática está prestes a ser aplicada a uma palavra/texto que o usuário está digitando/compondo. Esse tipo de sugestão é renderizado de maneira diferente para indicar que a correção automática está acontecendo.
Bluetooth
Os novos métodos públicos fetchUuidsWithSdp()
e getUuids()
permitem que os apps determinem os recursos
(UUIDs) compatíveis com um dispositivo remoto. No caso de fetchUuidsWithSdp()
, o sistema realiza uma
descoberta de serviço no dispositivo remoto para receber os UUIDs com suporte e, em seguida,
transmite o resultado em uma intent ACTION_UUID
.
Kit de ferramentas de interface
Os novos métodos setUserVisibleHint()
e
getUserVisibleHint()
permitem que um
fragmento defina uma dica se está visível para o usuário ou não no momento. O
sistema adia o início de fragmentos que não são visíveis ao usuário até que os carregadores
de fragmentos visíveis sejam executados. A dica de visibilidade é "verdadeira" por padrão.
Gráficos
- O novo método
setDefaultBufferSize(int, int)
emSurfaceTexture
define o tamanho padrão dos buffers de imagem. Esse método pode ser usado para definir o tamanho da imagem ao produzir imagens comCanvas
(vialockCanvas(Rect)
) ou OpenGL ES (via EGLSurface). - Adiciona definições para os tipos enumerados da extensão GL_OES_EGL_image_external do OpenGL ES:
GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES
,GL_SAMPLER_EXTERNAL_OES
,GL_TEXTURE_BINDING_EXTERNAL_OES
eGL_TEXTURE_EXTERNAL_OES
.
Acessibilidade
- Os clientes de
RemoteViews
agora podem usar o métodosetContentDescription()
para definir e receber a descrição de conteúdo de qualquer visualização no layout inflado. - Os métodos
getMaxScrollX()
,getMaxScrollY()
,setMaxScrollX()
esetMaxScrollY()
permitem que os apps recebam e definam o deslocamento máximo de rolagem de um objetoAccessibilityRecord
. - Quando o modo de exploração por toque estiver ativado, uma nova configuração segura
ACCESSIBILITY_SPEAK_PASSWORD
indica se o usuário solicita que o IME fale o texto inserido nos campos de senha, mesmo quando um fone de ouvido não estiver em uso. Por padrão, nenhuma senha será falada, a menos que um fone de ouvido esteja em uso.
Conversão texto em voz
- Adiciona o novo método
getFeatures()
para consultar e ativar o suporte a TTS de rede. - Adiciona uma nova classe de listener,
UtteranceProgressListener
, que os mecanismos podem registrar para receber notificações de erros de síntese de fala.
Database
- Uma nova classe
CrossProcessCursorWrapper
permite que os provedores de conteúdo retornem resultados de uma consulta entre processos com mais eficiência. A nova classe é um elemento básico útil para unir cursores que serão enviados a processos remotamente. Ela também pode transformar objetosCursor
normais em objetosCrossProcessCursor
de forma transparente.A classe
CrossProcessCursorWrapper
corrige problemas comuns de desempenho e bugs que os aplicativos encontram ao implementar provedores de conteúdo. - O construtor
CursorWindow(java.lang.String)
agora usa uma string de nome como entrada. O sistema não distingue mais janelas de cursor locais e remotas, então o uso deCursorWindow(boolean)
foi descontinuado.
Intents
Adiciona novas categorias para segmentar tipos comuns de aplicativos no
dispositivo, como CATEGORY_APP_BROWSER
, CATEGORY_APP_CALENDAR
, CATEGORY_APP_MAPS
e muito mais.
Câmera
MediaMetadataRetriever
adiciona a nova constanteMETADATA_KEY_LOCATION
para permitir que os apps acessem informações de localização de uma imagem ou um vídeo.CamcorderProfile
adiciona os perfis de resolução QVGA (320x240). O nível de qualidade é representado pelas constantesQUALITY_QVGA
eQUALITY_TIME_LAPSE_QVGA
.- Os novos métodos
setVideoStabilization()
,getVideoStabilization()
eisVideoStabilizationSupported()
permitem verificar e gerenciar a estabilização de vídeo para umCamera
.
Permissões
Confira a seguir as novas permissões:
- android.Manifest.permission#READ_SOCIAL_STREAM e android.Manifest.permission#WRITE_SOCIAL_STREAM: permite que um adaptador de sincronização leia e grave dados de fluxo social em um contato no Provedor de contatos compartilhado.
Para ter uma visão detalhada de todas as mudanças da API no Android 4.0.3 (nível 15 da API), consulte o Relatório de diferenças da API.
Nível de API
Um identificador de número inteiro (15) é atribuído à API do Android 4.0.3, armazenado no próprio sistema. Esse identificador, chamado de "nível da API", permite que o sistema determine corretamente se um aplicativo é compatível com o sistema antes da instalação.
Para usar as APIs introduzidas no Android 4.0.3 no seu aplicativo, você precisa compilar o
aplicativo em uma plataforma Android com suporte ao nível 15 da API ou
mais recente. Dependendo das suas necessidades, talvez você também precise adicionar um
atributo android:minSdkVersion="15"
ao
elemento
<uses-sdk>
.
Para mais informações, consulte o documento Níveis de API.