c# - Xamarin。加载mp3以通过MediaPlayer播放时遇到问题:FileNotFoundException

标签 c# android file audio uri

我通过Monogame(C#)为Android创建了一个应用程序。为了减小我的.apk大小,我决定不要使用Content Pipeline进行音频播放。我发现可以将原始mp3与Song.FromUri()方法一起使用。使用下一个代码

Song mySong;
//...
mySong = Song.FromUri("track01", new System.Uri("audio.mp3", System.UriKind.Relative));
//...
MediaPlayer.Play(mySong);

我收到了异常“未处理的异常:Java.IO.FileNotFoundException:track01”
MediaPlayer.Play(mySong);

,但主文件夹中有文件“audio.mp3”。
Solution Screenshot

将属性“构建操作”更改为“无” /“内容” /“AndroidAsset”,将“复制到输出目录”更改为“始终复制”并没有带来任何新变化。
我搜索了解决方案,但似乎没有人遇到相同的问题,或者他们很容易解决了问题。我遇到的唯一类似问题here,但是他们的解决方案没有帮助。
您有什么可以帮助我的想法吗?谢谢。

最佳答案

我不确定Song.FromUri方法,但这就是我使用声音文件的方式。

        var player = new MediaPlayer();
        var fd = global::Android.App.Application.Context.Assets.OpenFd("sounds/Wrong.mp3");
        player.Prepared += (s, e) =>
        {
            player.Start();
        };
        player.SetDataSource(fd.FileDescriptor, fd.StartOffset, fd.Length);
        player.Prepare();

我将Wrong.mp3保留在Assets / sounds文件夹中

关于c# - Xamarin。加载mp3以通过MediaPlayer播放时遇到问题:FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45415941/

相关文章:

c# - 如何将包含错误的土耳其语字符的字符串转换为显示正确的字符?

c# - 如何使用相同的通用方法来验证不同类型

c# - 接收 "Duplicate enty for primary key"

java - 使用不包含 Navigator (Flutter) 的上下文请求的 Navigator 操作

android - 完全删除项目(Firebase 和 Cloud)及其 SHA1 key 凭据所需的时间?

java - 创建文件名中包含非英文字符的文件

python - 如何在 Linux 上的 Python 中使用 open() 和追加模式以及eek()?

c# - 偶尔从 X509Certificate2 获取私钥时出现异常 "Invalid Provider type specified"或 "Key does not exist"

java - 创建一个带有目录的java文件

android相机在相机取消的外部SD卡文件夹中创建0kb文件