AIMP Forum
AIMP for Android => Вопросы / Questions => Topic started by: CitizenOfDreams on June 16, 2021, 13:02:03
-
На форуме искал, тему с такой проблемой не нашел.
Есть три приложения для прослушивания музыки: AIMP, SoundCloud и Bandcamp. Есть беспроводные наушники с кнопкой Play/Pause.
SoundCloud и Bandcamp эту кнопку между собой мирно делят. В каком приложении слушаешь музыку, в том приложении она останавливается и запускается.
Но стоит запустить AIMP, как он начинает перехватывать нажатия кнопки. Слушаешь SoundCloud, нажимаешь кнопку, музыка останавливается. Нажимаешь еще раз - начинает играть AIMP. При этом в настройках AIMP все опции в Control - Headset выключены:
Action on single tap: (none) и т. д.
Телефон Samsung A51, прошивка родная.
-
Вы должны понимать, что за распределение команд отвечает не плеер, а ОС. Если AIMP не закрыть - он продолжит работать в фоне и его медиа-сессия будет активна, и именно ей ОС отдаст управление.
-
Вы должны понимать, что за распределение команд отвечает не плеер, а ОС. Если AIMP не закрыть - он продолжит работать в фоне и его медиа-сессия будет активна, и именно ей ОС отдаст управление.
Это я понимаю - но ведь SoundCloud и Bandcamp как-то разбираются между собой, кому из них нужно реагировать на команду Play? Только AIMP не хочет "играть в команде".
-
Это я понимаю - но ведь SoundCloud и Bandcamp как-то разбираются между собой, кому из них нужно реагировать на команду Play? Только AIMP не хочет "играть в команде".
Вот:
Если AIMP не закрыть - он продолжит работать в фоне и его медиа-сессия будет активна, и именно ей ОС отдаст управление.
Возможно, перечисленные вами плееры гасят медиасессию сразу при сворачивании в фон, АИМП так не делает - его надо сознательно закрывать. Гугл не дает рекомендаций "как правильно".
-
Еще я бы порекомендовал попробовать 3.20 бета, там была проведена работа по защите сервиса плеера от несанкционированного запуска системой.
-
Возможно, перечисленные вами плееры гасят медиасессию сразу при сворачивании в фон
В паре Bandcamp-SoundCloud нужное приложение правильно выбирается независимо от сворачивания.
Слушаем музыку в Bandcamp.
Сворачиваем Bandcamp, разворачиваем SoundCloud.
Кнопка наушников по-прежнему останавливает и запускает музыку в Bandcamp.
Экранной кнопкой включаем музыку в SoundCloud - теперь кнопка наушников управляет музыкой только в SoundCloud, независимо от того, какое приложение свернуто или развернуто.
И только запуск AIMP портит всю идиллию.
-
Еще я бы порекомендовал попробовать 3.20 бета
Попробую, о результатах отпишусь. Спасибо!
-
И только запуск AIMP портит всю идиллию.
Еще раз: из AIMP нужно выходить, его недостаточно просто свернуть. Это важно, и справедливо для всех версий плеера.
-
Еще раз: из AIMP нужно выходить, его недостаточно просто свернуть. Это важно, и справедливо для всех версий плеера.
Да, после выхода из AIMP остальные аудиоплееры работают как положено. И в релизе, и в бета-версии. Но это, простите, довольно неудобно. Вопрос остается в силе - как делят между собой одну кнопку SoundCloud и Bandcamp, и можно ли научить этому AIMP?
-
Да, после выхода из AIMP остальные аудиоплееры работают как положено. И в релизе, и в бета-версии. Но это, простите, довольно неудобно. Вопрос остается в силе - как делят между собой одну кнопку SoundCloud и Bandcamp, и можно ли научить этому AIMP?
Нет, у нас все тривиально просто - нужно закрыть, жмете закрыть, нужно свернуть - свернули. Как программа поймет, когда надо закрываться при сворачивании, а когда - нет?
-
Нет, у нас все тривиально просто - нужно закрыть, жмете закрыть, нужно свернуть - свернули. Как программа поймет, когда надо закрываться при сворачивании, а когда - нет?
Так я и не хочу ее закрывать - кто вообще закрывает приложения в Андроиде? Я просто хочу, чтобы она не перехватывала нажатия кнопки, когда этого делать не следует. Другие приложения так могут, значит, теоретически, и AIMP можно научить хорошим манерам.
-
Мне такой вариант не нравиться. Если плеер в фоне, то нелогично лишать его возможности управления.
Как понял, разработчик не планирует исследовать вопрос детально, чтобы переписать поведение. Так что можете создать предложение в соответствующем разделе и посмотрим, поддержат ли такой вариант пользователи.
Кроме этого, не вижу смысла тратить ресурсы телефона и держать кучу плееров и браузеров в фоне. Хочешь слушать музыку, запускаешь программу. Хочешь слушать в другой программе, закрываешь текущую и открываешь другую.
-
Мне такой вариант не нравиться. Если плеер в фоне, то нелогично лишать его возможности управления.
Очень даже логично, если в это время ты управляешь другим плеером. Ну вот допустим ты слушаешь CD на музыкальном центре. Если нажать кнопку Pause, а затем Play, то логично ожидать, что зазвучит именно CD - а не радиостанция, кассета или вообще телевизор в соседней комнате.
Кроме этого, не вижу смысла тратить ресурсы телефона и держать кучу плееров и браузеров в фоне. Хочешь слушать музыку, запускаешь программу. Хочешь слушать в другой программе, закрываешь текущую и открываешь другую.
Андроид сам прекрасно управляет фоновыми процессами, ручное управление ему требуется только в особых случаях (связанных с кривизной рук программистов). Если бы я хотел пользоваться программами по одной за раз, то оставался бы на MS-DOS.
-
Андроид сам прекрасно управляет фоновыми процессами, ручное управление ему требуется только в особых случаях (связанных с кривизной рук программистов)
Ага, оно и видно, из двух активных медиа-сессий он почему-то выбирает не ту.
-
Так я и не хочу ее закрывать - кто вообще закрывает приложения в Андроиде? Я просто хочу, чтобы она не перехватывала нажатия кнопки, когда этого делать не следует.
А как это определить? Вот смотрите, если вы просто свернули приложении - у плеера остается виджет в шторке, вы можете вновь его снять с паузы и продолжить воспроизведение. Если я грохну фоновый сервис при сворачивании - виджет так же исчезнет.
-
Ага, оно и видно, из двух активных медиа-сессий он почему-то выбирает не ту.
Очень даже ту - пока одной из этих сессий не является AIMP. Повторюсь, что SoundCloud и Bandcamp безошибочно выбирают между собой нужную сессию. В какой программе музыка остановилась, в той она и продолжит играть при нажатии кнопки Play.
-
А как это определить?
Пользователь слушал CD и нажал на пульте кнопку Pause. Вопрос: что следует включить, когда пользователь нажмет кнопку Play:
1. CD
2. Магнитофон
3. Стиральную машину.
Как это работает во внутренних механизмах Андроида - я не знаю. Но на наглядном примере других программ вижу, что это возможно.
-
Очень даже ту - пока одной из этих сессий не является AIMP. Повторюсь, что SoundCloud и Bandcamp безошибочно выбирают между собой нужную сессию. В какой программе музыка остановилась, в той она и продолжит играть при нажатии кнопки Play.
То, что на конкретно вашем телефоне с конкретными плеерами у вас всё удачно работает - не означает, что на другом телефоне и других плеерах всё останется так же.
Пользователь слушал CD и нажал на пульте кнопку Pause. Вопрос: что следует включить, когда пользователь нажмет кнопку Play:
Не городите чушь. Если бы кнопка плей на пульте от CD могла бы включать магнитофоны, и стиралки, и микроволновки - обязательно бы получили неожиданные для вас варианты.
-
То, что на конкретно вашем телефоне с конкретными плеерами у вас всё удачно работает - не означает, что на другом телефоне и других плеерах всё останется так же.
Ну вот я и пишу разработчику одного из этих других плееров, с которым все работает неудачно.
-
Если бы кнопка плей на пульте от CD могла бы включать магнитофоны, и стиралки, и микроволновки - обязательно бы получили неожиданные для вас варианты.
И это был бы баг, который нужно было бы пофиксить, а не говорить, что это норма.
-
Пользователь слушал CD и нажал на пульте кнопку Pause. Вопрос: что следует включить, когда пользователь нажмет кнопку Play:
Ok, нажал он паузу, а не закрыть. Что должен подумать плеер? Что пользователь к нему скоро вернется, или нет? Отследить старт проигрывания в другом плеере теоретически можно, но будет ли правильным в таком случае закрываться? Вот тут сомнительно. Как работает у других - я не знаю, я не могу посмотреть их код. В документации Гугл не дает никаких "лучших практик", и, как показывает практика, все устройства ведут себя по разному. Поэтому за много лет, мы в АИМП сделали четкое разграничение: не нужен плеер - закрой его, нужен - оставь. Все, плеер 100% знает, что пользователь от него хочет. Почему Андроид путает сессии и ранжирует их по времени последнего использования - загадка. У гугла все как обычно: проблема есть, только решают ее сторонние разработчики в виде костылей в своих программах.
-
И это был бы баг, который нужно было бы пофиксить, а не говорить, что это норма.
Так я вас и спрашиваю, как пофиксить баг, если он на уровне ОС? Я могу заточить программу под ваш сценарий, только потом другие закидают меня шапками.
-
Ну вот я и пишу разработчику одного из этих других плееров, с которым все работает неудачно.
У меня стоит больше 20 плееров (по долгу службы), и все они ведут себя очень по разному. Поэтому я не могу с точностью утверждать "как правильно".
Наш подход я объяснил, решение проблемы дал.
-
Только что провёл эксперимент.
Запустил AIMP, VLC, Samsung Music, Youtube Music
Первые три между собой не конфликтуют, кнопка гарнитуры управляет последним плеером.
Но как только запускается Youtube Music - он всегда перехватывает на себя управление.
После некоторого переменного включения плееров - Samsung Music начал перехватывать на себя управление.
Ещё через некоторое время VLC начал перехватывать управление, причём даже после смахивания его виджета.
Как видите, ваша ситуация с АИМПом у меня не повторилась.
А так же приложение от самого Гугла имеет поведение, которое вам так не нравится.
Кроме того в принципе есть некая нестабильность поведения.
Телефон Samsung J7
-
Артем, спасибо за ответ, вашу позицию как разработчика я понял. Согласен, что в экосистеме Андроида поведение плееров малопредсказуемо и слаборегламентировано, и что реализация того, что лично я считаю логичным, может привести к неожиданным последствиям у другого пользователя, на другом телефоне или с другими приложениями. Буду искать workaround, потому как в остальном AIMP мне нравится. Спасибо за замечательный плеер!
-
Буду искать workaround, потому как в остальном AIMP мне нравится
Просто закрывайте плеер кнопкой выход