Dispositivos Android podem ser ancorados em diferentes tipos de bases. Esses incluem bases para carro, bases em casa e bases digitais ou analógicas. O estado da base é normalmente ligadas ao estado de carregamento, já que muitas bases fornecem energia dispositivos ancorados.
Seu app afeta a taxa de atualização do smartphone no estado da base. É possível aumentar a frequência de atualização de um app de notícias esportivas quando ele está na base do computador; ou desativar completamente as atualizações se o dispositivo estiver na base para carro. Por outro lado, é possível maximizar as atualizações quando estiver na base do carro se o serviço em segundo plano estiver sendo atualizado as condições de trânsito.
O estado da base também é transmitido
Intent
,
permitindo que você consulte se o dispositivo está encaixado e em que tipo de base se
assim.
Determinar o estado atual de encaixe na base
Os detalhes do estado da base são incluídos como um extra em um
transmissão fixa do
ACTION_DOCK_EVENT
à ação. Por ser fixo, você pode chamar
registerReceiver()
,
transmitindo null
como o broadcast receiver. O snippet a seguir
mostra como concluir esse processo:
Kotlin
val dockStatus: Intent? = IntentFilter(Intent.ACTION_DOCK_EVENT).let { ifilter -> context.registerReceiver(null, ifilter) }
Java
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT); Intent dockStatus = context.registerReceiver(null, ifilter);
Você pode extrair o status atual de ancoragem do
EXTRA_DOCK_STATE
extra:
Kotlin
val dockState: Int = dockStatus?.getIntExtra(EXTRA_DOCK_STATE, -1) ?: -1 val isDocked: Boolean = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED
Java
int dockState -1; if (dockStatus != null) { dockState = dockStatus.getIntExtra(EXTRA_DOCK_STATE, -1); } boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
Determinar o tipo de base atual
Se um dispositivo estiver na base, ele poderá ser encaixado em qualquer um dos quatro diferentes tipos de base:
- Carro
- Mesa
- Mesa de baixa capacidade (analógica)
- Mesa de alta tecnologia (digital)
As duas últimas opções são introduzidas apenas no nível 11 da API do Android. Portanto, são uma prática recomendada é verificar os três tipos de mesa quando você estiver interessado apenas o tipo de base em vez de digital ou analógico:
Kotlin
val isCar: Boolean = dockState == EXTRA_DOCK_STATE_CAR val isDesk: Boolean = dockState == EXTRA_DOCK_STATE_DESK || dockState == EXTRA_DOCK_STATE_LE_DESK || dockState == EXTRA_DOCK_STATE_HE_DESK
Java
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;