Uygulamam çalışırken ekran koruyucuyu devre dışı bırakmanın bir yolu var mı?
Demek istediğim ekranın karartılması.
Uygulamam çalışırken ekran koruyucuyu devre dışı bırakmanın bir yolu var mı?
Demek istediğim ekranın karartılması.
Yanıtlar:
Bunun gibi bir şey kullanmak istiyorsun:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Kullandım:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
ekran zaman aşımını devre dışı bırakmak ve
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
yeniden etkinleştirmek için.
Google'ın önerdiği bir XML yolu da vardır:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Google Slaytlar'ı Kontrol Edin - Slayt 16.
"Wakelocks unutulursa maliyetlidir (...) Doğruluğu sağlamak için android: keepScreenOn kullanmayı düşünün"
PowerManager.newWakeLockve getWindow().addFlagsherhangi bir nedenle işe yaramazken, bu yaptı.
Bu yöntemlerin hepsinin çalışması için UI iş parçacığından çalıştırılması gerektiğine dikkat etmek önemlidir. Android cordova uygulamasında KeepScreenOn'u javascript'ten değiştirmeye bakın
Basitçe aşağıdaki satıra ekleyin MainActivityve uygulamanız ışıkları asla kapatmaz.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Bir Görünümde, benim durumumda bir SurfaceView alt sınıfı, ekranı her zaman açık olarak ayarlayabilirsiniz. Bu görünüm hala bir şeyler çizerken ekranın açık kalmasını istedim.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Bunu onStart'a koy
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
Ve bu sende tezahür ediyor
<uses-permission android:name="android.permission.WAKE_LOCK" />
Unutma
wakeLock.release();
onStop'da
PARTIAL_WAKE_LOCKekranın kapanmasına izin verir.
bunu çözmenin en iyi yolu bu
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
herhangi bir ekranı her zaman uyandırmak istiyorsak, bunu halletmenin daha iyi bir yoludur, aksi halde ne zaman etkinleştirip devre dışı bırakacağımızı kendimize halletmemiz gerekir.
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 için en iyi çözümdür.
2. React android uygulaması ile yapmak istiyorsanız, lütfen aşağıdaki kodu kullanın.
@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);
}
});
}
}
Bu, bir Wake Lock alarak yapılabilir.
Kendim test etmedim, ancak burada bununla ilgili küçük bir eğitim var.
View#setKeepScreenOnXml düzen özniteliğini veya eşdeğerini kullanınandroid:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"Bence aktiviteler için tek geçerli cevaptan bahsetmeniz . Kesinlikle gerekli olmadıkça uyandırma kilitlerinden uzak durun.
View.setKeepScreenOn()[Bağlantı] [1] kullanmaya ne dersiniz ?. Ben de hiç kullanmadım. [1]: developer.android.com/reference/android/view/…