Я пытаюсь использовать тот же медиаплеер, но меняю источник данных.Вот что я пытаюсь сделать:
private MediaPlayer mMediaPlayer;
public void pickFile1() {
initMediaPlayer("myfile1.mp3");
}
public void pickFile2() {
initMediaPlayer("myfile2.mp3");
}
private void initMediaPlayer(String mediafile) {
// Setup media player, but don't start until user clicks button!
try {
if (mMediaPlayer == null) {
mMediaPlayer = new MediaPlayer();
} else {
mMediaPlayer.reset(); // so can change data source etc.
}
mMediaPlayer.setOnErrorListener(this);
AssetFileDescriptor afd = getAssets().openFd(mediafile);
mMediaPlayer.setDataSource(afd.getFileDescriptor());
}
catch (IllegalStateException e) {
Log.d(TAG, "IllegalStateException: " + e.getMessage());
}
catch (IOException e) {
Log.d(TAG, "IOException: " + e.getMessage());
}
catch (IllegalArgumentException e) {
Log.d(TAG, "IllegalArgumentException: " + e.getMessage());
}
catch (SecurityException e) {
Log.d(TAG, "SecurityException: " + e.getMessage());
}
mMediaPlayer.setOnPreparedListener(this);
mMediaPlayer.prepareAsync(); // prepare async to not block main thread
mMediaPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); // Keep playing when screen goes off!
}
Я просто называю это, когда хочу перейти на новый медиафайл.Похоже, что он не меняет источник данных успешно.Первый вопрос: возможно ли это сделать таким образом, или мне нужно выпустить медиаплеер и создать новый для каждого нового файла?Если это возможно, то почему мой код не работает правильно?
Правка: ну, выпуск и воссоздание медиаплеера тоже не делают этого!Он просто продолжает играть ту же песню!?!?Как это вообще возможно?Новая идея - создать отдельный медиаплеер для каждого трека, это действительно то, что я должен сделать здесь?Возможно, это ошибка в Android?