1
我可以顺利播放使用Xamarin形式(Android和iOS)的声音,但是我还需要做到以下几点:Xamarin形式播放声音异步
- 我需要等待,这样,如果多个声音是“玩” ,一个将在下一个之前完成。
- 我需要返回一个布尔值来指示操作是否成功。
这是我目前的简化代码(在iOS平台):
public Task<bool> PlayAudioTask(string fileName)
{
var tcs = new TaskCompletionSource<bool>();
string filePath = NSBundle.MainBundle.PathForResource(
Path.GetFileNameWithoutExtension(fileName), Path.GetExtension(fileName));
var url = NSUrl.FromString(filePath);
var _player = AVAudioPlayer.FromUrl(url);
_player.FinishedPlaying += (object sender, AVStatusEventArgs e) =>
{
_player = null;
tcs.SetResult(true);
};
_player.Play();
return tcs.Task;
}
要测试的方法,我试图调用它像这样:
var res1 = await _audioService.PlayAudioTask("file1");
var res2 = await _audioService.PlayAudioTask("file2");
var res3 = await _audioService.PlayAudioTask("file3");
我曾希望听到file1,然后是file2,然后是file3的音频。但是,我只听到文件1,代码似乎没有达到第二个等待。
三江源
** Apple的AVAudioPlayer参考** - https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/ –
** Xamarin - 用AVAudioPlayer播放声音** - https://developer.xamarin.com/recipes/ios/media/sound/avaudioplayer/ –