0

いくつかの背景

私が作ったアプリはインターバルアプリです。これにより、ユーザーは2つの間隔のそれぞれの時間を選択できます。実行すると、アプリは2人のユーザーが選択した時間設定でカウントダウンタイマーを実行します。インターバルごとに再生したい曲が2つありますが、ユーザーが変更するため、曲が変更される特定の時間を設定できません。したがって、ユーザーが最初の間隔で4秒しか選択しなかった場合、その時間だけ曲を再生する必要があり、カウントダウンが他の間隔で最初からやり直したときに、他の曲を再生する必要があります。

さて、私の本当の質問です。

オーディオを呼び出して再生するにはどうすればよいですか?私は多くの質問を見てきましたが、それらはすべて、オーディオプレーヤーを新しいアクティビティに入れる必要があると言っていますか?新しいアクティビティに入れると、カウントダウンタイマーが止まりませんか?カウントダウンタイマーが引き続き実行されるようにするにはどうすればよいですか?

4

1 に答える 1

1

Androidでサウンドを再生する方法は2つあります。1つはSoundBoard(短いクリップ用に設計されています。曲を再生する場合はこれを使用しないでください)、もう1つはMediaPlayerです。ファイルをrawフォルダーに入れてから、次の手順を実行すると、オーディオを再生できます。

MediaPlayer mp = MediaPlayer.create(ClassName.this, R.raw.sound); 
mp.start();  

次に、タイマーが終了したら、で曲を停止しmp.stop();、次のコマンドを実行して次のオーディオファイルを再生できます。

mp.reset();  
mp = MediaPlayer.create(ClassName.this, R.raw.sound2);  

終了したら、を使用してMediaplayerをリリースすることを忘れないでくださいmp.release();

私はあなたが何をする必要があるかを理解したことを願っています、あなたはまた新しいスレッドの中にメディアプレーヤーを置くべきです、公式のアンドロイド開発者のドキュメントからこれを見てください:

UIスレッドがハングしないようにするには、別のスレッドを生成してMediaPlayerを準備し、完了したらメインスレッドに通知します。ただし、スレッドロジックを自分で作成することもできますが、MediaPlayerを使用する場合、このパターンは非常に一般的であるため、フレームワークは、prepareAsync()メソッドを使用してこのタスクを実行する便利な方法を提供します。このメソッドは、バックグラウンドでメディアの準備を開始し、すぐに戻ります。メディアの準備が完了すると、setOnPreparedListener()を介して構成されたMediaPlayer.OnPreparedListenerのonPrepared()メソッドが呼び出されます。

于 2012-12-03T15:03:19.720 に答える