Có cách nào để tắt bảo vệ màn hình khi ứng dụng của tôi đang chạy không?
Ý tôi là màn hình mờ đi.
Có cách nào để tắt bảo vệ màn hình khi ứng dụng của tôi đang chạy không?
Ý tôi là màn hình mờ đi.
Câu trả lời:
Bạn muốn sử dụng một cái gì đó như thế này:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Tôi đã sử dụng:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
để tắt thời gian chờ màn hình và
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
để kích hoạt lại nó.
Ngoài ra còn có một cách XML mà Google đề xuất:
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:keepScreenOn="true">
Kiểm tra Google Trang trình bày - Trang trình bày 16.
"Wakelocks rất tốn kém nếu bị quên (...) Hãy cân nhắc sử dụng android: keepScreenOn để đảm bảo tính đúng đắn"
PowerManager.newWakeLockvà getWindow().addFlagskhông hoạt động vì một số lý do, điều này đã làm.
Điều quan trọng cần lưu ý là tất cả các phương pháp này phải được chạy từ chuỗi giao diện người dùng để hoạt động. Xem thay đổi KeepScreenOn từ javascript trong ứng dụng wireova Android
Đơn giản thêm dòng dưới đây vào của bạn MainActivityvà Ứng dụng của bạn không bao giờ tắt đèn.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Trong Chế độ xem, trong trường hợp của tôi là lớp con SurfaceView, bạn có thể đặt màn hình luôn bật. Tôi muốn màn hình vẫn sáng trong khi chế độ xem này vẫn đang vẽ nội dung.
public class MyCoolSurfaceView extends SurfaceView {
@Override
protected void onAttachedToWindow (){
super.onAttachedToWindow();
this.setKeepScreenOn(true);
}
@Override
protected void onDetachedFromWindow(){
super.onDetachedFromWindow();
this.setKeepScreenOn(false);
}
Đặt cái này tại onStart
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "no sleep"); wakeLock.acquire();
Và điều này tại bạn biểu hiện
<uses-permission android:name="android.permission.WAKE_LOCK" />
Đừng quên
wakeLock.release();
tại onStop
PARTIAL_WAKE_LOCKcho phép màn hình tắt.
đây là cách tốt nhất để giải quyết vấn đề này
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
android:keepScreenOn="true"
là cách tốt hơn để xử lý điều này nếu chúng ta muốn đặt bất kỳ màn hình cụ thể nào ở chế độ thức mọi lúc, nếu không, chúng ta phải tự xử lý khi nào nên bật và tắt nó
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); là giải pháp tốt nhất cho Android gốc.
2. nếu bạn muốn làm với ứng dụng React android thì hãy sử dụng mã bên dưới.
@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);
}
});
}
}
Điều này có thể được thực hiện bằng cách có được Khóa đánh thức.
Tôi đã không tự mình kiểm tra nó, nhưng đây là một hướng dẫn nhỏ về điều này.
View#setKeepScreenOnhoặc thuộc tính bố cục xml của nó tương đương,android:keepScreenOn="true"
WakeLock.
android:keepScreenOn="true"là câu trả lời hợp lệ duy nhất cho các hoạt động theo quan điểm của tôi. Tránh xa wakelocks trừ khi thực sự cần thiết.
View.setKeepScreenOn()[link] [1] ?. Tôi chưa bao giờ tự mình sử dụng nó. [1]: developer.android.com/reference/android/view/…