AIMP Forum

AIMP for Android => Вопросы / Questions => Topic started by: CitizenOfDreams on June 16, 2021, 13:02:03

Title: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post 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, прошивка родная.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 16, 2021, 13:24:55
Вы должны понимать, что за распределение команд отвечает не плеер, а ОС. Если AIMP не закрыть - он продолжит работать в фоне и его медиа-сессия будет активна, и именно ей ОС отдаст управление.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 16, 2021, 13:57:30
Вы должны понимать, что за распределение команд отвечает не плеер, а ОС. Если AIMP не закрыть - он продолжит работать в фоне и его медиа-сессия будет активна, и именно ей ОС отдаст управление.

Это я понимаю - но ведь SoundCloud и Bandcamp как-то разбираются между собой, кому из них нужно реагировать на команду Play? Только AIMP не хочет "играть в команде".
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 16, 2021, 14:19:48
Это я понимаю - но ведь SoundCloud и Bandcamp как-то разбираются между собой, кому из них нужно реагировать на команду Play? Только AIMP не хочет "играть в команде".

Вот:

Если AIMP не закрыть - он продолжит работать в фоне и его медиа-сессия будет активна, и именно ей ОС отдаст управление.

Возможно, перечисленные вами плееры гасят медиасессию сразу при сворачивании в фон, АИМП так не делает - его надо сознательно закрывать. Гугл не дает рекомендаций "как правильно".
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 16, 2021, 14:35:44
Еще я бы порекомендовал попробовать 3.20 бета, там была проведена работа по защите сервиса плеера от несанкционированного запуска системой.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 16, 2021, 14:39:29
Возможно, перечисленные вами плееры гасят медиасессию сразу при сворачивании в фон

В паре Bandcamp-SoundCloud нужное приложение правильно выбирается независимо от сворачивания.

Слушаем музыку в Bandcamp.
Сворачиваем Bandcamp, разворачиваем SoundCloud.
Кнопка наушников по-прежнему останавливает и запускает музыку в Bandcamp.
Экранной кнопкой включаем музыку в SoundCloud - теперь кнопка наушников управляет музыкой только в SoundCloud, независимо от того, какое приложение свернуто или развернуто.

И только запуск AIMP портит всю идиллию.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 16, 2021, 14:41:49
Еще я бы порекомендовал попробовать 3.20 бета

Попробую, о результатах отпишусь. Спасибо!
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 16, 2021, 14:44:51
И только запуск AIMP портит всю идиллию.

Еще раз: из AIMP нужно выходить, его недостаточно просто свернуть. Это важно, и справедливо для всех версий плеера.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 16, 2021, 18:44:53
Еще раз: из AIMP нужно выходить, его недостаточно просто свернуть. Это важно, и справедливо для всех версий плеера.

Да, после выхода из AIMP остальные аудиоплееры работают как положено. И в релизе, и в бета-версии. Но это, простите, довольно неудобно. Вопрос остается в силе - как делят между собой одну кнопку SoundCloud и Bandcamp, и можно ли научить этому AIMP?
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 16, 2021, 19:11:39
Да, после выхода из AIMP остальные аудиоплееры работают как положено. И в релизе, и в бета-версии. Но это, простите, довольно неудобно. Вопрос остается в силе - как делят между собой одну кнопку SoundCloud и Bandcamp, и можно ли научить этому AIMP?

Нет, у нас все тривиально просто - нужно закрыть, жмете закрыть, нужно свернуть - свернули. Как программа поймет, когда надо закрываться при сворачивании, а когда - нет?
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 16, 2021, 19:24:06
Нет, у нас все тривиально просто - нужно закрыть, жмете закрыть, нужно свернуть - свернули. Как программа поймет, когда надо закрываться при сворачивании, а когда - нет?

Так я и не хочу ее закрывать - кто вообще закрывает приложения в Андроиде? Я просто хочу, чтобы она не перехватывала нажатия кнопки, когда этого делать не следует. Другие приложения так могут, значит, теоретически, и AIMP можно научить хорошим манерам.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Алексей Долматов on June 16, 2021, 19:54:10
Мне такой вариант не нравиться. Если плеер в фоне, то нелогично лишать его возможности управления.
Как понял, разработчик не планирует исследовать вопрос детально, чтобы переписать поведение. Так что можете создать предложение в соответствующем разделе и посмотрим, поддержат ли такой вариант пользователи.
Кроме этого, не вижу смысла тратить ресурсы телефона и держать кучу плееров и браузеров в фоне. Хочешь слушать музыку, запускаешь программу. Хочешь слушать в другой программе, закрываешь текущую и открываешь другую.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 16, 2021, 21:06:08
Мне такой вариант не нравиться. Если плеер в фоне, то нелогично лишать его возможности управления.

Очень даже логично, если в это время ты управляешь другим плеером. Ну вот допустим ты слушаешь CD на музыкальном центре. Если нажать кнопку Pause, а затем Play, то логично ожидать, что зазвучит именно CD - а не радиостанция, кассета или вообще телевизор в соседней комнате.

Quote
Кроме этого, не вижу смысла тратить ресурсы телефона и держать кучу плееров и браузеров в фоне. Хочешь слушать музыку, запускаешь программу. Хочешь слушать в другой программе, закрываешь текущую и открываешь другую.

Андроид сам прекрасно управляет фоновыми процессами, ручное управление ему требуется только в особых случаях (связанных с кривизной рук программистов). Если бы я хотел пользоваться программами по одной за раз, то оставался бы на MS-DOS.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 17, 2021, 08:02:54
Андроид сам прекрасно управляет фоновыми процессами, ручное управление ему требуется только в особых случаях (связанных с кривизной рук программистов)

Ага, оно и видно, из двух активных медиа-сессий он почему-то выбирает не ту.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 17, 2021, 08:06:21
Так я и не хочу ее закрывать - кто вообще закрывает приложения в Андроиде? Я просто хочу, чтобы она не перехватывала нажатия кнопки, когда этого делать не следует.

А как это определить? Вот смотрите, если вы просто свернули приложении - у плеера остается виджет в шторке, вы можете вновь его снять с паузы и продолжить воспроизведение. Если я грохну фоновый сервис при сворачивании - виджет так же исчезнет.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 17, 2021, 09:33:34
Ага, оно и видно, из двух активных медиа-сессий он почему-то выбирает не ту.

Очень даже ту - пока одной из этих сессий не является AIMP. Повторюсь, что SoundCloud и Bandcamp безошибочно выбирают между собой нужную сессию. В какой программе музыка остановилась, в той она и продолжит играть при нажатии кнопки Play.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 17, 2021, 09:38:00
А как это определить?

Пользователь слушал CD и нажал на пульте кнопку Pause. Вопрос: что следует включить, когда пользователь нажмет кнопку Play:

1. CD
2. Магнитофон
3. Стиральную машину.

Как это работает во внутренних механизмах Андроида - я не знаю. Но на наглядном примере других программ вижу, что это возможно.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Soolo on June 17, 2021, 09:41:29
Очень даже ту - пока одной из этих сессий не является AIMP. Повторюсь, что SoundCloud и Bandcamp безошибочно выбирают между собой нужную сессию. В какой программе музыка остановилась, в той она и продолжит играть при нажатии кнопки Play.
То, что на конкретно вашем телефоне с конкретными плеерами у вас всё удачно работает - не означает, что на другом телефоне и других плеерах всё останется так же.

Пользователь слушал CD и нажал на пульте кнопку Pause. Вопрос: что следует включить, когда пользователь нажмет кнопку Play:
Не городите чушь. Если бы кнопка плей на пульте от CD могла бы включать магнитофоны, и стиралки, и микроволновки - обязательно бы получили неожиданные для вас варианты.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 17, 2021, 09:51:21
То, что на конкретно вашем телефоне с конкретными плеерами у вас всё удачно работает - не означает, что на другом телефоне и других плеерах всё останется так же.

Ну вот я и пишу разработчику одного из этих других плееров, с которым все работает неудачно.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 17, 2021, 09:52:13
Если бы кнопка плей на пульте от CD могла бы включать магнитофоны, и стиралки, и микроволновки - обязательно бы получили неожиданные для вас варианты.

И это был бы баг, который нужно было бы пофиксить, а не говорить, что это норма.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 17, 2021, 09:55:41
Пользователь слушал CD и нажал на пульте кнопку Pause. Вопрос: что следует включить, когда пользователь нажмет кнопку Play:

Ok, нажал он паузу, а не закрыть. Что должен подумать плеер? Что пользователь к нему скоро вернется, или нет? Отследить старт проигрывания в другом плеере теоретически можно, но будет ли правильным в таком случае закрываться? Вот тут сомнительно. Как работает у других - я не знаю, я не могу посмотреть их код. В документации Гугл не дает никаких "лучших практик", и, как показывает практика, все устройства ведут себя по разному. Поэтому за много лет, мы в АИМП сделали четкое разграничение: не нужен плеер - закрой его, нужен - оставь. Все, плеер 100% знает, что пользователь от него хочет. Почему Андроид путает сессии и ранжирует их по времени последнего использования - загадка. У гугла все как обычно: проблема есть, только решают ее сторонние разработчики в виде костылей в своих программах.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 17, 2021, 09:56:27
И это был бы баг, который нужно было бы пофиксить, а не говорить, что это норма.

Так я вас и спрашиваю, как пофиксить баг, если он на уровне ОС? Я могу заточить программу под ваш сценарий, только потом другие закидают меня шапками.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 17, 2021, 10:00:48
Ну вот я и пишу разработчику одного из этих других плееров, с которым все работает неудачно.

У меня стоит больше 20 плееров (по долгу службы), и все они ведут себя очень по разному. Поэтому я не могу с точностью утверждать "как правильно".

Наш подход я объяснил, решение проблемы дал.
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Soolo on June 17, 2021, 10:49:22
Только что провёл эксперимент.
Запустил AIMP, VLC, Samsung Music, Youtube Music
Первые три между собой не конфликтуют, кнопка гарнитуры управляет последним плеером.
Но как только запускается Youtube Music - он всегда перехватывает на себя управление.
После некоторого переменного включения плееров - Samsung Music начал перехватывать на себя управление.
Ещё через некоторое время VLC начал перехватывать управление, причём даже после смахивания его виджета.

Как видите, ваша ситуация с АИМПом у меня не повторилась.
А так же приложение от самого Гугла имеет поведение, которое вам так не нравится.
Кроме того в принципе есть некая нестабильность поведения.

Телефон Samsung J7
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: CitizenOfDreams on June 17, 2021, 12:06:09
Артем, спасибо за ответ, вашу позицию как разработчика я понял. Согласен, что в экосистеме Андроида поведение плееров малопредсказуемо и слаборегламентировано, и что реализация того, что лично я считаю логичным, может привести к неожиданным последствиям у другого пользователя, на другом телефоне или с другими приложениями. Буду искать workaround, потому как в остальном AIMP мне нравится. Спасибо за замечательный плеер!
Title: Re: Кнопка наушников и несколько аудиоплееров на одном телефоне
Post by: Artem on June 17, 2021, 12:09:54
Буду искать workaround, потому как в остальном AIMP мне нравится

Просто закрывайте плеер кнопкой выход