5

1 つのアクティビティ クラスと、その中にメディア プレーヤーを備えたサービスがあります。ユーザーは、再生する SD カードから mp3 を選択します。Intent extra を使用して、その mp3 のパスをアクティビティからサービスに送信します。

このサービスでは、メディア プレーヤーが起動し、ユーザーが選択した mp3 を再生できます。ただし、1 つの問題。ユーザーが一時停止ボタンを押すと、メディア プレーヤーは曲を一時停止し、後で一時停止したのと同じ位置で再開する必要があります。曲を一時停止するコマンドをアクティビティからサービスに送信するにはどうすればよいですか?

アクティビティ内に mediaplayer インスタンスを配置する方がはるかに簡単です。そうすれば、onclick リスナーとボタンを配置できます。サービスによって実行されるメディア プレーヤーでは、それはアクティビティの外部にあり、一時停止するためにボタンを画面に配置することはできません。

4

1 に答える 1

5

2 つのオプション:

  1. サービスがローカル サービスの場合 (ここではこれに該当します)、アクティビティとサービスをバインドできます。その方法の例については、 Service クラスのドキュメントを参照してください。

  2. ブロードキャストも使用できます。基本的に、「com.mypackage.mediaplayer.Stop」、「com.mypackage.mediaplayer.Pause」、「com.mypackage.mediaplayer.Next」などのブロードキャスト アクションを期待するブロードキャスト リスナーがサービスに含まれます。次に、ボタンがクリックされたときに、アクティビティが適切なブロードキャスト メッセージを送信するだけです。

また、 android ストック ミュージック プレーヤーのソース コードも参照してください。

同じ種類のプロジェクトを行ったので、オプション 2 を使用することをお勧めします。

于 2012-10-16T07:05:18.250 に答える