2011-12-09 3 views
12

기기를 잠자기 상태로 보내거나 화면을 끄고 싶습니다. 나는 조사하고이 주제에 발견 : 기본적으로 Turn off screen on Android화면을 끄거나 기기를 잠자기 상태로 보내는 방법

을의 그것을 할 수있는 세 가지 방법이 있지만 나는 세 가지에 대한 문제가 발견 :

A) 선택 1 :

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
manager.goToSleep(int amountOfTime); 

문제 : FC가 발생합니다. 나는 DEVICE_POWER 권한이 필요하다고 읽었지만 일반 앱에는 승인 할 수 없습니다.

B) 선택 2 :

PowerManager manager = (PowerManager) getSystemService(Context.POWER_SERVICE); 
PowerManager.WakeLock wl = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "Your Tag"); 
wl.acquire(); 
wl.release(); 

문제 : 이것은 나를 위해을 작동하지 않습니다. 나는 이유를 모른다. 그것은 나에게 FC를주지는 않지만 무해하다.

C) 선택 3 :

WindowManager.LayoutParams params = getWindow().getAttributes(); 
params.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON; 
params.screenBrightness = 0; 
getWindow().setAttributes(params); 

문제 : 나는 그것을 작동시킬 수 있지만 시도 장치를 켤 때 이상한 일이 같은 반환하고자, 또는 내 응용 프로그램의 경우하지 않습니다 버튼을 누른 직후 자동으로 잠자기 상태가됩니다. 이는 일반적인 솔루션보다 팁이나 해결 방법과 비슷합니다.

누구나 기기를 보내거나 문제가없는 화면을 끌 수있는 좋은 방법을 알려주시겠습니까? 나는 이처럼 간단한 기능이 좋은 방법이 아니라는 것을 드문 일로 생각한다. (또는 잘 문서화되지 않은 한)

답변

7

나 자신에게 대답한다. 장치를 끌 수도 있지만 응용 프로그램은 API를 통해 장치 관리자 기능을 구현해야합니다. Device Administration

이 API에는 내가 원하는 것을 수행하는 locknow() 함수가 있습니다.

어쨌든, 이것은 안드로이드 하드웨어 및 보안 기능을 확장하기위한 것이며 누구나 그렇게 장치를 제어하기를 원하지는 않습니다.

내가 원했던 것은 간단한 제스처로부터 장치를 잠글 수있는 능력이었습니다. 내 장치 관리자 클래스를 만들고 싶지 않아 무료 응용 프로그램 인 "lockScreen"이 설치되어 있는지 확인합니다. 그것은 내가 원하는 것을 지름길이며 쉬운 방법입니다. 이 앱은 장치 관리자로 등록해야이 클래스를 구현할 수 있습니다. 시장에서 무료로 구할 수 있습니다.

+0

이 발견,이 벌금을합니까? –

0

내 응용 프로그램은 이미 내가이 화면을 끄려면하지 있는지 알아 내 화면 잠금 시간까지 잠 무엇 내 PowerManager.class

/** 
* Force the device to go to sleep. Overrides all the wake locks that are 
* held. 
* 
* @param time is used to order this correctly with the wake lock calls. 
*   The time should be in the {@link SystemClock#uptimeMillis 
*   SystemClock.uptimeMillis()} time base. 
*/ 
public void goToSleep(long time) 
{ 
    try { 
     mService.goToSleep(time); 
    } catch (RemoteException e) { 
    } 
} 
+0

PowerManager 클래스의 API 구현을 파악하지 못하셨습니까? 내가 네사의 사용 권한을 얻을 수 없기 때문에이 방법을 사용하지 못합니다. –

+1

'DEVICE_POWER' 권한은 어떻게됩니까? –

관련 문제