Android: при внедрении музыкального проигрывателя в мое приложение могу ли я убедиться, что другие носители не воспроизводят музыку прямо сейчас?

#android #media-player

#Android #Медиаплеер

Вопрос:

Я хочу, чтобы мое приложение воспроизводило музыку во время работы, но я не хочу, чтобы музыка перекрывалась с музыкой, воспроизводимой в данный момент из другого приложения (Android music app или другого внешнего музыкального приложения, такого как pandora, grooveshark или winamp).
Мой вопрос: есть ли способ убедиться, что прямо сейчас больше ничего не воспроизводится, независимо от источника?

Спасибо!

Комментарии:

1. Я думаю (но не уверен), что в системе есть только один объект MediaPlayer. Если это есть в другом приложении и оно еще не вызывало .release(), то вы не сможете получить это для себя.

2. что ж, судя по моим проверкам, есть приложения, которые воспроизводят музыку, накладываясь друг на друга…

Ответ №1:

Начиная с версии Android 2.2, которую вы можете использовать AudioManager.requestAudioFocus() , другие аудиоплееры должны прослушивать этот запрос на изменение фокуса и могут останавливать / приостанавливать / уменьшать громкость своего звука в соответствии с типом звука, который запрашивает ваш фокус. Однако не все приложения для воспроизведения звука удосужились реализовать это.

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

В более ранних версиях Android вызов mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); обычно останавливает воспроизведение любой другой музыки

Комментарии:

1. Итак, ответ заключается в том, что нет гарантии, что я смогу остановить воспроизведение музыки в другом месте, правильно?

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