【问题标题】:Playing sound with CrossSimpleAudioPlayer - Xamarin Forms使用 CrossSimpleAudioPlayer 播放声音 - Xamarin Forms
【发布时间】:2018-12-10 23:00:50
【问题描述】:

最近我一直在尝试在 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();
}

【问题讨论】:

  • 您的softAlarm.mp3 文件在哪里?您需要输入用点连接的完整路径,并以项目名称为前缀。因此,如果您的文件位于资源文件夹下名为 SoftAlarm 的项目中,则应声明:GetManifestResourceStream("SoftAlarm.Resources.softAlarm.mp3")
  • 那么您可能应该这样做:GetManifestResourceStream("softAlarm.mp3") 因为操作系统会为您找到它。但不完全确定这一点。您引用的链接还将音频文件放在共享库中。这样你也不需要任何重复的文件:)
  • 所以我尝试了...
  • 我在这里为您创建了一个示例项目:github.com/jfversluis/CrossSimpleAudioPlayerSample
  • 完成,谢谢!完全没问题:)

标签: c# xamarin xamarin.forms cross-platform


【解决方案1】:

您的softAlarm.mp3 文件位于何处?您需要输入用点连接的完整路径,并以您的项目名称为前缀。

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

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

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

【讨论】:

  • 我投了赞成票,因为我在模拟器上听到了声音,但是我在真实设备上听不到任何声音。有什么建议吗?
  • 既然你说模拟器我假设iOS?你打开静音模式开关了吗?
  • 谢谢!是的,我做到了。我还将音量调到最大,并尝试手动设置 audio.Volume = 1.00;带有 12.4.1 iOS 的 iPhone 6s 会发生这种情况。
  • 是的,好的。您的意思是在代码中手动设置音频?但是您是否翻转了设备侧面的实际物理静音模式开关? :)
  • 哈!也许某种缓存在某处的旧代码?无论如何,很高兴它成功了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 2010-11-12
  • 2015-09-18
  • 2014-08-15
  • 2014-04-01
相关资源
最近更新 更多