Чи є спосіб відключити заставку під час роботи мого додатка?
Затемнення екрану - це те, що я маю на увазі.
Чи є спосіб відключити заставку під час роботи мого додатка?
Затемнення екрану - це те, що я маю на увазі.
Відповіді:
Ви хочете використовувати щось подібне:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Я використав:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
щоб вимкнути тайм-аут екрана та
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
щоб знову включити його.
Існує також XML спосіб, який Google рекомендує:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Перевірте Google Слайди - слайд 16.
"Wakelocks коштують дорого, якщо їх забули (...) Подумайте про використання android: KeepScreenOn для забезпечення коректності"
PowerManager.newWakeLockі getWindow().addFlagsчомусь не працювало, це було зроблено.
Важливо відзначити, що всі ці методи повинні бути запущені з потоку інтерфейсу користувача для роботи. Дивіться про зміну KeepScreenOn з JavaScript у додатку Android cordova
Просте додавання нижче рядка у ваш 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);
}
Поставте це на старт
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); найкраще рішення для Native 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 layout,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"- це єдино вірний варіант відповіді. Не тримайтеся подалі від годинників, якщо це абсолютно не потрібно.
View.setKeepScreenOn()[посилання] [1] ?. Я ніколи цього не використовував сам. [1]: developer.android.com/reference/android/view/…