Есть ли способ отключить заставку во время работы моего приложения?
Я имею в виду затемнение экрана.
Есть ли способ отключить заставку во время работы моего приложения?
Я имею в виду затемнение экрана.
Ответы:
Вы хотите использовать что-то вроде этого:
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 Slides - Slide 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);
}
Поместите это в 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"на мой взгляд, ваше упоминание о деятельности - единственный верный ответ. Держитесь подальше от wakelocks без крайней необходимости.
View.setKeepScreenOn()[ссылка] [1] ?. Но сам я им никогда не пользовался. [1]: developer.android.com/reference/android/view/…