我正在使用这个nu-get软件包在Xamarin Android项目中传输mp3网址: https://github.com/martijn00/XamarinMediaManager
我按照链接中的说明进行操作...它显示在通知栏中播放的音乐,但它不起作用(没有声音,甚至没有开始播放歌曲)。
代码段:
clickButton.Click += (sender, args) =>
{
ClickButtonEvent();
};
private static async void ClickButtonEvent()
{
await CrossMediaManager.Current.Play("http://www.montemagno.com/sample.mp3");
}
我构建了链接中包含的样本,我从他们的样本中得到了相同的结果。也部署在真实设备上,结果相同! 图片:
我错过了什么吗?
或者图书馆坏了吗?
答案 0 :(得分:0)
我在Hyper-v上使用Android Emulator遇到了这个问题。事实证明,网络设置为内部。因此无法找到http://www.montemagno.com/sample.mp3。我的解决方法:
声音现在应该来自外部来源。
答案 1 :(得分:0)
权限可能吗?在project site中,它说明了Android:
您必须请求AccessWifiState,Internet,MediaContentControl和 WakeLock权限
答案 2 :(得分:0)
默认情况下,使用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);
}
string escapedUrl = Uri.EscapeDataString(url);
即。 http://example.com/path_to_audio.mp3将被转义为“http%3A%2F%2Fexample.com%2Fpath_to_audio.mp3”,因为HTTP错误。
修复只是跳过网址转义。