我的应用正在实施效果良好的文字转语音。但是当我旋转手机时,听写就会停止。
您必须知道我使用两种不同的横向/纵向模式布局。
我该如何处理屏幕旋转?
1)android:configChanges="orientation|screenSize"
//我不认为这是最好的方法
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()
。