使用Xamarin-Forms-Labs ISoundService播放后续的大型音频剪辑

时间:2015-07-01 04:26:24

标签: xamarin xamarin.forms

我在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);

1 个答案:

答案 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。