如何防止TextToSpeech在旋转期间停止

时间:2013-03-19 22:11:43

标签: android text-to-speech

我的应用正在实施效果良好的文字转语音。但是当我旋转手机时,听写就会停止。

您必须知道我使用两种不同的横向/纵向模式布局。

我该如何处理屏幕旋转? 1)android:configChanges="orientation|screenSize" //我不认为这是最好的方法 2)还有别的吗?

谢谢

2 个答案:

答案 0 :(得分:2)

有几个步骤可以让TTS继续进行轮换,而无需在应用程序中处理配置更改。步骤包括:

  • 使TTS变量静态

    private static TextToSpeech tts;

  • 只初始化一次,如果它为空

    if (tts == null) { ... }

  • 使用应用程序上下文

    初始化TTS对象

    tts = new TextToSpeech(getApplicationContext(), this);

这是我的实验应用程序的快照,其中包含了这些元素http://code.google.com/p/android-tts-experiments/source/detail?r=b879fd1042151cbebc736b89a9fb660c895081ea我已经设法在各种Android设备和Android版本上测试它。有时TTS似乎在我较旧的,功能较弱的设备上稍微犹豫不决,但是它继续说出它所说的文本,排队的消息保留在队列中并在TTS引擎完全说出当前文本后说出来

答案 1 :(得分:1)

你基本上有两个选择:

1)自己处理方向更改。通常这很容易。您只需要实现onConfigurationChange(),然后您可以通过调用setContentView()重新构建布局。请注意,这将重新创建所有UI视图,因此您必须再次调用findViewById()并重置onClickListeners以查找需要跟踪的所有视图。

2)确保TTS实例在方向更改时不会关闭。您可以通过将TTS实例从活动的一个实例传递到下一个OR或在静态变量中跟踪TTS实例来执行此操作(如果这样做,您需要确保在其上调用shutdown()在适当的时间,而不是在您活动的onDestroy()