4

私が達成しようとしているのは、ボタンをクリックして、部分文字列に基づいてサウンドを再生することです。

これは、ボタンを押すための私の現在のコードです:

display.setText("start");
thefull = thef.getText().toString();
for(int a=0;a<thefull.length();a++)
{
letter=thefull.substring(a,a+1);
if(letter=="m")
{
oursong = MediaPlayer.create(MainActivity.this, R.raw.m);
oursong.start();
while(oursong.isPlaying())
{
display.setText("start");
}
oursong.release();
}
else if(letter=="a")
{
oursong = MediaPlayer.create(MainActivity.this, R.raw.a);
oursong.start();
while(oursong.isPlaying())
{
display.setText("start");
}
oursong.release();
}       
display.setText("done");

しかし、何らかの理由でボタンをクリックしても音が再生されません。私はAndroidとJavaのプログラミングも初めてなので、これを正しく行っていますか?

私が本当に欲しいのは、ボタンがクリックされたときにサウンドが再生されているかどうか(この場合は「私たちのサウンド」)をプログラムがチェックし続けることであり、サウンドが再生されている場合は、プログラムが終了するのを待って別のサウンドを正しく開始することですしかし今のところ、私のコードはサウンドを再生しません

4

1 に答える 1

7

まず、メディア プレーヤーをリリースする前に停止する必要があります (より安全です)。

第二に、使用する代わりにwhile(oursong.isPlaying()) { display.setText("start"); }; setOnCompletionListener メソッドを使用して OnCompletionListener を登録する必要があります。曲が再生されると endCompletion が呼び出されます。そのようです;

MediaPlayer mp = new MediaPlayer();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){
public void onCompletion(MediaPlayer player) {
   player.release();          
}});

onComplete内で「完了」というテキストをリセットする必要があります

于 2013-08-31T04:03:09.760 に答える