Hoạt động của tôi chạy bằng khóa chế độ thức một phần vì nó liên tục xử lý dữ liệu Bluetooth đã nhận. Khóa chế độ thức được thiết lập như sau:Cách bật màn hình trong khi khóa chế độ thức một phần
powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wakeLock.acquire();
Khi xảy ra sự kiện nhất định, tôi muốn hiển thị trên màn hình để người dùng có thể xem trạng thái. Tôi muốn màn hình tự động bật, không phải do người dùng nhấn phím. Tuy nhiên mọi nỗ lực để thực hiện việc này đều thất bại. Khi màn hình tắt khi đang chạy với khóa chế độ thức một phần, nỗ lực của tôi để bật lại màn hình và cho phép người dùng thấy hoạt động hiện tại không thành công. Tôi đã cố gắng giả mạo hoạt động người dùng:
PowerManager NewPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
NewPowerManager.userActivity(1, false);
cờ Cài đặt cho cửa sổ:
Window win = getWindow();
win.setFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON, WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
Và thậm chí phát hành khóa trỗi dậy và bắt đầu khác mà nên bật màn hình:
if (wakeLock != null)
{
wakeLock.release(); // release the wakelock
}
PowerManager.WakeLock TempWakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ACQUIRE_CAUSES_WAKEUP, "TempWakeLock");
// tried | PowerManager.ON_AFTER_RELEASE to no avail
TempWakeLock.acquire();
Có điều gì tôi thiếu ở đây không? Tôi không cố gắng mở một hoạt động mới, nhưng chỉ hiển thị hoạt động hiện tại của tôi cho người dùng. Có ai khác có thể làm điều này không? Cảm ơn sự giúp đỡ nào bạn có thể cho tôi.