Xamarin Android MediaManager中的mp3流媒体不工作
我正在Xamarin Android项目中使用此nu-get包来流式传输mp3 url: 我按照上面链接中的说明操作。。。它会显示在通知栏中播放的音乐,但它不工作(没有声音,甚至没有开始播放歌曲) 代码段: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
clickButton.Click += (sender, args) =>
{
ClickButtonEvent();
};
private static async void ClickButtonEvent()
{
await CrossMediaManager.Current.Play("http://www.montemagno.com/sample.mp3");
}
我构建了链接中包含的示例,从他们的示例中得到了相同的结果。也部署在真实设备上,同样的结果!
图片:
我错过什么了吗
还是库坏了?我在Hyper-v上使用Android Emulator遇到了这个问题。结果表明,网络设置为内部。因此,无法找到该文件。我的解决方法:
声音现在应该可以从外部来源工作。可能吗?在报告中指出,对于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。