tôi bắt đầu một hoạt động từ BroadcastReceiver, được kích hoạt bởi một alaram (kiểu RTC_WAKEUP). in onTạo hoạt động đó tôi thêm các cờ nàyFLAG_TURN_SCREEN_ON không phải lúc nào cũng hoạt động
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);
vấn đề đôi khi (khoảng 10% trường hợp) màn hình không bật. báo động được kích hoạt chính xác (i ở đây âm thanh của một thông báo, cũng được kích hoạt trong bộ nhận onReceive() của người nhận, sau đó, nếu tôi nhấn nút nguồn của điện thoại, màn hình sẽ bật, hiển thị hoạt động của tôi và tắt ngay lập tức. rằng, nút nguồn làm việc tốt. điều này xảy ra trên android 2.3.7 và đây là onReceive() phương pháp
@Override
public void onReceive(Context context, Intent intent) {
m_Context = context;
Bundle extras = intent.getExtras();
final int id = extras.getInt("timer_id");
Intent activityIntent = new Intent(m_Context, MyActivity.class);
activityIntent.putExtra("timer_id", id);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
m_Context.startActivity(activityIntent);
// and now load the alarm sound and play it for the desired time
showFinishedNotification();
}
tôi muốn tránh sử dụng PowerManager, vì nó cần một sự cho phép, và những lá cờ là ưa thích cách.
những gì có thể là một vấn đề? logcat không hiển thị bất kỳ vấn đề ...
Bạn có quản lý để phá vỡ vấn đề? – Redwarp
@Redwarp Giải pháp duy nhất là sử dụng quyền WAKE_LOCK và sử dụng khóa tĩnh. Có một 'WakefulBroadcastReceiver' mới trong thư viện hỗ trợ, xử lý khóa đánh thức một phần. Nó cần sự cho phép của cource. – shelll