如何流式传输音频(无线电)MvvmCross

How to Stream Audio (Radio ) MvvmCross

我在使用 MvvmCross Android 中流式传输在线广播时遇到了一些困难。我找到了插件 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" />

我也尝试过使用 Android 的 MediaPlayer,但得到的结果完全相同。

如果我遗漏了什么,请告诉我。我还没有在网上找到关于这个问题的任何解决方案。谢谢!

编辑

我是 运行 这个 Android 模拟器,不是真正的 phone。不知道这是否有所作为。

[MediaPlayer] Couldn't open xxx java.io.FileNotFoundException: No content provider: xxx

void setDataSource(String path):

Sets the data source (file-path or http/rtsp URL) to use.

@param path the path of the file, or the http/rtsp URL of the stream you want to play

setDataSource(Context context, Uri uri):

Sets the data source as a content Uri.

@param uri the Content URI of the data you want to play

which assumes URI to be of some form of 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();