gpt4 book ai didi

Android MediaPlayer 流 setDataSource FileNotFoundException : No content provider

转载 作者:搜寻专家 更新时间:2023-11-01 08:26:19 25 4
gpt4 key购买 nike

我想通过 firebase 和 mediaplayer 播放 mp3。我将我的音乐保存在 firebase 存储中,并将它们的 downloadUrl 传递到我的媒体播放器实例。我正在列出所有歌曲,然后选择其中一首歌曲并开始播放,但是在选择歌曲完成后,它会出现错误

这是我的代码

/**
* Called when the service is being created.
*/
@Override
public void onCreate() {
super.onCreate();
Log.i("Service Demo", "Service Created");

player = new MediaPlayer();
initMusicPlayer();
}

// to initialize the media class
public void initMusicPlayer() {

player.setWakeMode(getApplicationContext(),
PowerManager.PARTIAL_WAKE_LOCK);
player.setAudioStreamType(AudioManager.STREAM_MUSIC);

player.setOnPreparedListener(this);
player.setOnCompletionListener(this);

}

@Override
public void onPrepared(MediaPlayer mp) {
//start playback
mp.start();
}

@Override
public void onCompletion(MediaPlayer mediaPlayer) {
Log.i("TEST", "Service, song end");
playNext();
}

public void playSong() {
//play a song
player.reset();

String songUrl = mCurrentPlayList.get(mCurrentSongPos).getSongUrl();

try {
player.setDataSource(getApplicationContext(), Uri.parse(songUrl));
} catch (Exception e) {
Log.e("MUSIC SERVICE", "Error setting data source", e);
}

player.prepareAsync();
}

// Skip to next song
public void playNext(){
if(checkConnection()) {
mCurrentSongPos++;
if (mCurrentSongPos >= mCurrentPlayList.size()) {
mCurrentSongPos = 0;
}
playSong();
Log.i("TEST", "Next Song is playing");
}
}

// Back to previsous song
public void playPrev(){
if(checkConnection()) {
mCurrentSongPos--;
if (mCurrentSongPos < 0) {
mCurrentSongPos = mCurrentPlayList.size() - 1;
}
playSong();
Log.i("TEST", "Previous Song is playing");
}
}

这是我的日志

D/MediaPlayer: setDataSource IOException happend : 
java.io.FileNotFoundException: No content provider: https://firebasestorage.googleapis.com/v0/b/masalzamani-60c94.appspot.com/o/Songs%2FEzop%20Masallar%C4%B1%2FEzop%20Masallar%C4%B1%203%20-%20Aslan%20Postu%20Giyen%20E%C5%9Fek.mp3?alt=media&token=4c298a8f-7bb0-4cbc-8c82-82ccc51c24a7
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1074)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:927)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:854)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1085)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1059)
at ysfcyln.masalzamani.LocalService.playSong(LocalService.java:303)
at ysfcyln.masalzamani.LocalService.playNext(LocalService.java:477)
at ysfcyln.masalzamani.LocalService.onCompletion(LocalService.java:232)
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3346)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
06-17 18:27:06.841 29201-29201/ysfcyln.masalzamani D/MediaPlayer: Couldn't open file on client side, trying server side
06-17 18:27:06.861 29201-29201/ysfcyln.masalzamani V/MediaPlayer: setVideoSurfaceTexture
06-17 18:27:06.861 29201-29201/ysfcyln.masalzamani V/MediaPlayer: prepareAsync
06-17 18:27:06.866 29201-29201/ysfcyln.masalzamani V/BitmapFactory: DecodeImagePath(decodeResourceStream3) : res/drawable-xxhdpi-v4/row_music_icon.png
06-17 18:27:06.881 29201-29214/ysfcyln.masalzamani I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
06-17 18:27:06.921 29201-29201/ysfcyln.masalzamani I/TEST: Next Song is playing
06-17 18:27:07.451 29201-29201/ysfcyln.masalzamani V/MediaPlayer-JNI: isPlaying: 0
06-17 18:27:07.776 29201-29214/ysfcyln.masalzamani V/MediaHTTPConnection: mTotalSize is 5179086
06-17 18:27:07.786 29201-29217/ysfcyln.masalzamani D/MediaHTTPConnection: setReadTimeOut = 30000ms
06-17 18:27:08.451 29201-29201/ysfcyln.masalzamani V/MediaPlayer-JNI: isPlaying: 0
06-17 18:27:08.591 29201-29218/ysfcyln.masalzamani V/MediaPlayer: message received msg=3, ext1=15, ext2=0
06-17 18:27:08.591 29201-29218/ysfcyln.masalzamani V/MediaPlayer: buffering 15
06-17 18:27:08.591 29201-29218/ysfcyln.masalzamani V/MediaPlayer: callback application
06-17 18:27:08.591 29201-29218/ysfcyln.masalzamani V/MediaPlayer: back from callback
06-17 18:27:08.596 29201-29201/ysfcyln.masalzamani V/MediaPlayer: getDuration_l
06-17 18:27:08.596 29201-29201/ysfcyln.masalzamani E/MediaPlayer: Attempt to call getDuration without a valid mediaplayer
06-17 18:27:08.596 29201-29201/ysfcyln.masalzamani V/MediaPlayer: message received msg=100, ext1=-38, ext2=0
06-17 18:27:08.596 29201-29218/ysfcyln.masalzamani V/MediaPlayer: message received msg=200, ext1=973, ext2=0
06-17 18:27:08.596 29201-29201/ysfcyln.masalzamani E/MediaPlayer: error (-38, 0)
06-17 18:27:08.596 29201-29201/ysfcyln.masalzamani V/MediaPlayer: callback application
06-17 18:27:08.596 29201-29218/ysfcyln.masalzamani W/MediaPlayer: info/warning (973, 0)
06-17 18:27:08.596 29201-29201/ysfcyln.masalzamani V/MediaPlayer: back from callback
06-17 18:27:08.601 29201-29218/ysfcyln.masalzamani V/MediaPlayer: callback application
06-17 18:27:08.601 29201-29218/ysfcyln.masalzamani V/MediaPlayer: back from callback
06-17 18:27:08.601 29201-29218/ysfcyln.masalzamani V/MediaPlayer: message received msg=1, ext1=0, ext2=0
06-17 18:27:08.601 29201-29201/ysfcyln.masalzamani V/MediaPlayer-JNI: getDuration: 0 (msec)
06-17 18:27:08.601 29201-29218/ysfcyln.masalzamani V/MediaPlayer: prepared
06-17 18:27:08.601 29201-29218/ysfcyln.masalzamani V/MediaPlayer: callback application
06-17 18:27:08.601 29201-29218/ysfcyln.masalzamani V/MediaPlayer: back from callback
06-17 18:27:08.611 29201-29201/ysfcyln.masalzamani E/MediaPlayer: Error (-38,0)
06-17 18:27:08.611 29201-29201/ysfcyln.masalzamani I/TEST: Service, song end
06-17 18:27:08.646 29201-29201/ysfcyln.masalzamani V/MediaPlayer-JNI: reset
06-17 18:27:08.646 29201-29201/ysfcyln.masalzamani V/MediaPlayer: reset
06-17 18:27:08.646 29201-30675/ysfcyln.masalzamani V/MediaPlayer: message received msg=8, ext1=0, ext2=0
06-17 18:27:08.666 29201-29201/ysfcyln.masalzamani D/MediaPlayer: setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: https://firebasestorage.googleapis.com/v0/b/masalzamani-60c94.appspot.com/o/Songs%2FEzop%20Masallar%C4%B1%2FEzop%20Masallar%C4%B1%204%20-%20Aslan%2C%20Kurt%20ve%20Tilki.mp3?alt=media&token=8da077ee-bad5-4688-9833-caf8e15daf05
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1074)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:927)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:854)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1085)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1059)
at ysfcyln.masalzamani.LocalService.playSong(LocalService.java:303)
at ysfcyln.masalzamani.LocalService.playNext(LocalService.java:477)
at ysfcyln.masalzamani.LocalService.onCompletion(LocalService.java:232)
at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:3478)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
06-17 18:27:08.666 29201-29201/ysfcyln.masalzamani D/MediaPlayer: Couldn't open file on client side, trying server side
06-17 18:27:08.666 29201-30675/ysfcyln.masalzamani V/MediaPlayer: notify(8, 0, 0) callback on disconnected mediaplayer
06-17 18:27:08.671 29201-29201/ysfcyln.masalzamani V/MediaPlayer: setVideoSurfaceTexture
06-17 18:27:08.671 29201-29201/ysfcyln.masalzamani V/MediaPlayer: prepareAsync
06-17 18:27:08.676 29201-29214/ysfcyln.masalzamani I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
06-17 18:27:08.681 29201-29214/ysfcyln.masalzamani I/System.out: KnoxVpnUidStorageknoxVpnSupported API value returned is false
06-17 18:27:08.686 29201-29201/ysfcyln.masalzamani I/TEST: Next Song is playing

选择第一首歌曲时出现同样的错误但播放成功,我不明白为什么其他歌曲没有播放,有人可以帮忙吗?

最佳答案

player.setDataSource(getApplicationContext(), Uri.parse(songUrl)); 调用中使用 getApplicationContext() 使 MediaPlayer 首先 在本地查找(因为指定的应用程序上下文),然后在找不到时尝试网络。

下面的重载似乎可以避免这种情况:

player.setDataSource(songUrl);

关于Android MediaPlayer 流 setDataSource FileNotFoundException : No content provider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44606573/

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