Android 기기가 프로그래밍 방식으로 잠자 지 않게하려면 어떻게해야합니까? 잠자 지

Android 기기가 프로그래밍 방식으로 잠자 지 않게하려면 어떻게해야합니까?



답변

한 가지 옵션은 웨이크 잠금 을 사용하는 것 입니다. 문서의 예 :

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();

// screen and CPU will stay awake during this section

wl.release();

의 테이블도있다 이 페이지 wakelocks의 다른 종류를 설명합니다.

깨우기 잠금을 사용할 때는 약간의주의가 필요합니다. release()잠금을 완료 한 경우 (또는 포 그라운드가 아닌 경우) 항상 잠금 상태 를 유지 하십시오. 그렇지 않으면 앱에서 배터리가 많이 소모되고 CPU 사용량이 발생할 수 있습니다.

이 설명서에는 장치를 깨우는 방법에 대한 다양한 접근 방법과 사용 방법을 설명 하는 유용한 페이지 도 포함되어 있습니다 . “장치가 절전 모드로 전환되지 않도록 방지”가 화면 만 참조 하고 CPU를 활성 상태로 유지하지 않으면 깨우기 잠금이 필요한 것 이상일 수 있습니다.

이 방법을 사용하려면 매니페스트에 WAKE_LOCK 권한이 설정되어 있어야합니다 .


답변

당신은 단지 특정의 절전 모드를 방지하려면 View, 단지 전화 setKeepScreenOn(true)것이에 View설정된 나 keepScreenOn에 속성을 true. 이렇게하면가 화면 View에있는 동안 화면이 꺼지지 않습니다 . 이에 대한 특별한 권한이 필요하지 않습니다.


답변

다른 작동 솔루션을 찾았습니다 : onCreate 이벤트 아래 앱에 다음 줄을 추가하십시오.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

샘플 Cordova 프로젝트는 다음과 같습니다.

package com.apps.demo;
import android.os.Bundle;
import android.view.WindowManager;
import org.apache.cordova.*;

public class ScanManActivity extends DroidGap {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        super.loadUrl("http://stackoverflow.com");
    }
}

그 후에 내 앱이 열려있는 동안 잠자기 상태가되지 않았습니다. ans가 xSus에 간다.


답변

android:keepScreenOn="true" 레이아웃 XML에서 얻는 것이 더 나은 옵션 일 수 있습니다.

추가 정보 : https://developer.android.com/training/scheduling/wakelock.html


답변

아래와 같이 활동 창에 플래그 설정

@Override public void onResume() {
 super.onResume();
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

@Override public void onPause() {
 super.onPause();
 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}


답변

루트 쉘 (예 : adb 쉘)에서 다음을 사용하여 잠글 수 있습니다.

echo mylockname >/sys/power/wake_lock    

그 후에는 장치가 깨어있을 때까지 다음을 수행합니다.

echo mylockname >/sys/power/wake_unlock    

‘mylockname’과 동일한 문자열입니다.

이렇게해도 화면이 어두워지는 것은 아니지만 CPU가 잠자기 상태가되지는 않습니다.

/ sys / power / wake_lock은 사용자 라디오 (1001)와 그룹 시스템 (1000) 그리고 물론 루트에 대한 읽기-쓰기입니다.

참조는 여기에 있습니다 : http://lwn.net/Articles/479841/


답변

@eldarera가 말한 것은 모든면에서 정확합니다. 깨우기 잠금은 장치가 잠자기 상태를 유지하는 올바른 방법입니다.

나는 당신이 응용 프로그램이 필요로하는 것을 모르지만 , 휴대 전화가 당신이 필요로하는 것을 더 많이 깨우지 않도록 강요하지 않으면 배터리 수명이 엄청나게 고통받지 않도록 응용 프로그램을 어떻게 설계 해야하는지 생각 하는 것이 정말로 중요 합니다.

이벤트를 시작하고 전화 및 (앱)을 깨워서 수행해야 할 작업을 수행 한 다음 다시 절전 모드로 전환 하는 방법에 대한 이 좋은 예 를 알려 AlarmManager드리겠습니다. Alarm Manager (source : commonsware.com)