Android播放资源的声音

时间:2014-04-23 11:51:44

标签: c# android xamarin.android xamarin

我保存了资源mp3文件,你需要用MediaPlayer播放

资源Resources/Drawable/beep.mp3

中的

路径

我尝试这段代码

var fileUri = Uri.Parse("android.resource://MyAppName/" + Resource.Drawable.beep);
_mediaPlayer.SetDataSource(Application.Context,fileUri);

但是文件的路径不正确, 如何获取资源mp3文件的正确路径

2 个答案:

答案 0 :(得分:0)

您正在使用" drawable"中的MP3。目录,这是错误的。

使用资产。

AssetFileDescriptor afd = getAssets().openFd("AudioFile.mp3");
player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());

http://developer.android.com/tools/projects/index.html

答案 1 :(得分:0)

我实际上将我的MP3文件存储在Resources / Raw中,并使用SoundPool代替MediaPlayer来获取哔声等短片段。请参阅Soundpool or media player?

protected override void OnCreate(Bundle bundle)
{
    base.OnCreate(bundle);
    SetContentView(Resource.Layout.MyView);

    // Set the hardware buttons to control the music
    this.VolumeControlStream = Stream.Music;

    // Load the sound
    _soundPool = new SoundPool(10, Stream.Music, 0);
    _beepId = _soundPool.Load(this, Resource.Raw.beep, 1);
}

private void PlaySound(int soundId)
{
    var audioManager = (AudioManager)GetSystemService(AudioService);
    var actualVolume = (float)audioManager.GetStreamVolume(Stream.Music);
    var maxVolume = (float)audioManager.GetStreamMaxVolume(Stream.Music);
    var volume = actualVolume / maxVolume;

    _soundPool.Play(soundId, volume, volume, 1, 0, 1f);
}

然后,您只需拨打PlaySound(_beepId)即可播放您的声音。