ich erfolgreich Sounds mit Xamarin Formen (Android und iOS) spielen können, aber das folgende Ich muss auch erreichen:Xamarin Forms Sound wiedergeben Asynchron
- Ich erwarte müssen, so dass, wenn mehrere Töne sind ‚gespielt‘ , einer wird vor dem nächsten abgeschlossen sein.
- Ich muss einen booleschen Wert zurückgeben, um anzuzeigen, ob die Operation erfolgreich war.
Hier ist mein aktueller vereinfachten Code (für die iOS-Plattform):
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;
}
die Methode zu testen, habe ich versucht, es wie so nennen:
var res1 = await _audioService.PlayAudioTask("file1");
var res2 = await _audioService.PlayAudioTask("file2");
var res3 = await _audioService.PlayAudioTask("file3");
ich gehofft hatte zu höre das Audio für Datei1, dann Datei2 und dann Datei3. Allerdings höre ich nur Datei 1 und der Code scheint nicht die zweite zu erreichen.
Thankyou
** Apples AVAudioPlayer-Referenz ** - https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioPlayerClassReference/ –
** Xamarin - Abspielen von Ton mit AVAudioPlayer ** - https://developer.xamarin.com/recipes/ios/media/sound/avaudioplayer/ –