You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI使用Plugin.Maui.Audio播放音频遇FileNotFoundException问题

解决Plugin.Maui.Audio播放音频的“文件未找到”问题

问题根源

你碰到的问题是.NET MAUI与Xamarin的资源路径规则差异,不同平台对MauiAsset资源的解析逻辑不一样:

  • Windows对路径兼容度高,用Resources/Raw/done.wav能识别,但Android平台不支持这种带目录前缀的写法
  • MAUI中FileSystem.OpenAppPackageFileAsync的默认查找根目录就是Resources/Raw,直接传文件名即可,加前缀反而会找不到文件

具体解决步骤

1. 先确认文件配置

  • 确保音频文件放在Resources/Raw目录下
  • 右键文件→属性,确认生成操作是MauiAsset,复制到输出目录设为如果较新则复制

2. 修正播放代码

把链式调用拆分开(方便调试),直接用文件名访问:

var audioStream = await FileSystem.OpenAppPackageFileAsync("done.wav");
var player = AudioManager.Current.CreatePlayer(audioStream);
player.Play();

3. Android平台额外检查

如果Android模拟器还是报错,做这两步:

  • 检查文件名大小写:Android对路径大小写敏感,确保文件名是全小写(比如done.wav,不要写成Done.WAV)
  • 清理重建项目:删除项目下的bin和obj文件夹,重新生成解决方案,避免旧缓存干扰

4. 更稳妥的替代写法

Plugin.Maui.Audio支持直接通过程序集加载资源,不用依赖FileSystem,兼容性更好:

var assembly = typeof(你的页面类名).GetTypeInfo().Assembly;
var player = AudioManager.Current.CreatePlayer(assembly, "你的应用命名空间.Resources.Raw.done.wav");
player.Play();

替换提示:把你的页面类名改成当前页面的类(比如MainPage),你的应用命名空间换成项目的根命名空间(比如项目叫TodoApp,命名空间就是TodoApp)

内容的提问来源于stack exchange,提问作者Ghostpanther

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 00:47:19