gpt4 book ai didi

android - 使用现有的 MediaPlayer 更改音频播放的数据源?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:05:43 25 4
gpt4 key购买 nike

我正在尝试使用相同的媒体播放器但更改了数据源。这是我正在尝试做的事情:

    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 中的错误吗?

最佳答案

确保在更改数据源之前停止并重置媒体播放器。关于更重要的事情,当你停止它调用时

onCompletion

.. 所以一定要检查你在这个方法中做了什么。然后调用

mplayer.setDataSource(audioPath);
mplayer.setOnPreparedListener(this);
mplayer.prepareAsync();

关于android - 使用现有的 MediaPlayer 更改音频播放的数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7244338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com