每当设备停靠或取消停靠时,都会广播 ACTION_DOCK_EVENT 操作。要监控设备停靠状态的变化,只需在应用程序清单中注册一个广播接收器,如下面的片段所示:
<action android:name="android.intent.action.ACTION_DOCK_EVENT"/>
如果设备已对接,则可以将其对接在四种不同类型的对接中的任何一种中:
停靠状态详细信息作为附加内容包含在 ACTION_DOCK_EVENT 操作的粘性广播中。因为它是粘性的,所以不需要注册 BroadcastReceiver。您可以简单地调用 registerReceiver() 传入 null 作为广播接收器,如下一个片段所示。
IntentFilter ifilter = new IntentFilter(Intent.ACTION_DOCK_EVENT);
Intent dockStatus = context.registerReceiver(null, ifilter);
您可以从 EXTRA_DOCK_STATE extra 中提取当前的对接状态:
int dockState = battery.getIntExtra(EXTRA_DOCK_STATE, -1);
boolean isDocked = dockState != Intent.EXTRA_DOCK_STATE_UNDOCKED;
您可以通过以下方式找到停靠状态
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;
编辑 :
如果您的应用仍未收到广播,请尝试使用此代码发送手动广播并检查代码:
adb shell am broadcast -a android.intent.action.POWER_CONNECTED -n com.jm.monitoringbatterydemo/.PowerConnectionReceiver
更改广播的名称和您的接收器。