2

我的应用正在实施运行良好的文本转语音。但是当我转动手机时,听写会自动停止。

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

我应该如何处理屏幕旋转?1) 使用android:configChanges="orientation|screenSize"// 我认为这不是最好的方法 2) 使用其他方法?

谢谢

4

2 回答 2

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 引擎完全说出,它就会说出.

于 2013-12-31T21:45:45.587 回答
1

你基本上有2个选择:

1)自己处理方向变化。通常这很容易。你只需要实现onConfigurationChange(),在那里你可以通过调用来重建布局setContentView()。请注意,这将重新创建您的所有 UI 视图,因此您必须findViewById()再次调用并重置 onClickListeners 以获取您需要跟踪的所有视图。

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

于 2013-03-19T22:35:10.720 回答