我在安卓系统中使用MvvmCross流式传输在线广播时遇到了一些困难。我找到了Xamarin MediaManager插件,并尝试走这条路。
这是代码:
public IMvxCommand ListenCommand => new MvxCommand(Play);
private void Play()
{
CrossMediaManager.Current.Play("http://ic2.christiannetcast.com/wayg-fm");
}
在我的axml中,有一个按钮绑定到该命令,按下它会在控制台中输出:
[MediaPlayer] Couldn't open http://ic2.christiannetcast.com/wayg-fm: java.io.FileNotFoundException: No content provider: http://ic2.christiannetcast.com/wayg-fm
我用几个不同的链接对它进行了测试,只是为了确保事实并非如此。此外,我已经确保在我的AndroidManifest.xml 中有<uses-permission android:name="android.permission.INTERNET" />
我也试过使用安卓的MediaPlayer,但我得到了完全相同的结果。
如果我缺少什么,请告诉我。我在网上没有找到任何关于这个问题的解决方案。谢谢
编辑
我在安卓模拟器上运行这个,而不是真正的手机。不知道这是否有什么不同。
[MediaPlayer]无法打开xxx java.io.FileNotFoundException:无内容提供商:xxx
void setDataSource(字符串路径(:
设置要使用的数据源(文件路径或http/rtsp URL(。
@param path文件的路径,或要播放的流的http/rtsp URL
setDataSource(上下文上下文,Uri-Uri(:
将数据源设置为内容Uri。
@param uri要播放的数据的内容uri
它假定URI是某种形式的ContentProvider
解决方案:
将您的MediaPlayer
SetDataSource
方法从:更改为
mediaPlayer.SetDataSource(context, Android.Net.Uri.Parse(url));
收件人:
mediaPlayer.SetDataSource(url);
我在我这边测试它,它工作得很好:
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.Reset();
mediaPlayer.SetDataSource("https://ia800806.us.archive.org/15/items/Mp3Playlist_555/AaronNeville-CrazyLove.mp3");
mediaPlayer.Prepare();
mediaPlayer.Start();