我在使用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模拟器上而不是真实的手机上运行它。不知道这是否有所作为。
答案 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();