Android Honeycomb 3.2 обнаруживает соединение MTP через USB
Я видел другие сообщения об обнаружении USB-соединения, но они не говорили о MPT конкретно и просто более общее обнаружение, поэтому я решил, что я спрошу конкретно о MTP.
Я подключаю свой Xoom к компьютеру через USB, и я хочу, чтобы мое приложение записывало файл, когда установлено соединение MTP. Когда USB отключен и MTP-сервер остановлен, я хочу записать другой файл.
Итак, я хочу обнаружить как подключенные, так и не связанные случаи. Кажется, я не вижу каких-либо намерений, которые отправляются, когда это происходит.
Я видел некоторые предложения, перечисленные в android.developer, такие как:
ACTION_MEDIA_SHARED
ACTION_UMS_CONNECTED
ACTION_UMS_DISCONNECTED
но они используются для массового хранения USB, а Xoom делает MTP, а не запоминающее устройство USB.
Это должно быть возможно, когда вы видите вывод logcat, когда соединение USB регистрируется вместе с запуском и остановкой сервера MTP.
D/Vold (85): USB отсоединен
D/Tethering (155): InitialState.processMessage what = 4
D/Tethering (155): sendTetherStateChangedBroadcast 0, 0, 0
D/MtpService (2674): остановка сервера MTP
D/Tethering (155): sendTetherStateChangedBroadcast 1, 0, 0
D/Tethering (155): interfaceAdded: usb0
D/MtpService (2674): addStorageLocked 65537/mnt/sdcard
D/MtpService (2674): запуск сервера MTP
D/MtpService (2674): addStorageLocked 65537/mnt/sdcard
D/Vold (85): USB-соединение
Кто-нибудь знает, как я могу достичь своей цели? Даже способность обнаруживать USB Connected/Disconnected, вероятно, будет работать для меня, хотя, как я видел в некоторых других сообщениях, это не представляется возможным.
Спасибо!
Ответы
Ответ 1
Мне было интересно то же самое, и я придумал альтернативу:
Я проверяю состояние batery. Существует намерение, называемое 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
Ответ 2
Слушайте эту широковещательную рассылку android.hardware.usb.action.USB_STATE
Я ее протестировал, и она работает с устройством PTP или MTP. есть булевский дополнительный "подключенный", который скажет вам, подключен ли USB-кабель или нет.