我有一个歌曲列表,这些歌曲可能存储在本地 SD 卡中,也可能从网络流式传输。点击歌曲开始播放歌曲。
当列表包含要从网络流式传输的所有歌曲时,一切正常。
但是当我有存储在 sd 卡中的歌曲时,当一首歌曲正在播放并且我点击另一首歌曲时,_mediaPlayer.reset() 会引发错误(-38,0)并且代码进入 onError 函数,其中 what=-38额外=0。
然而,真正令人困惑的部分是,当播放器拥有所有本地存储的歌曲并且播放器暂停时,点击另一首歌曲效果很好。它仅在播放歌曲时引发错误。因此,我尝试在播放歌曲时暂停歌曲,但没有帮助。
PS:我正在加密本地文件并在播放和存储具有固定名称的未加密文件之前解密文件(例如:current.mp3)。在解密文件之前,我还删除了 current.mp3。
我正在使用服务来播放歌曲。下面是与我的问题相关的代码。
private static class OnPreparedListener_r implements MediaPlayer.OnPreparedListener
{
Context ctx;
public OnPreparedListener_r(Context c) {
ctx = c;
}
public void onPrepared(MediaPlayer mp) {
Utils.acquireWakeLock();
Utils.requestAudioFocus(ctx);
mp.start();
}
//rest of the code
}
//code to play the song when the user taps on it
/*
if(_mediaPlayer.isPlaying()) { //this I tried adding to solve the issue
pause();
}
*/
_mediaPlayer.reset();
if(currentSong.isLocallyStored()){
DeleteCurrFile();
Decrypt(current_song);
_ mediaPlayer.setDataSource("path to the local file ");
}else{
_mediaPlayer.setDataSource("streaming path ");
}
_mediaPlayer.prepareAsync();
//handling the error
private static class OnErrorListener_r implements MediaPlayer.OnErrorListener
{
Context ctx;
public OnErrorListener_r(Context c) {
ctx = c;
}
public boolean onError(MediaPlayer mp, int what, int extra) {
handleMediaError(ctx);
return true;
}
}
在过去的 3-4 天里,我一直试图找出问题所在,并浏览了所有链接,但找不到可以解释我的情况的错误解释。任何帮助,将不胜感激
谢谢