program story

앱이 실행되는 동안 Android 비활성화 화면 시간 초과

inputbox 2020. 8. 8. 12:37
반응형

앱이 실행되는 동안 Android 비활성화 화면 시간 초과


내 앱이 실행되는 동안 화면 보호기를 비활성화하는 방법이 있습니까?

화면이 어두워지는 것이 의미합니다.


다음과 같이 사용하고 싶습니다.

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

나는 다음을 사용했다 :

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

화면 시간 제한을 비활성화하고

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

다시 활성화합니다.


Google에서 권장하는 XML 방식도 있습니다.

<LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true">

Google 프레젠테이션 확인 -슬라이드 16.

"잊혀진 경우 wakelock은 비용이 많이 듭니다. (...) android : keepScreenOn을 사용하여 정확성을 보장하는 것이 좋습니다."


이러한 메서드가 모두 작동하려면 UI 스레드에서 실행되어야한다는 점이 중요합니다. Android Cordova 앱의 JavaScript에서 KeepScreenOn 변경을 참조하십시오.


아래 줄을 간단히 추가하면 MainActivity앱이 조명을 끄지 않습니다.

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

보기에서, 필자의 경우 SurfaceView 하위 클래스에서 화면을 항상 켜짐으로 설정할 수 있습니다. 이 뷰가 여전히 무언가를 그리는 동안 화면이 계속 켜져 있기를 원했습니다.

public class MyCoolSurfaceView extends SurfaceView { 
@Override
protected void onAttachedToWindow (){
    super.onAttachedToWindow();
    this.setKeepScreenOn(true);
}

@Override
protected void onDetachedFromWindow(){
    super.onDetachedFromWindow();
    this.setKeepScreenOn(false);
}

이것은 Wake Lock을 획득하여 수행 할 수 있습니다.

직접 테스트하지는 않았지만 여기 에 대한 작은 자습서가 있습니다.


onStart에 넣으십시오.

    PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
    wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep");
    wakeLock.acquire();

그리고 이것은 당신에게 나타납니다

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

잊지 마세요

wakeLock.release();

onStop에서


이 문제를 해결하는 가장 좋은 방법입니다.

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

android:keepScreenOn="true"

특정 화면을 항상 깨우려면이 문제를 처리하는 더 좋은 방법입니다. 그렇지 않으면 활성화하고 비활성화 할 때 스스로 처리해야합니다.

https://developer.android.com/training/scheduling/wakelock.html


procedure SetSleep(aEnable:Boolean);
var
    vFlags: integer;
begin
    vFlags := TJWindowManager_LayoutParams.JavaClass.FLAG_TURN_SCREEN_ON or
        TJWindowManager_LayoutParams.JavaClass.FLAG_DISMISS_KEYGUARD or
        TJWindowManager_LayoutParams.JavaClass.FLAG_SHOW_WHEN_LOCKED or
        TJWindowManager_LayoutParams.JavaClass.FLAG_KEEP_SCREEN_ON;

    if aEnable then
    begin
      CallInUIThread (   // uses FMX.Helpers.Android
      procedure
      begin
        TAndroidHelper.Activity.getWindow.setFlags (vFlags, vFlags);
      end );
    end
    else
      CallInUIThread (
      procedure
      begin
        TAndroidHelper.Activity.getWindow.clearFlags (vFlags);
      end );
end;

참고 URL : https://stackoverflow.com/questions/4195682/android-disable-screen-timeout-while-app-is-running

반응형