gpt4 book ai didi

java - 在 GCMIntentService 中实例化 TextToSpeech

转载 作者:行者123 更新时间:2023-12-01 04:57:23 24 4
gpt4 key购买 nike

所以我遇到了一些问题。我试图让我的应用程序根据通过 GCM 收到的消息执行操作。在本例中,应该使用 TextToSpeech 类来发出声音。它有点有效,但不是我第一次发送消息。我意识到这可能是因为 TextToSpeech 尚未实例化,但我不确定如何去做?我尝试了 onInit(),但根本不起作用。

此外,在我的示例中关闭 TTS 的最佳方法是什么?

免责声明:我有 PHP 背景,对 Java 知之甚少。我尝试通过实践来学习,所以如果这是一个愚蠢的问题,请原谅我。提前致谢!

public class GCMIntentService extends GCMBaseIntentService {

private static final String TAG = "GCMIntentService";
public static TextToSpeech mtts;

public GCMIntentService() {
super(SENDER_ID);
}

@Override
protected void onMessage(Context context, Intent intent) {
Log.i(TAG, "Received message");
String message = intent.getExtras().getString("message");
mtts = new TextToSpeech(context, null);

if (message.startsWith("makeSound")) {
mtts = new TextToSpeech(context, null);
mtts.setLanguage(Locale.US);
mtts.speak(message, TextToSpeech.QUEUE_FLUSH, null);
}
}
}

最佳答案

第一次不起作用,因为 TextToSpeech 的初始化是异步的。您不能简单地实例化它并像您正在做的那样使用它。如果您想立即使用 TextToSpeech,您应该提供一个在初始化 TextToSpeech 后调用的回调。

 mTextToSpeech = new TextToSpeech( this, new TextToSpeech.OnInitListener()
{
@Override
public void onInit( int status )
{
// Check for status might not be initialized due to errors
// Configure language/speed
}
} );

它在其余时间确实有效,因为 mtts 是静态的。这意味着它是一个类变量,在创建服务的新实例时不会被销毁/初始化。当您第二次使用此服务时,该变量已在第一次服务执行中初始化。

关于java - 在 GCMIntentService 中实例化 TextToSpeech,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13880510/

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