Я могу успешно воспроизводить звуки с помощью 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");
Я надеялся услышать звук для файла1, затем файл2, затем файл3. Однако я слышу только файл 1, и код, похоже, не доходит до второго ожидания.
Thankyou
** Ссылка на AVAudioPlayer от Apple ** - https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/ –
** Xamarin - Воспроизведение звука с помощью AVAudioPlayer ** - https://developer.xamarin.com/recipes/ios/media/sound/avaudioplayer/ –