gpt4 book ai didi

c# - 遍历 ICollection

转载 作者:行者123 更新时间:2023-11-30 00:14:38 25 4
gpt4 key购买 nike

我想遍历设备上安装的所有语音。

在 TextSoSpeech 元数据中,我看到有

namespace Android.Speech.Tts
{
public class TextToSpeech : Java.Lang.Object
{
[Obsolete("deprecated")]
public virtual ICollection<Voice> Voices { get; }

即使它已经过时,我还是想使用“public virtual ICollection Voices { get; }”。

我不知道如何使用 Xamarin 获取已安装的语音。

但是,我从未迭代过 ICollection。

那将如何完成?

我试着从

开始
ICollection<Voice>nVoices = Android.Speech.Tts.TextToSpeech.

但是“.Voices”不是该命名空间的一部分。

最佳答案

Voices 不是静态属性,这就是为什么您需要 TextToSpeech 类的实例来迭代它。不过,要获得一个,您需要实现 IOnInitListener接口(interface):

public class Speaker : Java.Lang.Object, TextToSpeech.IOnInitListener
{
private readonly TextToSpeech speaker;

public Speaker(Context context)
{
speaker = new TextToSpeech(context, this);
// Don't use speaker.Voices here because it hasn't
// been initialized. Wait for OnInit to be called.
}

public void OnInit(OperationResult status)
{
if (status.Equals(OperationResult.Success))
{
// Iterating the collection with a foreach
// is perfectly fine.
foreach (var voice in speaker.Voices)
{
// Do whatever with the voice
}
}
}
}

然后根据您的 Activity ,您可以像这样使用它:

var speaker = new Speaker(this);

关于c# - 遍历 ICollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47499228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com