Новое в 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());
}
}
}
}
}
Я могу выбрать звуковой файл в порядке, но как только я попал в игру, ничего не происходит. Что я делаю не так?
Это теперь возвращает меня с ошибкой (1, -2147483648) – quibblify
Да, возможно, потому, что вы объявляете объект MediaPlayer внутри OnClick обратного вызова, попробуйте объявить объект медиаплеера переменной класса. Взгляните сюда [link] (https://gist.github.com/wwrrss/fefc50f60fa93562166e) – willermo