Android 设备可以插入不同类型的基座。这些 包括车载基座、家庭基座以及数字或模拟基座。基座状态为 通常与充电状态密切相关 已插入基座的设备
您的应用会影响手机在插接状态下的更新频率。你可以提高 体育新闻应用在桌面基座中的更新频率,或者 如果设备插入了车载基座,完全停用更新。反之,您也可以 如果后台服务正在更新,则在已插入基座的车载设备上可最大限度地提高更新频率 实时路况。
插接状态也以粘性广告的形式广播
Intent
,
可让您查询设备是否已插入基座以及
是这样。
确定当前插接状态
基座状态详情以 extra 形式包含在
粘性广播
ACTION_DOCK_EVENT
操作。由于它是粘性广告,因此您可以调用
registerReceiver()
,
传入 null
作为广播接收器。以下代码段
展示了如何完成此流程:
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);
您可以从
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;
确定当前基座类型
如果设备已插入基座,可插接至下列四种类型中的一种 不同类型的基座:
- 汽车
- 桌面基座
- 低端(模拟)桌面
- 高端(数字)办公桌
后两个选项仅在 Android API 级别 11 中引入, 如果您只对内容感兴趣,最好将这三种桌面类型都选中 基座类型,而不是具体是数字或模拟:
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;