迁移MAUI应用时遇Resource无Raw定义问题,如何获取资源ID?
迁移MAUI后获取Android音频资源ID的解决方法
方法一:将音频转为Android专属Raw资源
- 在MAUI项目的
Platforms/Android/Resources目录下新建raw文件夹(如果不存在) - 将音频文件(如
beepok.mp3)放入该raw文件夹 - 选中文件,在属性面板设置:
- 生成操作:
AndroidResource - 复制到输出目录:如果较新则复制
- 生成操作:
- 编译后即可继续使用原有代码:
MediaPlayer.Create(Android.App.Application.Context, Resource.Raw.beepok);
方法二:通过AssetManager读取MauiAsset资源
如果不想移动文件,保持Resources/Raw下的跨平台资源结构,可以通过Android的AssetManager读取文件流来初始化MediaPlayer:
using var assetManager = Android.App.Application.Context.Assets; // 文件名需与Resources/Raw下的文件完全一致(包含后缀) using var inputStream = assetManager.Open("beepok.mp3"); var mediaPlayer = new MediaPlayer(); mediaPlayer.SetDataSource(inputStream.FileDescriptor); mediaPlayer.Prepare(); mediaPlayer.Start(); // 使用完毕后记得释放资源,避免内存泄漏 // mediaPlayer.Release();
注意:第二种方法需要手动管理资源释放,确保在不需要播放时调用
Release()方法回收资源。
内容的提问来源于stack exchange,提问作者nukedbit
相关产品推荐
相关产品推荐

