Logo ru.androidermagazine.com
Logo ru.androidermagazine.com

Replay: растущая борьба управления воспроизведением через Bluetooth

Anonim

Это то, что я использую на работе, дома, в постели, в душе и повсюду между ними, чтобы держать меня в здравом уме и счастливым. Музыка делает меня лучше, и, так как музыка - большая часть моего опыта работы с Android, я медленно переживал упадок, который я мучительно осознавал в последние несколько лет, особенно в последние несколько месяцев.

Иногда я включаю наушники Bluetooth, нажимаю кнопку воспроизведения, и ничего не происходит. И ничего не происходит намного больше, чем раньше.

В мои первые дни Android, когда в моем кармане был Soarin (да, я назвал свой Samsung Captivate Glide) и мою первую пару наушников Kinivo Bluetooth на шее, мне не нужно было открывать Google Play Music, мне просто нужно было нажать играть на моих наушниках. Фактически, я вынул Samsung Galaxy SII из ящика, загрузил его впервые за несколько месяцев, соединил с ним наушники Bluetooth и нажал кнопку воспроизведения. И музыка играет.

Не так много на нынешних устройствах у меня в конюшне.

HTC 10 просто не подчиняется элементам управления Bluetooth иногда, постоянное уведомление для музыкального приложения или нет. Скорее, я нажму кнопку воспроизведения на своем мото 360 или на самом телефоне. HTC A9 такой же привередливый. Nexus 5X иногда не запускает музыку обратно с постоянным уведомлением, но иногда делает это без него. Будет воспроизводиться Samsung S6 edge, но иногда вместо воспроизведения музыкального приложения, которое было активным в последний раз, по умолчанию оно возвращается к предварительно загруженному музыкальному приложению.

Здесь постоянно повторяется слово: иногда. Это связано с тем, что в этой проблеме много переменных: какое устройство Android вы используете, какое устройство Bluetooth используете, какую версию Android и Bluetooth используете ваши устройства, какое музыкальное приложение вы пытаетесь воспроизвести, в какой среде вы находитесь и т. д. Это очень много для того, чтобы внести вклад в кажущуюся простую проблему, когда кнопки не работают при каждом нажатии.

Так что на самом деле здесь происходит? Ну, ответ становится немного - хорошо, много - технический.

Когда вы нажимаете кнопку, она интерпретируется Android и транслируется по всей системе через KeyEvents. Следующая кнопка на вашей гарнитуре интерпретируется и доставляется как KEYCODE_MEDIA_NEXT через KeyEvent. Существует большое разнообразие значений, которые можно выбрать для разных кнопок или даже для одной и той же кнопки. Кнопка воспроизведения на большинстве гарнитур также является кнопкой паузы, поэтому клавиша может возвращать KEYCODE_MEDIA_PAUSE, KEYCODE_MEDIA_PLAY или гораздо более вероятную KEYCODE_MEDIA_PLAY_PAUSE в зависимости от устройства и его текущего состояния. Кстати, если вы когда-либо нажимали паузу, а музыка начиналась где-то еще, в то время как то, что вы смотрели / слушали, было приостановлено, это виноват KeyEvent, потому что он был получен и обработан двумя приложениями.

После интерпретации KeyEvents они все равно должны прослушиваться музыкальным приложением, которое прослушивает мультимедийные кнопки через намерение BroadcastReceiver. В конце концов, приложение не может работать с KeyEvent, если оно его не видит. Если что-то мешает получателю в приложении получать нажатия кнопок, это может привести к путанице в элементах управления воспроизведением несколькими способами, в том числе с перемежающейся проблемой, описанной выше. Если приложение слишком быстро отменяет регистрацию своего BroadcastReceiver, когда оно теряет Audio Focus (метод, с помощью которого Android определяет, какие приложения могут воспроизводить аудио в данный момент времени), тогда, когда вы приостанавливаете свою музыку, оно может потерять прекращение прослушивания и не услышать нажатия кнопки, сообщающей это, чтобы начать играть снова. Вот почему важно, чтобы мультимедийные приложения правильно обрабатывали и Audio Focus, и свой BroadcastReceiver, чтобы даже когда устройство потеряло первое, оно не потеряло второе.

Во многом это зависит от того, насколько хорошо запрограммировано ваше музыкальное приложение и какие мультимедийные кнопки передаются вашим устройством при нажатии кнопки на гарнитуре. Это также означает, что даже если элементы управления воспроизведением являются единообразными при покупке устройства, они могут быть повреждены обновлениями приложения или обновлениями системы, которые изменяют скорость, с которой оно прекращает прослушивание.

В таких приложениях, как Google Play Music, обновления, ломающие события, становятся все более и более частыми. В то время как большинство разрывов исправляются быстро, другие могут занять месяцы, чтобы быть исправленными. Временные проблемы, такие как ваша музыка не запускается должным образом по Bluetooth, могут быть трудны для регистрации и правильной идентификации, еще больше замедляя возможное исправление.

Если музыкальные приложения не имеют аудиофокуса и не работают как службы переднего плана (если нет постоянного уведомления для медиаплеера), есть вероятность, что система Android (точнее Doze) или так называемый «ресурс» «сберегающие» приложения могут убить приложение, чтобы освободить память для других действий. Когда это происходит, нажатие кнопки воспроизведения может ничего не делать, потому что нет открытых приемников, которые слушают команды.

Теперь, как есть несколько вещей, которые могут сломать ваши элементы управления воспроизведением, так и есть варианты, чтобы попытаться это исправить.

Первое решение немного экстремально, но одно из немногих, которые пользователи могут реализовать на своих нынешних телефонах без каких-либо корневых изменений программного обеспечения. Используя такие приложения, как Tasker и AutoInput, мы можем обнаружить нажатие кнопки, подавить исходное действие KeyEvent, а затем выполнить более специализированную (и более согласованную) команду, направленную непосредственно на одно приложение. Например, вместо того, чтобы кнопка воспроизведения являлась общей командой воспроизведения мультимедиа, которая могла быть захвачена или проигнорирована десятками медиа-сервисов, мы могли бы переназначить ее как команду переключения воспроизведения / паузы, специфичную для Google Play Music, чтобы другие приложения не начать вместо этого.

Это может быть утомительным для программирования, и, подавляя исходное действие и заменяя его, мы ломаем встроенную кнопку паузы, которую мы можем захотеть использовать в других приложениях, таких как YouTube или Netflix. Короче говоря, это не очень хорошее решение для нетехнических пользователей или пользователей, которые используют различные мультимедийные приложения.

Многие телефоны включают набор жестов и действий кнопок, которые вы можете включить или отключить в настройках, например, дважды нажмите, чтобы разбудить, или дважды нажмите Home / power для камеры. Хотя добавление элементов управления Bluetooth в этот список может удлинить и усложнить его, если бы система Android должна была подтверждать и направлять KeyEvent на конкретное приложение, а не передавать общий сигнал на те приемники, которые прослушивают (или не прослушивают), мы могли бы обеспечить согласованность. Мы уже видели это на устройствах ранее, например, открыв Moto Assist, включив назначенное музыкальное приложение, когда оно подключалось к Bluetooth вашего автомобиля.

Изменение способа, которым Android обрабатывает мультимедийные кнопки - и в целом обрабатывает ввод кнопок, поскольку контроллеры Bluetooth и клавиатуры сталкиваются с собственными проблемами - может создать столько новых проблем, сколько и решить, но с учетом количества мест, которые можно и нужно делать неправильно в нынешней системе, возможно, стоит разбить яйца, чтобы приготовить новый омлет.

В конце концов, обычные пользователи не хотят копаться в ключевых командах, приемниках и том, какое приложение прямо сейчас имеет фокус на аудио. Мы хотим сосредоточиться на самой музыке и на том, куда она нас ведет. И если я не могу включить музыку, которая держит меня в здравом уме в шумных людных местах с первой попытки, я не счастливая девушка. Держу пари, я не единственный.

Мы можем заработать комиссию за покупки, используя наши ссылки. Учить больше.