2017-07-31 69 views
1

我通过Monogame(C#)为android创建了一个应用程序。为了减少我的.apk大小,我决定不使用Content Pipeline来处理音频。我发现我可以用Song.FromUri()方法使用原始mp3。使用下面的代码Xamarin。加载MP3播放通过MediaPlayer时出现问题:FileNotFoundException

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,但他们的解决方案并没有帮助。 你有什么想法可以帮助我吗?谢谢。

回答

0

我不确定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在资产/声音文件夹

+0

谢谢,您的解决方案有效。我认为这是我需要的。 – Mathway

0

是否有可能将音频文件放入资源中?

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

让我知道这是否可行!

+0

恐怕我不能这样做,因为没有在Android的Xamarin项目资源选项卡。只有应用程序/ Android Manifest/Android选项/构建/构建事件/参考路径。顺便说一句,我检查了我的Windows窗体应用程序中有资源选项卡。无论如何,谢谢你的回答。 – Mathway

相关问题