Pular para o conteúdo

Mais visitados

Visitados recentemente

navigation

Determinação e monitoramento do estado e do tipo da ancoragem

Dispositivos Android podem ser ancorados em diversos tipos de bases. Isso pode incluir bases no carro ou em casa e bases digitais ou analógicas. O estado da base normalmente está vinculado ao estado de carregamento porque muitas bases fornecem energia para os dispositivos ancorados.

A forma como o estado da base do telefone afeta a taxa de atualização depende do aplicativo. É possível optar pelo aumento da frequência de um aplicativo de um centro esportivo quando o mesmo está na base do desktop ou desativar completamente as atualizações se o dispositivo está na dock do carro. Por outro lado, é possível maximizar as atualizações quando está na base do carro se o serviço de segundo plano está atualizando as condições do tráfego.

O estado da base também é transmitido como uma Intent fixa, permitindo consultar se o dispositivo está ancorado ou não e em que tipo de base.

Determinar o estado atual da ancoragem

Os detalhes do estado da base são incluídos como um extra na transmissão fixa da ação ACTION_DOCK_EVENT. Por ser uma fixação, não é preciso registrar um BroadcastReceiver. Basta chamar registerReceiver() passando null como o receptor de transmissão, como mostrado no snippet a seguir.

IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);

O estado de ancoragem atual pode ser extraído do extra EXTRA_DOCK_STATE:

int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;

Determinar o tipo de base atual

Se um dispositivo está ancorado, isso pode acontecer em um dos quatro tipos diferentes de base:

Observe que as duas últimas opções só foram introduzidas no Android no nível da API 11, portanto, é uma prática recomendada conferir todas as três opções, onde o interesse é no tipo de base, não se ela é digital ou analógica, especificamente:

boolean isCar = dockState == EXTRA_DOCK_STATE_CAR;
boolean isDesk = dockState == EXTRA_DOCK_STATE_DESK ||
                 dockState == EXTRA_DOCK_STATE_LE_DESK ||
                 dockState == EXTRA_DOCK_STATE_HE_DESK;

Monitorar mudanças no estado ou tipo de base

Sempre que o dispositivo está ancorado ou não, a ação ACTION_DOCK_EVENT é transmitida. Para monitorar alterações no estado da base do dispositivo, basta registrar um receptor de transmissão no manifesto do aplicativo, como mostrado no snippet abaixo:

<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>

É possível extrair o tipo e o estado da base dentro da implementação do receptor usando as mesmas técnicas descritas na etapa anterior.

Este site usa cookies para armazenar suas preferências quanto às opções de idioma e exibição específicas ao site.

Receba as dicas e notícias mais recentes para desenvolvedores Android que ajudarão você a ter sucesso no Google Play.

* Campos obrigatórios

Uhu!

Siga o Google Developers no WeChat

Navegar neste site em ?

Você solicitou uma página em , mas sua preferência de idioma para este site está definida como .

Quer alterar sua preferência de idioma e navegar neste site em ? Para alterar a preferência de idioma depois, use o menu de idiomas na parte inferior de cada página.

É preciso ter o nível de API ou superior para esta aula

Este documento está oculto porque o nível de API selecionado para a documentação é o . Para alterar o nível, clique no seletor acima da barra de navegação esquerda.

Para mais informações sobre como especificar o nível de API que o seu app precisa, leia o artigo Compatibilidade com diferentes versões de plataforma.

Take a short survey?
Help us improve the Android developer experience. (April 2018 — Developer Survey)