Android ICS MediaPlayer вылетает только на переменных, предназначенных для одновременного воспроизведения - PullRequest
1 голос
/ 19 марта 2012

У меня есть два типа воспроизведения 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;} }

1 Ответ

0 голосов
/ 19 марта 2012

Вы можете сократить это

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;

Может быть, вы должны изменить == на !=

Это единственное, что яможно увидеть, не зная, какую ошибку вы получите.

...