2013-02-13 3 views
0

Я пытаюсь создать музыкальный плеер. Мое приложение имеет 2 игроков -Android: Как остановить других активных медиаплееров?

(а) играет песни из памяти

(б) играет музыкальные онлайн потоки с помощью URL-адресов

Дома/по умолчанию активность моего приложения является (a). Для игрока (b) есть отдельное мероприятие.

Проблема заключается в том, что пользователь нажимает кнопку воспроизведения в действии (b) для воспроизведения потока URL-адреса, трек из памяти воспроизводится.

Кажется, что MediaPlayer из активности (a) по-прежнему активен.

Так что я хочу:

  • Если пользователь нажимает на кнопку воспроизведения, все другие медиа-плеер получает остановился.

    Есть ли способ получить ссылку на других медиаплееров; Проверьте, активны ли они; Если да, то остановите их.

С туманной точки зрения, я думал, что это может быть сделано путем отправки broadcast к Service деятельности (а), и сделать функцию, которая там будет слушать его и остановить игрока.

Но мне кажется немного грубым & также как мне получить ссылку на игрока в (a).

Надеюсь, что я очистил свои сомнения.

Просьба предложить.

Спасибо

ответ

5

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

public class MediaPlayerRegistry { 
     public static List<MediaPlayer> mList = new ArrayList<MediaPlayer>(); 
} 

Тогда из любой деятельности, у вас есть вы можете позвонить:

MediaPlayerRegistry.mList.put(MediaPlayer mPlayer); 

, чтобы добавить его в свой реестр ... и если вы хотите, чтобы освободить его остановить любой ход объект.

for (MediaPlayer player : MediaPlayerRegistry.mList) { 
if (player != null && player.isplaying() { 
     player.release(); 
} 
} 

просто думать об этом как свой собственный пул MediaPlayer объектов

+0

Спасибо, что один простое решение. Но mediaPlayer может не воспроизводиться, поэтому isPlaying() вернет false. Как его решить? – reiley

+0

что вы хотите решить? –

+0

Я проделал некоторое отслеживание и нашел эту проблему. (Http://stackoverflow.com/a/14860443/1433826) – reiley

Смежные вопросы