Создание контроллера кнопок гарнитуры «посредник» в Android - PullRequest
6 голосов
/ 24 января 2011

Все,

Я искал ответ на этот вопрос, но не получил ничего точного ... Я впервые пишу приложение для Android, поэтому, пожалуйста, будьте осторожны:)

Я довольно огорчен минимальной поддержкой гарнитуры в Android - в отличие, например, от iPhone, он, кажется, изначально поддерживает только одну кнопку, поэтому нет никакой регулировки громкости при совместимости гарнитуры.Кроме того, если я слушаю музыку, и поступает звонок, ОС автоматически приостанавливает музыку, но кнопка гарнитуры по-прежнему функционирует ТОЛЬКО как кнопка мультимедиа - я не могу использовать ее для ответа / завершения вызова.Если я отвечаю на звонок через экран и нажимаю кнопку гарнитуры, музыка начинается снова, но звонок продолжается ...

Я хотел бы создать приложение «посредник», которое может подобрать гарнитурубыла нажата кнопка (через Keyevent.KEYCODE_HEADSETHOOK) и затем может определить, выполнять ли действие по умолчанию ACTION_MEDIA_BUTTON (переключение воспроизведения / паузы в выбранном медиаплеере) или, если есть входящий вызов, приостановить воспроизведение музыки и ответить на телефон (изатем при повторном нажатии завершите вызов и перезапустите медиаплеер).Возможно, даже проверьте ACTION_MULTIPLE на кнопке гарнитуры, чтобы назначить различные параметры (ACTION_MEDIA_NEXT, ACTION_MEDIA_PREVIOUS и т. Д.).Возможно также иметь возможность определить, были ли нажаты разные кнопки на гарнитуре (если гарнитура, например, модная гарнитура для iPhone), и «перевести» эти нажатия кнопок в соответствующую ACTION_MEDIA_ *).Это может быть невозможным, если ОС не может определить разницу между разными кнопками, очевидно.

Очевидно, что такое приложение должно получать намерение с достаточно высоким приоритетом, чтобы оно могло прервать трансляциюдо того, как текущий медиаплеер получит его.

Я возился с созданием различных классов BroadcastReceiver, фильтров намерений и т. д., но часть проблемы заключается в том, что встроенный эмулятор Android, который поставляется с Eclipse, непохоже, что есть возможность имитировать пользователя, подключающего гарнитуру и / или впоследствии нажимающего кнопку гарнитуры.Поэтому каждый раз, когда я получаю что-то перспективное, я должен положить его на свой реальный телефон и попробовать его - это отнимает много времени и хлопот.

3 вопроса:

  1. Я упускаю что-то очевидное - это реальная проблема, и если да, то уже решена ли она?

  2. Если это проблема, можно ли написать такуюприложение для посредников?

  3. Существуют ли другие эмуляторы Android, которые могут проверять действия, связанные с гарнитурой?

Спасибо,

Рори

1 Ответ

1 голос
/ 27 января 2011

Я уже написал именно такое приложение.Это называется темой этой темы: Контроллер кнопки гарнитуры; -)

http://www.androidpit.com/en/android/market/apps/app/com.kober.headset/Headset-Button-Controller

Приветствия, Кристоф

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...