2010-04-04 42 views
5

Như đã đề cập trong câu hỏi trước, tôi gặp khó khăn trong việc chặn tất cả các sự kiện android.intent.action.SCREEN_ON mà không có thời lượng dài Service (không khuyến khích).Cách phát hiện khi màn hình bật?

Tôi có thể làm việc xung quanh nhu cầu nếu tôi chỉ có thể làm việc khi màn hình bật vào bất kỳ thời điểm nào, trong Service.

Có ai có thể đề xuất một cuộc gọi phương thức sẽ trả lại thông tin này không? 1,5 trở lên.

Trả lời

1

Hệ thống cố ý không cho phép các ứng dụng nhận các chương trình phát sóng ACTION_SCREEN_ONACTION_SCREEN_OFF trong tệp kê khai của chúng, vì chúng tôi không muốn khởi chạy nhiều ứng dụng để bật hoặc tắt màn hình. Đây là một cái gì đó xảy ra tất cả các thời gian, và phải càng nhanh càng tốt.

Thật không may, như đã chỉ ra, không có cách nào kiểm tra ngay lập tức để xem màn hình có bật hay không.

+0

Trên thực tế nó có thể nhận được các chương trình phát sóng, như BroadcastReceivers trên một dịch vụ tồn tại lâu dài. Ứng dụng của tôi thực hiện điều này khá vui vẻ, nhưng tôi đang cố gắng nix Dịch vụ sống lâu. Nó chỉ thất bại âm thầm nếu bạn cung cấp nó như một bộ lọc ý định trên một máy thu. –

3

Nếu mã của bạn đang chạy, có một cơ hội rất tốt mà màn hình đang bật. Ngoại lệ chính sẽ là nếu mã của bạn được đánh thức qua AlarmManager.

Sẽ rất tuyệt nếu ACTION_SCREEN_ON là một phát quảng cáo cố định, nhưng điều đó dường như không đúng.

Nếu bạn có thể cuộn bằng Android 2.1 trở lên, PowerManager hiện có phương thức isScreenOn(). Tin tốt là, có sẵn. Tin xấu là, kể từ khi nó được thêm vào đó, nó không chắc rằng có bất kỳ cách nào khác để dễ dàng xác định nó. Và, việc kiểm tra nhanh mã nguồn không cung cấp nhiều hy vọng rằng bạn có thể hack đường đến thông tin trong các SDK trước đó.

5

PowerManager.isScreenOn() Từ: API Level 7

+0

Điều này đã làm việc cho tôi trên Note 8 nhưng không làm việc trên Tab 4 ... –

Các vấn đề liên quan