2015-02-05 1 views
1

Я использую MediaPlayer экземпляр Android, который просто инициализируется:Как правильно изменить текущий трек для экземпляра Android MediaPlayer?

mediaPlayer = MediaPlayer.create(this,R.raw.conrnfield); 

Я также получил эту Thread обновление SeekBar по трассе играет прогресс.

updateTime = new Runnable() { 
     @Override 
     public void run() { 

      int currentPosition = 0; 
      int total = mediaPlayer.getDuration(); 
      seekBar.setMax(total); 

      while (mediaPlayer != null && currentPosition < total) { 

       try { 
        Thread.sleep(500); 
        currentPosition = mediaPlayer.getCurrentPosition(); 

       } 
       catch (InterruptedException ex) {return;} 
       catch (Exception e) {return;} 

       seekBar.setProgress(currentPosition); 
      } 
     } 
    }; 

Я получил метод для изменения текущего трека:

public void changeSong(View view) { 

     mediaPlayer.reset(); 
     mediaPlayer.start(); 
     mediaPlayer.selectTrack(2); 

} 

Однако, когда я вызвать этот метод, он вызывает приложение к краху. Я вижу сначала в журнале a

java.lang.IllegalStateException: Could not execute method of the activity 

сообщение об ошибке в stacktrace.

Я даже не знаю, ошибочен ли мой подход. Это целые log

ответ

1

Вы должны использовать MediaPlayer.setDataSource по телефону MediaPlayer.reset. Обратите внимание, что методы MediaPlayer.create - это только вспомогательные методы, которые вызывают MediaPlayer.setDataSource и предполагается использовать для воспроизведения одного из медиа. В следующем примере контекст - это ваша активность, поэтому вы, вероятно, можете заменить их MainActivity.this.

Uri uri = new Uri.Builder() 
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE) 
    .authority(context.getPackageName()) 
    .appendPath(String.valueOf(R.raw.conrnfield)) 
    .build(); 
mediaPlayer.setDataSource(context, uri); 
+0

Имея другие медиафайлы в исходной папке, как я могу правильно получить путь к файлу для любого из них? – diegoaguilar

+0

Добавлен пример ответа. – Simon

+0

Могу ли я использовать URI.Builder? – diegoaguilar

Смежные вопросы