2009-06-13 2 views
5

버튼을 누를 때 계속 실행해야하는 Android (버전 1.5) 응용 프로그램이 있습니다. 따라서 Button을 누르면 전화기가 켜져 있고 화면이나 CPU가 시간 초과되는 것을 원하지 않습니다.응용 프로그램/화면 제한 방지 Android

다른 Button을 누르면 사용자 설정에 따라 전화가 정상 및 타임 아웃으로 되돌아 가고 싶습니다.

+0

가능한 복제본 [Force Screen On] (http://stackoverflow.com/questions/2131948/force-screen-on) –

답변

3

업데이트 : Steve Pomeroy가 제안한대로 this이 더 좋은 방법 일 수 있습니다. 여기

<uses-permission android:name="android.permission.WAKE_LOCK" />

당신이 aquire 어떻게되고 WakeLock 해제 :


다음과 같은 권한을 필요로하는 WakeLock을 사용할 수 있습니다 요구 사항에 따라

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "My Tag"); 
wl.acquire(); 
// wake locked... 
wl.release(); 

을 당신은 수 있습니다 다른 유형의 WakeLock을 사용할 수 있습니다.

+0

해당 솔루션을 생각했지만 로컬로 생성 된 잠자기 잠금을 해제 할 수 있습니다. , "해제"버튼을 누르지 않아도 해제 될 수 있습니다. 아이디어? – Tom

+2

서비스를 만듭니다. 서비스의 onCreate()에서 개인 데이터 멤버로 보유 된 WakeLock을 가져옵니다. 서비스의 onDestroy()에서 WakeLock을 해제합니다. 액티비티에서 스크린/CPU를 켜두고 싶으면 startService()를 호출하십시오. 언젠가 나중에 화면/CPU를 더 이상 사용할 필요가 없으면 stopService()를 호출하십시오. 자, WakeLock은 서비스가 실행되는 한 당신의 활동에 상관없이 개최됩니다. 뿐만 아니라 배터리 수명이 짧아지면 어쨌든 웨이크 록을 해제 할 수있는 배터리 이벤트를 볼 수도 있습니다. 공용 클래스 WakeLockService 서비스 { \t @Override \t 공공 IBinder onBind (의도는 arg0)를 확장 { \t \t // TODO 자동 생성 방법 – CommonsWare

+0

나는 .release 방법의 "WL가 해결 될 수 없다"가 계속 스텁 \t \t return null; \t} \t \t 공개 무효에서 onCreate() { \t \t PowerManager의 PM = (PowerManager) getSystemService (Context.POWER_SERVICE); \t \t PowerManager.WakeLock wl = pm.newWakeLock (PowerManager.FULL_WAKE_LOCK, "My Tag"); \t \t wl.acquire(); \t} \t \t 공개 무효들의 OnDestroy() { \t \t wl.release(); \t} } – Tom

2

대신 가동 잠금을 사용하여, 당신은 솔루션이 여기에 제안 고려해야합니다 : 훨씬 사용하기 쉬우 며 실수로 사용자의 배터리를 낭비의 가능성이없는 Force Screen On

.

+0

매우 근사합니다. 나는 내 대답에 그것을 추가했습니다. 감사! –

관련 문제