【问题标题】:Xamarin. Got an issue with loading mp3 to play via MediaPlayer: FileNotFoundException赛马林。加载 mp3 以通过 MediaPlayer 播放时遇到问题:FileNotFoundException
【发布时间】:2017-07-31 12:27:13
【问题描述】:

我通过 Monogame (C#) 为 android 创建了一个应用程序。为了减小我的 .apk 大小,我决定不使用 Content Pipeline 进行音频。我发现我可以将 raw 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,但他们的解决方案没有帮助。 你有什么想法可以帮助我吗?谢谢。

【问题讨论】:

    标签: c# android file audio uri


    【解决方案1】:

    我不确定 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 文件夹中

    【讨论】:

    • 谢谢,您的解决方案有效。我认为这是我需要的。
    【解决方案2】:

    难道不能把音频文件放到资源里吗?

    如果您打开项目属性,应该有一个资源选项卡。在此选项卡中,您应该能够添加不同的值(字符串、图像等),包括音频文件。如果您已在此处添加此内容,则应该可以通过资源管理器访问它。

    如果这行得通,请告诉我!

    【讨论】:

    • 恐怕我做不到,因为Android Xamarin项目中没有Resource选项卡。只有Application/Android Manifest/Android Options/Build/Build Events/Reference Paths。顺便说一句,我检查了我的 Windows 窗体应用程序中有资源选项卡。无论如何,谢谢你的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-17
    • 2011-05-21
    相关资源
    最近更新 更多