내 앱이 실행되는 동안 화면 보호기를 비활성화하는 방법이 있습니까?
화면이 어두워지는 것이 의미합니다.
내 앱이 실행되는 동안 화면 보호기를 비활성화하는 방법이 있습니까?
화면이 어두워지는 것이 의미합니다.
답변:
다음과 같이 사용하고 싶습니다.
getWindow().addFlags(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을 사용하여 정확성을 보장하는 것이 좋습니다."
PowerManager.newWakeLock그리고 getWindow().addFlags어떤 이유로 작동하지 않았다,이했다.
이러한 메서드가 모두 작동하려면 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);
}
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에서
PARTIAL_WAKE_LOCK화면이 꺼집니다.
이 문제를 해결하는 가장 좋은 방법입니다.
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;
1.getWindow (). addFlags (WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 네이티브 Android를위한 최상의 솔루션입니다.
2. React android 애플리케이션으로하고 싶다면 아래 코드를 사용하세요.
@ReactMethod
public void activate() {
final Activity activity = getCurrentActivity();
if (activity != null) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}
});
}
}
이것은 Wake Lock을 획득하여 수행 할 수 있습니다.
직접 테스트하지는 않았지만 여기 에 대한 작은 자습서가 있습니다.
View#setKeepScreenOn또는 이에 상응하는 xml 레이아웃 속성android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"제 생각에 활동에 대한 유일한 유효한 대답입니다. 절대적으로 필요한 경우가 아니면 wakelock을 피하십시오.
View.setKeepScreenOn()[link] [1] 사용은 어떻 습니까? 나는 그것을 직접 사용하지 않았습니다. [1] : developer.android.com/reference/android/view/…