0
私はフラッシュカードでアプリを構築しています。 「次へ」ボタンをクリックすると、サウンド(カードの名前)が再生され、カードをクリックすると同じサウンドが再生されます。唯一のことは、「次へ」ボタンをクリックすると同時に音を2回再生し、同時にロボットに聞こえることです。私は事故で音を2回呼んでいると仮定していますが、どこで修正するかは分かりません。私はその場所全体を見てきましたが、これを修正する方法を見つけることができません。助けのためのサウンドは一度しか再生されず、代わりに2回再生する必要があります
private String[] soundfile={"aa.m4a","bb.m4a...
public void onClick(View arg0) {...
//when btnplay is clicked
else if(arg0.getId()==R.id.imagenumber){
//call the method playsound
playSound(soundfile[screennumber].toString());
}//end btnsound clicked
//begin changeCard
private void changeCard(int screen){
switch (screen){
case 0: imagenumber.setImageResource(aa);
mediap2 = MediaPlayer.create(this, R.raw.aa);
break;...
mediap2.start();
}//end changeCard
//begin playSound on click
public void playSound(String soundName){
Boolean mpPlayingStatus;
try{//try to check MediaPlayer status
mpPlayingStatus=mp.isPlaying();
}
catch (Exception e){
mpPlayingStatus=false;
}
if(mpPlayingStatus==true){//if the MediaPlayer is playing a voice, stop it to play new voice
mp.stop();
mp.release();//remove sound from memory
}
else{
try
{
mp = new MediaPlayer();
AssetFileDescriptor afd = getAssets().openFd(soundName);
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepare();
mp.start();//play sound
}//try block
catch(Exception e) {
Log.i("Error playing sound: ", e.toString());
}
}
}//end playSound
ありがとう:
はここに私のコードです!
注:実行中の場合は停止しますが、新しいサウンドは開始しません。あなたは 'if-else'を使っています。そうでないとコメントになります – AxelH
新しい音が鳴ります。私の問題は、ボタンを押すと同時に2つの場所で同じ音が鳴ることです。だから、 "hello"のように聞こえるのではなく "h h e l l o o"のように聞こえます。 – HerbalPrincess
'changeCard'と' playSound'からMediaPlayerを始めるには2通りの方法があります。それらが一緒に呼び出されないことは確かですか?デバッガを使用してコードがどこに渡っているかを確認したり、ログを使ってそれを確認したりします。私が見るものから、これは正しい – AxelH