] Изменение источника данных для воспроизведения звука с помощью существующего MediaPlayer? [

] [

] Я пытаюсь использовать тот же медиаплеер, но меняю источник данных. Вот что я пытаюсь сделать: [

] [
    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!
}
] [

] Я просто вызываю это, когда я хотите перейти на новый медиафайл. Однако это не похоже на успешное изменение источника данных. Первый вопрос: можно ли сделать это таким образом, или мне нужно выпустить медиаплеер и создать новый для каждого новый файл? Если это возможно, то почему мой код не работает правильно? [

] [

] Edit: ну, выпуск и воссоздание медиаплеера тоже этого не делает! Он просто продолжает воспроизводить ту же песню!?!? Как возможно ли это? Новая идея - создать отдельный медиаплеер для каждой дорожки, действительно ли это то, что я должен здесь сделать? Возможно, это ошибка Android? [

]
8
задан trgraglia 23 June 2012 в 09:54
поделиться