如何流式传输音频(收音机)MvvvmCross



我在安卓系统中使用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

解决方案:

将您的MediaPlayerSetDataSource方法从:更改为

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();

最新更新