Как зациклить с помощью медиаплеера - Android

1

Как я могу воспроизводить мои аудиофайлы последовательно с моей SD-карты? У меня есть два класса, один для результата другой для фактического рендеринга. Является ли мой цикл while правильным местом?

public void DoIt() {  
while(!mp.isPlaying()){


AudioRenderer mr = new AudioRenderer();
mp = mr.AudioRenderer(filePath);
if(mp!=null){
mp.start(); 
if(!mp.isPlaying())
    break;
}
}

if(mp == null){ *write results logic*}



private class AudioRenderer extends Activity {
private MediaPlayer AudioRenderer(String filePath) {


MediaPlayer mp = new MediaPlayer();
File location = new File(filePath);

Uri path = Uri.fromFile(location);
ExtentionSeperator media = new ExtentionSeperator(filePath, '.');
if(ext.equals("mp3") || ext.equals("wav")|| ext.equals("ogg")|| ext.equals("mid")|| 
ext.equals("flac")){


        mp= MediaPlayer.create(this, path);}
                 return mp;}

Мое приложение просто записывает результаты, не дожидаясь, пока первый не остановит игру первым. Я хочу, чтобы Render → Play → Подождите, пока весь звук перестанет воспроизводиться. → Запишите результат в файл → Следующий файл.

  • 0
    пожалуйста, отформатируйте ваш код
  • 0
    Форматирование завершено
Показать ещё 1 комментарий
Теги:
loops
media-player

3 ответа

3

если вы хотите, чтобы они играли один за другим

в медиаплеере есть событие

mp.setOnCompletionListener()

который будет срабатывать после завершения первого файла. здесь вы можете воспроизвести следующий файл.

1

в соответствии с вашим кодом вы должны использовать mp.setOnCompletionListener(). В этом показан путь для следующего файла, который вы хотите воспроизвести.

1

попробуйте этот код

class MediaDemo extends Activity{
  public static MediaPlayer myplayer=new MediaPlayer();
  public static ArrayList<String> pathlist=new ArrayList<String>();
   public void onCreate(Bundle savedInstanceState){
       myplayer.reset();
       myplayer.setOnCompletionListener(new OnCompletionListener(){
         public void onCompletion(MediaPlayer arg0) {
             pathlist.remove(0);
             if(pathlist.size()>=1){
                 myplayer.reset();
                 playAudio();
            }
         }
     });
 pathlist.add("filename");
 if(!myplayer.isPlaying()){
    playAudio();
 }
}
public void playAudio(){
     try{
         if(pathlist.size()>=1){
           String path=pathlist.get(0);
            myplayer.setDataSource(path);
            myplayer.prepare();
            myplayer.start();
         }
     }catch(Exception e){e.printStackTrace();}
} 

}

  • 0
    это нормально, но я не могу использовать mediaplayer.prepare, мне нужно использовать mp = MediaPlayer.create (this, path);
  • 0
    нет проблем, сначала объявите переменную Mediaplayer. затем создайте объект, используя вашу технику (mp = MediaPlayer.creat (this, path); не вызывайте mp.prepare (), вместо этого вызовите mp.start ();
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню