Я использую какой-то рабочий код, который я нашел here в службе для обнаружения состояния подключения наушников через ACTION_HEADSET_PLUG. У меня есть два телефона для тестирования, Gingerbread Motorola и Jelly Bean LG. На телефоне Gingerbread все отлично работает ... я подключаю наушники, и я получаю одну трансляцию от Android, а затем выполняю свою работу. На телефоне Jelly Bean я получаю две (2) трансляции для каждого изменения состояния наушников, и поэтому мои собственные вещи затем вызывают дважды. Я не уверен на 100%, но я не думаю, что это связано с липкими трансляциями, как если бы это было так, я должен видеть то же поведение на телефонах Gingerbread и Jellybean.Как реагировать один раз на несколько передач? Jelly Bean LG отправляет две трансляции для одного события
Фильтрация всей системы LogCat сбщ для «headset_plug» по телефону Jelly Bean я увидеть что-то вроде этого на изменение гарнитуры состояния:
02-01 07:39:11.983: I/MusicBrowser(1739): [MediaPlaybackService.java:mHeadsetReceiver.onReady()] oooooo intentIntent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) }
02-01 07:39:12.083: I/MusicBrowser(1739): [MediaPlaybackService.java:mHeadsetReceiver.onReady()] oooooo intentIntent { act=android.intent.action.HEADSET_PLUG flg=0x40000010 (has extras) }
я мог ошибиться, но, все кажется, как этот телефон посылает два вещания в микросекундах друг друга, тогда как Gingerbread Motorola отправляет только один. Я не знаю, является ли это ошибкой Android, преднамеренным изменением между версиями, проблемой с этим конкретным телефоном LG или тем, что мне кажется, мне нужен способ ответить только один раз, когда одна и та же передача отправляется несколько раз.
Просмотрели ли вы дополнительные функции на этих «намерениях», чтобы узнать, есть ли различия? – CommonsWare
Мое предположение - это дополнительные, идентичные, потому что результаты идентичны.В связанном коде выше он фильтрует «состояние» дополнительно в операторе switch, а журналы подключаются (состояние 1) и отключается (состояние 0). На телефоне Jelly Bean я получаю ровно два подключенных или два отключенных сообщения журнала. Если дополнительные параметры были разными, я должен получить два разных журнала или игнорировать дополнительные функции, если они не соответствуют типу «состояние». –