강제 화면 켜기


답변:


339

깨우기 잠금 장치를 사용하지 마십시오

이를 위해서는 앱에 추가 권한을 부여해야하며 실수로 wake lock을 유지하여 화면을 그대로 두는 버그를 쉽게 도입 할 수 있습니다.

FLAG_KEEP_SCREEN_ON다음 onCreate()과 같이 활동 창에서 활성화 할 수 있는 window 플래그를 사용하는 것이 훨씬 낫습니다 .

@Override
protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);

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

이렇게하면 창이 전경에있는 동안과 전경에있을 때만 화면이 계속 켜져 있습니다. 이 일반적인 사용 사례를 크게 단순화하여 앱이 상태간에 전환 될 때 수행해야하는 저글링을 제거합니다.


5
장치가 잠자기에서 방해가됩니까? 그렇다면 WAKE_LOCK의 공통점은 저를 충격적인 실수라고 생각합니다!
Michael Cramer

32
예, 화면을 계속 켜고 장치가 잠자기에서 벗어나는 것을 방지합니다.
hackbod

1
예, 적절한 창 API를 사용하여 플래그를 제거 할 수 있습니다. 어떤 것이 그려지는 것에 대해 걱정할 필요가 없습니다. 프레임 워크는 필요한 경우 그렇게합니다.
hackbod 2010

1
@hakbod : 이것은 화면을 살아있는 상태로 유지하는 데 작동하지만 잠 들어있는 화면은 어떨까요?
Kavitha 2011

5
@ KC202에서는 WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON을 사용하여 창이 표시 될 때 화면이 켜지도록 할 수 있습니다. FLAG_DISMISS_KEYGUARD 및 / 또는 FLAG_SHOW_WHEN_LOCKED와 함께 자주 사용됩니다.
hackbod

34

이 질문은 이미 @hackbod에 의해 훌륭한 답변이 있습니다!

두 가지 추가 솔루션으로이 질문에 답하고 있습니다!

기존 솔루션 :

@Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);    
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    }

추가 솔루션 :

우리는 사용할 수 있습니다 keepScreenOn

1. implementation 사용setKeepScreenOn() in java code

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // or any View (in case generated programmatically ) 
        View v = getLayoutInflater().inflate(R.layout.driver_home, null);

        v.setKeepScreenOn(true);
        setContentView(v);
       }

문서 http://developer.android.com/reference/android/view/View.html#setKeepScreenOn(boolean)

2. 추가 keepScreenOnxml layout

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:keepScreenOn="true" >

문서 http://developer.android.com/reference/android/view/View.html#attr_android%3akeepScreenOn

참고 (몇 가지 유용한 사항) :

1. 그 문제가되지 않습니다 keepScreenOn에 사용되어야 Main/Root/Parent View 그것이 어떤 사용할 수 있습니다 child view그것이 작동와 동일하게 의지 작업Parent view

2. 문제는 View's Visibility must be visible그렇지 않으면 작동하지 않는다는 것입니다!


참고 v.setKeepScreenOn(true);전체 화면 dialogfragment을 위해 할 수있는 유일한 방법이 될 것 같다

16

또 다른 해결책은 android:keepScreenOn="true"( 문서 화면을 유지해야하는 뷰 ) 하는 것입니다.

어떤 뷰가 유지되고 어떤 뷰가 유지되지 않는지에 대해 좀 더 세분화 된 제어가 가능합니다. 이러한 방식으로 리소스 파일의 설정을 참조 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.