我试图让我的音频应用程序播放我放在Resources文件夹中的音频文件。我以此为指导。
https://developer.xamarin.com/guides/android/application_fundamentals/working_with_audio/
我正在尝试在我的项目中播放一个在Resources / Raw中的mp3。
我在第33行得到了这个未处理的例外
Unhandled Exception:
Java.IO.IOException: setDataSource failed. occurred
以下代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.Media;
using Android.Content.Res;
namespace AudioTour
{
[Service(Exported = false, Name = "com.AudioTour.AudioService")]
public class AudioService : Service
{
private MediaPlayer player;
public override void OnCreate()
{
Console.WriteLine("Audio Service background task created");
StartPlayer();
}
public void StartPlayer()
{
player = new MediaPlayer();
player.Reset();
player.SetDataSource("/Resource/Raw/Test.mp3"); // Unhandled Exception is triggered here
player.Prepare();
player.Start();
}
public override IBinder OnBind(Intent intent)
{
return null;
}
}
}
答案 0 :(得分:2)
我相信您的问题是字符串参数要求它是"android.resource://" + PackageName + "/Raw/Test.mp3"
的完整路径尽管如此
我建议将描述符传入你的播放器。
public void StartPlayer()
{
try
{
var player = new MediaPlayer();
var descriptor = _context.Assets.OpenFd("Test.mp3");
player.SetDataSource(descriptor.FileDescriptor, descriptor.StartOffset, descriptor.Length);
descriptor.Close();
player.Prepare();
player.Start();
}
catch ()
{
}
}
请注意,此示例的声音文件实际上位于根Android Assets文件夹中,而不在资源中。