IT박스

내 활동 내내 화면을 깨어있게 유지

itboxs 2021. 1. 9. 09:37
반응형

내 활동 내내 화면을 깨어있게 유지


내 앱에는 세 가지 활동이 있습니다. 두 번째 활동에있을 때 화면을 깨우고 싶습니다. "잠금"키를 수동으로 누르지 않는 한 두 번째 활동에서 화면이 꺼지지 않아야합니다. 나는 많은 링크를 통과했지만 그들은 명확하지 않은 것 같습니다.


Android 튜토리얼 Keep the Screen On 에서 설명한대로 몇 가지 방법으로이 작업을 수행 할 수 있습니다. 활동 창에서 FLAG_KEEP_SCREEN_ON을 설정할 수 있습니다.

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

이에 상응하는 XML은 android:keepScreenOn="true"활동 레이아웃의 루트보기에 속성 추가하는 것 입니다. 프로그래밍 방식으로 플래그를 설정하는 이점은 다음을 사용할 수 있다는 것입니다.

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

활동이 실행되는 동안 더 이상 화면을 강제로 유지할 필요가 없을 때.

화면 (및 특정 기타 리소스)을 제어하는 ​​또 다른 방법은 wake lock을 사용하는 것입니다.

mWakeLock = ((PowerManager) getContext().getSystemService(Context.POWER_SERVICE))
    .newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass().getName());
mWakeLock.acquire();
// screen stays on in this section
mWakeLock.release();

매니페스트에는 다음 권한이 포함되어야합니다.

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

그러나 자습서에서 설명한대로 wake lock은 다른 사용 사례 (예 : 화면이 꺼져있는 동안 CPU를 계속 실행해야하는 서비스 또는 백그라운드 작업)에 더 적합합니다.


이 솔루션이 훨씬 더 쉽습니다.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" // Whatever your layout is
    ...
    android:keepScreenOn="true"> // Add this line

이것을 활동 레이아웃 XML에 추가하기 만하면됩니다.


귀하의 질문을 이해함에 따라 WAKE_LOCK귀하의 응용 프로그램에서 사용해야한다고 생각합니다 .

같은 것,

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE,"");    
mWakeLock.acquire();

그리고 애플리케이션의 manifest.xml 파일 파일에 다음을 추가하십시오.

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

이것을 사용해보십시오

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

이 코드는 더 이상 사용되지 않습니다. 대신 다음을 사용하세요.

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

사용을 마친 후 다음을 호출하십시오 (최상의 솔루션은 일부 활동의 onDestroy 메소드에서이 메소드를 호출하는 것입니다).

wl.release();

링크 에 대한 자세한 내용

참조 URL : https://stackoverflow.com/questions/8442079/keep-the-screen-awake-throughout-my-activity

반응형