Есть ли способ отключить заставку во время работы моего приложения?
Яркость экрана - это то, что я имею в виду.
Есть ли способ отключить заставку во время работы моего приложения?
Яркость экрана - это то, что я имею в виду.
Вы хотите использовать что-то вроде этого:
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.
"Вакелоки стоят дорого, если забыли (...) Рассмотрите возможность использования android: keepScreenOn для обеспечения правильности"
Просто добавьте строку ниже в MainActivity
, и ваше приложение никогда не выключит свет.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Это можно сделать, приобретя Wake Lock.
Я сам не тестировал его, но здесь является небольшим учебником по этому вопросу.
В представлении в моем случае подкласс 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
Важно отметить, что все эти методы должны запускаться из потока пользовательского интерфейса для работы. См. изменение KeepScreenOn из javascript в приложении Android cordova
это лучший способ решить эту проблему.
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;