Czy istnieje sposób na wyłączenie wygaszacza ekranu, gdy moja aplikacja jest uruchomiona?
Mam na myśli przyciemnienie ekranu.
Czy istnieje sposób na wyłączenie wygaszacza ekranu, gdy moja aplikacja jest uruchomiona?
Mam na myśli przyciemnienie ekranu.
Odpowiedzi:
Chcesz użyć czegoś takiego:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Użyłem:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
aby wyłączyć limit czasu ekranu i
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
aby go ponownie włączyć.
Istnieje również sposób XML zalecany przez Google:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Sprawdź Prezentacje Google - slajd 16.
„Wakeloki są kosztowne, jeśli się je zapomina (...) Rozważ użycie android: keepScreenOn, aby zapewnić poprawność”
PowerManager.newWakeLocki getWindow().addFlagsnie działało z jakiegoś powodu, tak się stało.
Ważne jest, aby pamiętać, że wszystkie te metody muszą być uruchamiane z wątku interfejsu użytkownika, aby działały. Zobacz zmienianie KeepScreenOn z javascript w aplikacji Android cordova
Po prostu dodaj poniższą linię do swojej MainActivityi aplikacji nigdy nie wyłączaj świateł.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
W widoku, w moim przypadku podklasy SurfaceView, możesz ustawić ekran na zawsze włączony. Chciałem, aby ekran pozostał włączony, gdy ten widok wciąż rysował.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Umieść to na onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
I to na ciebie się manifestuje
<uses-permission android:name="android.permission.WAKE_LOCK" />
Nie zapomnij
wakeLock.release();
at onStop
PARTIAL_WAKE_LOCKumożliwia wyłączenie ekranu.
to najlepszy sposób rozwiązania tego problemu
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
jest lepszym sposobem, aby sobie z tym poradzić, jeśli chcemy, aby jakikolwiek ekran był cały czas aktywny, w przeciwnym razie musimy sobie poradzić, kiedy go włączyć i wyłączyć
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); to najlepsze rozwiązanie dla natywnego Androida.
2. jeśli chcesz korzystać z aplikacji React na Androida, użyj poniższego kodu.
@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);
}
});
}
}
Można to zrobić, kupując Wake Lock.
Sam tego nie testowałem, ale tutaj jest mały poradnik na ten temat.
View#setKeepScreenOnlub jego odpowiednika atrybutu układu xml,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"jest moim zdaniem jedyną poprawną odpowiedzią na działania. Trzymaj się z dala od wakelocków, chyba że jest to absolutnie konieczne.
View.setKeepScreenOn()[link] [1] ?. Sam nigdy z tego nie korzystałem. [1]: developer.android.com/reference/android/view/…