0

私は音楽プレーヤーを作成しようとしています。私のアプリケーションには2人のプレーヤーがいます-

(a)メモリから曲を再生します

(b) URLを使用してオンライン音楽ストリームを再生する

私のアプリのホーム/デフォルトアクティビティは(a)です。プレーヤー(b)には、別のアクティビティがあります。

問題は、ユーザーがアクティビティ(b)で再生ボタンを押してURLストリームを再生すると、メモリからのトラックが再生されることです。

アクティビティ(a)のMediaPlayerはまだアクティブなようです。

だから私は欲しい:

  • ユーザーが再生ボタンを押すと、他のすべてのメディアプレーヤーが停止します。

    他のメディアプレーヤーの参照を取得する方法はありますか。それらがアクティブかどうかを確認します。はいの場合は、それらを停止します。

broadcast漠然とした観点から、これはアクティビティ(a)のにaを送信しService、そこでそれをリッスンしてプレーヤーを停止する関数を作成することで実行できると思いました。

しかし、それは私には少し野蛮なようです。また、(a)でプレーヤーの参照を取得するにはどうすればよいですか。

私が疑問を解消したことを願っています。

提案してください。

ありがとうございました

4

1 に答える 1

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オブジェクトの独自のプールと考えてください

于 2013-02-13T18:27:24.970 に答える