【发布时间】:2018-12-10 23:00:50
【问题描述】:
最近我一直在尝试在 Xamarin Forms 中使用 CrossSimpleAudioPlayer 来播放 .mp3 文件,但我收到了这条消息
System.NullReferenceException:对象引用未设置为对象的实例。
我将属性 Build Action 更改为 Embedded Resource,但我的错误仍然存在,是我在这里遗漏了什么吗?
public void Play() {
var assembly = typeof(App).GetTypeInfo().Assembly;
Stream audioStream = assembly.GetManifestResourceStream("softAlarm." + "softAlarm.mp3");
var audio = Plugin.SimpleAudioPlayer.CrossSimpleAudioPlayer.Current;
audio.Load(audioStream);
audio.Play();
}
【问题讨论】:
-
您的
softAlarm.mp3文件在哪里?您需要输入用点连接的完整路径,并以项目名称为前缀。因此,如果您的文件位于资源文件夹下名为 SoftAlarm 的项目中,则应声明:GetManifestResourceStream("SoftAlarm.Resources.softAlarm.mp3") -
那么您可能应该这样做:
GetManifestResourceStream("softAlarm.mp3")因为操作系统会为您找到它。但不完全确定这一点。您引用的链接还将音频文件放在共享库中。这样你也不需要任何重复的文件:) -
所以我尝试了...
-
我在这里为您创建了一个示例项目:github.com/jfversluis/CrossSimpleAudioPlayerSample
-
完成,谢谢!完全没问题:)
标签: c# xamarin xamarin.forms cross-platform