同じメディア プレーヤーを使用しようとしていますが、データ ソースを変更しています。これが私がやろうとしていることです:
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のバグですか?