Основная проблема при проверке android.intent.action.ums_connected
заключается в том, что устройства, использующие протокол MTP (например, Samsung Nexus Galaxy), не получают эту трансляцию.
Именно поэтому я использую другой способ обнаружениякогда смартфон подключен или отключен:
Я проверяю состояние аккумулятора.Существует намерение под названием ACTION_BATTERY_CHANGED
, которое вызывается, когда происходит событие на батарее.В этом намерении есть несколько дополнительных полей, содержащих некоторую информацию.Одной из них является EXTRA_PLUGGED
:
Indicating whether the device is plugged in to a power source; 0 means it is on battery, other constants are different types of power sources.
Другими константами являются BATTERY_PLUGGED_AC
и BATTERY_PLUGGED_USB
Так что с помощью этой трансляции вы можете узнать, был ли смартфон подключен к USB, дажеесли он использует протокол MTP.
Чтобы узнать, отключен ли смартфон, вам необходимо проверить, когда значение EXTRA_PLUGGED
изменяется с BATTERY_PLUGGED_USB
на 0
.