[android] 강제 화면 켜기

내 앱이 실행되는 동안 화면을 강제로 활성 상태로 유지하고 종료하지 않도록하려면 어떻게하나요?



답변

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

이를 위해서는 앱에 추가 권한을 부여해야하며 실수로 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);
}

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


답변

이 질문은 이미 @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그렇지 않으면 작동하지 않는다는 것입니다!


답변

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

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


답변