Xamarin Android MediaManager中的mp3流媒体不工作

Xamarin Android MediaManager中的mp3流媒体不工作,android,xamarin,audio-streaming,Android,Xamarin,Audio Streaming,我正在Xamarin Android项目中使用此nu-get包来流式传输mp3 url: 我按照上面链接中的说明操作。。。它会显示在通知栏中播放的音乐,但它不工作(没有声音,甚至没有开始播放歌曲) 代码段: clickButton.Click += (sender, args) => { ClickButtonEvent(); }; private static async void ClickButtonEvent() { await CrossMediaManage

我正在Xamarin Android项目中使用此nu-get包来流式传输mp3 url:

我按照上面链接中的说明操作。。。它会显示在通知栏中播放的音乐,但它不工作(没有声音,甚至没有开始播放歌曲)

代码段:

clickButton.Click += (sender, args) =>
{
    ClickButtonEvent();
};

private static async void ClickButtonEvent()
{
    await CrossMediaManager.Current.Play("http://www.montemagno.com/sample.mp3");
}
我构建了链接中包含的示例,从他们的示例中得到了相同的结果。也部署在真实设备上,同样的结果! 图片:

我错过什么了吗


还是库坏了?

我在Hyper-v上使用Android Emulator遇到了这个问题。结果表明,网络设置为内部。因此,无法找到该文件。我的解决方法:

  • Hyper-v->虚拟交换机管理器,添加外部网络
  • Hyper-v->虚拟机->设置,添加新硬件->网络适配器并设置为外部网络
  • “Visual Studio Emulator for Android”桌面应用程序,启动手机虚拟机
  • 在Visual Studio中,部署并运行应用程序

  • 声音现在应该可以从外部来源工作。

    可能吗?在报告中指出,对于Android:

    您必须请求访问FiState、Internet、MediaContentControl和 唤醒锁定权限


    默认情况下,示例使用ExoPlayerAudioService

    ExoPlayerAudioService.GetSource方法中的url转义存在问题

    private IMediaSource GetSource(string url)
            {
                string escapedUrl = Uri.EscapeDataString(url);
                var uri = Android.Net.Uri.Parse(escapedUrl);
                var factory =  URLUtil.IsHttpUrl(escapedUrl) || URLUtil.IsHttpsUrl(escapedUrl) ? GetHttpFactory() : new FileDataSourceFactory();
                var extractorFactory = new DefaultExtractorsFactory();
                return new ExtractorMediaSource(uri
                    , factory
                    , extractorFactory, null, this);
            }
    
    字符串escapedUrl=Uri.EscapeDataString(url)

    即,由于http错误,将转义到“http%3A%2F%2fexame.com%2Fpath\u to\u audio.mp3”


    要修复此问题,只需跳过url转义。

    http://www.montemagno.com/sample.mp3
    返回
    您没有访问/sample.mp3的权限
    …也许这样可以。。。但是,我实际上已经在实际的设备上试过了,仍然没有成功!事实上,我已经进入了一条艰难的道路来解决这个问题,我对进行了绑定,现在我正在重写CrossMediaManager,并试图解决通知问题。完成后,我将在GitHub上发布:)干杯!我验证了它在真实的设备上播放。(nexus 6p,配有当前的android操作系统v25和Lumia 950 windows手机)。旁注:我无法在VS2017上构建演示github项目。可能是一些遗留项目信息或开发环境问题。不是权限问题,我已经通过使用VLC Android和绑定解决了这个问题。。。然后我花了很多时间把它添加到XamarinMediaManager中。一旦有时间,我会为修改后的插件创建一个repo。