Обнаружение изменения ориентации экрана в OnPause () - PullRequest
2 голосов
/ 08 января 2012

Я использую 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 Ответ

3 голосов
/ 08 января 2012

Как уже говорили другие в комментариях к этому вопросу, я думаю, что вы захотите сами справиться с изменениями конфигурации. Существуют другие изменения конфигурации , которые также могут привести к перезапуску вашей активности, например, к раскрытию аппаратной клавиатуры устройства.

В Mono для Android вы можете указать, какие из них вы хотите обрабатывать самостоятельно, в ActivityAttribute :

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