2013-02-12 2 views
1

there과 같이 장치의 디스플레이가 잠금 화면에있는 동안 게임 중에 문제가 발생합니다. 몇 가지 이유로 게임을 다시 시작하기 위해 사용자 입력을 요구할 수 없으므로 게임을 다시 시작하기 위해 onWindowFocusChanged 이벤트를 catch하고 싶습니다. 불행히도 솔루션은 내 경우에는 작동하지 않습니다 설명했다.onWindowFocusChanged()는 false로만 호출합니다.

응용 프로그램은 가로 방향을 사용합니다. AndroidManifest.xml :

휴대 전화를 세로 방향으로 사용할 때 잘못된 것이 있습니다. 시작시 모두 좋다. 간단한 로그 :

02-12 18:18:28.329: E/activity(15215): onDestroy called 
02-12 18:18:28.329: E/activity(15215): onCreate called 
02-12 18:18:28.389: E/activity(15215): onStart called 
02-12 18:18:28.389: D/activity(15215): onResumeCalled 
02-12 18:19:06.329: D/activity(15215): onWindowFocusChanged called with focus = true 

하지만 전원 장치를 잠 갔다가 잠금 해제 버튼 누를 때 : (false)를

02-12 18:30:55.629: E/activity(22605): onPause called 
02-12 18:30:55.629: E/activity(22605): onStop called 
02-12 18:30:58.379: E/activity(22605): onDestroy called 
02-12 18:30:58.839: E/activity(22605): onCreate called 
02-12 18:30:58.839: E/activity(22605): onStart called 
02-12 18:30:58.839: D/activity(22605): onResumeCalled 
02-12 18:30:58.849: D/activity(22605): onPauseCalled 
02-12 18:30:59.219: D/activity(22605): onResumeCalled 
02-12 18:30:59.479: D/activity(22605): onPauseCalled 
02-12 18:30:59.559: E/activity(22605): onStop called 
02-12 18:34:01.899: E/activity(22605): onRestart called 
02-12 18:34:01.899: E/activity(22605): onStart called 
02-12 18:34:01.909: D/activity(22605): onResumeCalled 
02-12 18:34:20.409: D/activity(22605): onPauseCalled 
02-12 18:34:20.409: E/activity(22605): onStop called 
02-12 18:34:20.409: E/activity(22605): onDestroy called 
02-12 18:34:20.609: E/activity(22605): onCreate called 
02-12 18:34:20.609: E/activity(22605): onStart called 
02-12 18:34:20.609: D/activity(22605): onResumeCalled 
02-12 18:34:20.769: D/activity(22605): onWindowFocusChanged called with focus = true 

onWindowFocusChanged를 호출하지, 링크에 설명 된 솔루션을하기 전에 작동하지 않습니다.

또한 기기가 잠김/잠금 해제되는 동안 onDestroy/onCreate에 대한 많은 호출이 걱정됩니다. 내가 이해했듯이, 활동은 풍경 (게임)에서 초상화 (장치 잠금 화면)로 바뀌고 풍경으로 돌아 오기 때문에 발생합니다. 그러나 그러한 파괴적인 활동으로 onWindowFocusChanged (false)를 호출 할 시간은 없습니다.

그래서, 내 질문 :

  1. 어떻게 소리가 잠금 화면에 재생 원래 문제를 해결하기 위해?
  2. onDestroy/onCreate를 여러 번 호출하지 않는 것이 가능합니까?

감사합니다.

UPDhere에서 솔루션을 구현했으며 장치가 모두 정상적으로 작동하지만이 솔루션이 완벽하게 작동하는지 확신 할 수 없습니다. 첫 번째 링크에서 : 장치가 자체적으로 잠, 또는 사용자가 전화를 잠금 후 즉시 잠금을 해제하는 경우, 앱을받지 못할 수 있습니다

경우 모든 초점은 전혀 메시지를 변경했습니다.

그래서 모든 경우에 onWindowFocusChanged (true)가 호출 될지 확신하지 않습니다. 가능한 해결책인가? 여러 통화에 대한

UPD 2들의 OnDestroy /에서 onCreate : 구성 변경 사항에 대한 구글의 활동 API에 썼던 것처럼, 나는 디스플레이 방향에 대한 구성 변경을 차단하는 것을 시도했다, 그러나 그것은 나를 위해 잘 작동하지 않습니다.

답변

0

첫 번째 답변 : 포커스 변경을 처리하는 대신 lonk/unlock 스크린의 이벤트를 처리하는 옵션 (android.intent.action.SCREEN_ON, android.intent.action.SCREEN_OFF)을 고려할 수 있습니다.

이 방법을 사용하면 휴대 전화가 잠겨 있거나 잠금 해제되어 있고 소리 문제를 처리 할 수 ​​있습니다.

두 번째 질문에 대해서는 방향 설정 변경과 관련 될 수 있습니다. 아마 당신은 안드로이드가 기대하는대로 이벤트를 처리하지 않고 돌아서려고합니다. 그러나이 하나는 어떻게 해결해야할지 모른다.

+0

[이 링크] (http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/)에 설명 된대로 화면 이벤트를 구현했지만 SCREEN_ON 화면을 켜고 디스플레이를 잠금 해제하기 전에 이벤트가 발생합니다. 디스플레이를 잠금 해제 한 후에 발생하는 특별한 의도가 있습니까? –