2015-11-24 2 views
0

Новое в Android-кодировании здесь. Я пытаюсь, чтобы пользователь выбрал аудиофайл для воспроизведения MediaPlayer с помощью кнопки «загрузить», а затем MediaPlayer должен начать воспроизведение файла после того, как пользователь «сыграет». Вот мой код:Проблемы с воспроизведением звука на MediaPlayer в Android

public class MainActivity extends Activity { 
     final int ACTIVITY_CHOOSE_FILE = 1; 
     File original; 


     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 

      Button button = (Button) this.findViewById(R.id.button); 
      button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        Intent chooseFile; 
        Intent intent; 
        chooseFile = new Intent(Intent.ACTION_GET_CONTENT); 
        chooseFile.setType("audio/mpeg"); 
        intent = Intent.createChooser(chooseFile, "Choose a file"); 
        startActivityForResult(intent, ACTIVITY_CHOOSE_FILE); 
       } 
      }); 

      Button playButton = (Button)findViewById(R.id.playbutton); 
      playButton.setOnClickListener(new Button.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        MediaPlayer mediaPlayer = new MediaPlayer(); 
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
        try { 
         mediaPlayer.setDataSource(original.getAbsolutePath()); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
        mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
         @Override 
         public void onPrepared(MediaPlayer mp) { 
          mp.start(); 
         } 
        }); 

       } 
      }); 
     } 

     @Override 
     public void onActivityResult(int requestCode, int resultCode, Intent data) { 
      switch (requestCode) { 
       case ACTIVITY_CHOOSE_FILE: { 
        if (resultCode == RESULT_OK) { 
         Uri uri = data.getData(); 
         original = new File(uri.getPath()); 
         String tag = "TAG"; 
         Log.d(tag, original.getAbsolutePath()); 
        } 
       } 
      } 
     } 
    } 

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

ответ

0

После настройки источника данных медиаплеера вы должны вызвать mediaPlayer.prepareAsync()

Media Playback in android

+0

Это теперь возвращает меня с ошибкой (1, -2147483648) – quibblify

+0

Да, возможно, потому, что вы объявляете объект MediaPlayer внутри OnClick обратного вызова, попробуйте объявить объект медиаплеера переменной класса. Взгляните сюда [link] (https://gist.github.com/wwrrss/fefc50f60fa93562166e) – willermo

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