检测OnPause()中的屏幕方向更改

时间:2012-01-08 08:36:59

标签: android xamarin.android orientation-changes

我正在使用MonoDroid,但是等效的Java答案仍然有用。

我正在使用纵向布局和横向布局,因此,如果可能,我想使用Android屏幕方向自动存储/创建活动。

我的应用正在使用TextToSpeech所以在活动的OnPause()我停止了它,当按下Home键或来电时,该应用效果很好。但是,我不想在用户更改屏幕方向时停止TextToSpeech。

是否有一种检测此更改的简单方法,以便TextToSpeech不会中断?

我的活动的OnStop()代码:

protected override void OnPause()
{
    // I need this for Home key, intercepting phone calls, etc.
    // But how can I prevent this for a screen orientation change?
    // Need to enable screen orientation to get my portrait/landscape views
    if(Text2Speech.IsTextToSpeechInitialised && Text2Speech.TextToSpeech != null)
        Text2Speech.TextToSpeech.Stop();

    base.OnPause();
}

1 个答案:

答案 0 :(得分:3)

正如其他人在关于这个问题的评论中所说,我想你会想在这里自己处理配置更改。有other configuration changes也可能导致您的活动重新启动,例如泄露设备的硬件键盘。

在Mono for Android中,您可以在ActivityAttribute中指定自己要处理的内容:

[Activity(ConfigurationChanges = ConfigChanges.Orientation | ConfigChanges.KeyboardHidden)]
public class MainActivity : Activity