如何流音频(广播)MvvmCross

时间:2018-11-29 15:27:38

标签: c# android xamarin 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模拟器上而不是真实的手机上运行它。不知道这是否有所作为。

1 个答案:

答案 0 :(得分:1)

  

[MediaPlayer]无法打开xxx java.io.FileNotFoundException:无内容提供者:xxx

void setDataSource(String path)

  

设置要使用的数据源(文件路径或http / rtsp URL)。

     

@param path文件的路径,或您要播放的流的http / rtsp URL

setDataSource(Context context, 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();