我在Xamarin中使用Xamarin-Forms-Labs ISoundService在Timer中播放音频。
我每30秒播放一个音频文件(每个文件都不同)
如果文件大小很小(小于5k),我可以让它播放后续文件但是如果它更大则继续重播"更大的音频"文件代替后续剪辑。
我有什么想法可以解决这个问题?我是"停止"音频正常。我应该异步停止因为它是异步播放吗?
我感谢时间和专业知识
Xamarin-Forms-Labs ISoundService https://github.com/XLabs/Xamarin-Forms-Labs/blob/master/src/Platform/XLabs.Platform/Services/Media/ISoundService.cs
我的代码
var audioFile = intervalSettingsAudioDict[currentInterval];
Console.WriteLine(audioFile);
soundService = DependencyService.Get<ISoundService>();
if (soundService.IsPlaying){
soundService.Stop();
}
soundService.Volume = 1.0;
soundService.PlayAsync(audioFile);
答案 0 :(得分:0)
我认为问题在于DependencyService.Get()的默认行为是充当单身人士:http://forums.xamarin.com/discussion/22174/is-a-dependencyservice-implementation-class-treated-as-a-singleton。
我使用以下方法解决了它:
var SoundService = DependencyService.Get<ISoundService>(DependencyFetchTarget.NewInstance);
这适用于iOS,但我仍然在解决Android上无关的问题。
HTH。