У меня есть два типа воспроизведения MediaPlayer в двух разных приложениях. Одна из них - это единственная переменная, которая ждет, пока она не закончит воспроизведение следующего слова/звукового эффекта. Кажется, это работает нормально. Другой - это набор из 4 переменных MediaPlayer, которые воспроизводятся одновременно. Это работает в 2.3.3 и, похоже, работает на виртуальном устройстве 4.0.3, но на моем TF101 он падает в обоих приложениях.
При неправильном касании будет вызываться playse ('oops').
public void playse(String ss){
MediaPlayer tempse;
if(tse1 == null){tempse = tse1;}
else{if(tse2 == null){tempse = tse2;}
else{if(tse3 == null){tempse = tse3;}
else{if(tse4== null){tempse = tse4;}}}}
if(ss == "oops"){ tempse = MediaPlayer.create(mContext, R.raw.seoops); tempse.start();}
}
В основном цикле приложения 4 переменные обрабатываются следующим образом:
if(tse1 != null){ if(tse1.isPlaying()== false){tse1.release(); tse1= null;} }
if(tse2 != null){ if(tse2.isPlaying()== false){tse2.release(); tse2= null;} }
if(tse3 != null){ if(tse3.isPlaying()== false){tse3.release(); tse3= null;} }
if(tse4 != null){ if(tse4.isPlaying()== false){tse4.release(); tse4= null;} }
Вы можете сокращать это
MediaPlayer tempse;
if(tse1 == null){tempse = tse1;}
else{if(tse2 == null){tempse = tse2;}
else{if(tse3 == null){tempse = tse3;}
else{if(tse4== null){tempse = tse4;}}}}
в
MediaPlayer tempse = null;
Может быть, вы должны изменить ==
на !=
Это единственное, что я вижу, не зная, какую ошибку вы получите.
==
для сравненияStrings
это может привести к непредсказуемым результатам. Заменитеif(ss == "oops")
наif (ss.equals("oops"))
.