我正在使用这个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");
}
我构建了链接中包含的样本,我从他们的样本中得到了相同的结果 . 也部署在真实设备上,同样的结果!图片:
我错过了什么吗?
或者图书馆坏了吗?
3 回答
权限可能吗?在project site中它表明对于Android:
默认情况下,使用ExoPlayerAudioService .
在ExoPlayerAudioService.GetSource方法中存在url escape问题
string escapedUrl = Uri.EscapeDataString(url);
I.E. http://example.com/path_to_audio.mp3将被转义为"http%3A%2F%2Fexample.com%2Fpath_to_audio.mp3",因为HTTP错误 .
修复只是跳过网址逃脱 .
我在Hyper-v上使用Android Emulator遇到了这个问题 . 事实证明,网络设置为内部 . 所以无法找到http://www.montemagno.com/sample.mp3 . 我的解决方法:
Hyper-v - >虚拟交换机管理器,添加外部网络 .
Hyper-v - >虚拟机 - >设置,添加新硬件 - >网络适配器并设置为外部网络 .
"Visual Studio Emulator for Android"桌面应用,推出手机vm,
在Visual Studio中
,部署并运行app .
声音现在应该来自外部源 .