首页 > 解决方案 > 使用 CrossSimpleAudioPlayer 播放声音 - Xamarin Forms

问题描述

最近我一直在尝试在 Xamarin Forms 中使用CrossSimpleAudioPlayer来播放.mp3文件,但我收到了这条消息

System.NullReferenceException:对象引用未设置为对象的实例。

我将属性 Build Action 更改为Embedded Resource,但我的错误仍然存​​在,我在这里缺少什么吗?

这是我的参考https://blog.xamarin.com/adding-sound-xamarin-forms-app/?utm_medium=social&utm_campaign=blog&utm_source=linkedin&utm_content=simpleaudioplayer-nuget这是我的代码:

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();
}

标签: c#xamarinxamarin.formscross-platform

解决方案


你的softAlarm.mp3文件在哪里?您需要输入用点连接的完整路径,并以项目名称为前缀。

因此,如果您的文件位于Resources文件夹下名为SoftAlarm的项目中,您应该声明:GetManifestResourceStream("SoftAlarm.Resources.softAlarm.mp3");

声音文件应该在您的共享项目中并且具有构建操作Embedded Resource

我在这里为您创建了一个工作示例项目:https ://github.com/jfversluis/CrossSimpleAudioPlayerSample


推荐阅读