2012-01-08 5 views
2

MonoDroid를 사용하고 있지만 해당 Java 응답이 여전히 도움이 될 수 있습니다.OnPause()의 화면 방향 변경 감지

세로 레이아웃과 가로 레이아웃을 사용하고 있으므로 가능하다면 안드로이드 화면 방향을 사용하여 자동으로 활동을 생성/생성하고 싶습니다.

내 앱에서 TextToSpeech을 사용하고 있으므로이 활동에서 OnPause()을 중지하고 있습니다. 홈 키를 누르거나 수신 전화가 올 때 제대로 작동합니다. 그러나 사용자의 화면 방향 변경에 대한 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(); 
} 
+3

당신이'안드로이드를 사용하여 봤어 명백한? 이는 방향 변경을 직접 처리하도록 지정합니다. 'Activity'에서'onConfigurationChanged'를 오버라이드하고 (레이아웃 변경 등)해야 할 일을하십시오. – Squonk

+0

나는 그것을 보았고 그것이 내가 가야만하는 접근 일 수있다. 가능한 경우 내 인물 활동을 파괴 할 때/내 풍경 활동을 만들 때 안드로이드가 저에게 모든 것을 돌보고 싶습니다. 그 반대도 마찬가지입니다. OnPause() 중에 오리엔테이션 변경을 감지하는 쉬운 방법이 있는지 궁금합니다. –

+1

아니요 쉽게 알 수있는 방법이 없습니다. '활동'라이프 사이클은 다양한 것들 (예를 들어 들어오는 전화)의 영향을받습니다. '활동'(일시 중지, 중지 중지) '아웃'단계에서는 '왜'이런 일이 발생했는지 설명 할 수있는 시스템 메커니즘이 없습니다. 당신이 가진 최선책은 변화를 직접 처리하는 것입니다. 'onConfigurationChanged (...) '에 전달 된'Configuration' 객체는 적어도 이것이 정확한 레이아웃으로'setContentView (...)'를 사용해야 할 방향 변경임을 확인하는데 도움이 될 것입니다. 저조한 일이지만 너무 나쁘지는 않습니다. – Squonk

답변

3

다른 사람이 질문에 대한 코멘트에 말했듯이, 나는 당신이 구성이 여기에 자신을 변경 처리 할 것 같아요. other configuration changes이있어 장치의 하드웨어 키보드를 드러내는 등의 활동을 다시 시작할 수 있습니다. 당신은 당신이 자신을 처리 할 이들 지정할 수 있습니다 안드로이드를위한 모노에서

ActivityAttribute 다음에`Activity`에 대한`configChanges = "오리엔테이션"

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

답장 모두에게 감사드립니다. 이 작업을 수행하는 간단한 방법이 없다는 것을 확인했지만 방향 변경을 직접 처리하는 것이 가장 좋을 것입니다. –

+0

알다시피이 문제를 처리하는 모든 Java 방법을 변환했습니다. Android는 회전시 활동을 다시 작성하므로 이전 컨텍스트를 참조하면 충돌이 발생합니다. 나는 Java 솔루션을 모두 시도했지만 Android 용 Mono에서는 그 중 아무 것도 잘 동작하지 않았습니다. 주로 두 가지 GC가 있기 때문입니다. 이 작업을 수행하는 가장 좋은 방법은 적어도 Mono for Android에서이 방법입니다. OnDestroy에서 자원을 정리할 때 매우 열심히 노력한다면 100 % 확인해야합니다! – emalamisura

+0

@Greg, 답변 해 주셔서 감사합니다. API 13 이상에 필요한 screenSize와 동일한 ConfigurationChanges가 무엇인지 알고 있습니까? 두 번째 질문에서 언급 한대로 [link] (http://stackoverflow.com/questions/5620033/onconfigurationchanged-not-getting-called)? – TChadwick