Xamarin android无法播放小型媒体文件

问题描述

首先,对不起我的英语。 我正在尝试在我的应用中播放音频文件,这是一个按钮单击的声音效果,所以它太短了,只有0.5秒。 问题是,当我将此文件放入媒体播放器时,它总是返回null。

private void MainActivity_Click(object sender,EventArgs e)
    {          
        mp = MediaPlayer.Create(this,Resource.Raw.MyAudioFile);
        mp.Start();
       //other code to run
    }

错误:System.NullReferenceException:对象引用未设置为对象的实例。

调试时,我发现mp即使创建后仍然为空。

我尝试了多个音频文件(每次都会增加文件持续时间),并且似乎音频文件至少应超过1.4秒,才不会被视为空文件

有什么帮助吗?

解决方法

我建议您使用 MediaPlayer RingtoneManager 来播放自定义警告音。

String uri = "android.resource://" + PackageName + "/" + Resource.Raw.MyAudioFile;
Android.Net.Uri no = Android.Net.Uri.Parse(uri);
Ringtone mRingtone = RingtoneManager.GetRingtone(this,no);
mRingtone.Play();

或可以播放系统警告音:

Android.Net.Uri sound = RingtoneManager.GetDefaultUri(RingtoneType.Notification);
Ringtone mRingtone = RingtoneManager.GetRingtone(this,sound);
mRingtone.Play();