2010-11-17 46 views
14

Tôi đang tìm xem có thông báo hệ thống nào tôi có thể nghe để xem khi màn hình tắt/bật hay không. Có suy nghĩ gì không? Một cái gì đó tương tự như khi mạng kết nối/ngắt kết nối. hệ thốngThông báo tắt màn hình Android trên/

Trả lời

11

sẽ phát sóng khi màn hình bật và tắt -

Để lắng nghe này, bạn có thể tạo một BroadcastReceiver mà nghe cho các sự kiện:

Intent.ACTION_SCREEN_OFF Intent.ACTION_SCREEN_ON

Họ đang được liệt kê trong tài liệu hướng dẫn here:

Ngoài ra, có một tutorial về ứng phó với những sự kiện mà bạn có thể tìm thấy ứng dụng ful.

+5

Có sự khác biệt giữa có câu trả lời tương tự và sao chép một. Chúng tôi đã làm cùng một tìm kiếm google là tất cả: P –

+0

Đọc tài liệu một cách cẩn thận! Câu trả lời này thực sự cho bạn biết nếu thiết bị là "tương tác". Nếu màn hình bị khóa, thiết bị không tương tác. Chỉ 'android.hardware.display.DisplayManager' mới có thể cho bạn biết, nếu phần cứng hiển thị hiện đang bật. Tuy nhiên, điều đó có thể yêu cầu Android 5. – OneWorld

19

Cách dễ nhất là đặt này trong phương pháp MyApplication.onCreate() của bạn:

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
registerReceiver(new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      Log.d(TAG, Intent.ACTION_SCREEN_OFF); 
     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      Log.d(TAG, Intent.ACTION_SCREEN_ON); 
     } 
    } 
}, intentFilter); 
+0

Cảm ơn công trình này tuyệt vời và phải được đánh dấu là câu trả lời. – pmont

+0

Cách thức và thời điểm hủy đăng ký Người nhận trong trường hợp này? –

+1

Bạn có thể gọi [unregisterReceiver()] (http://developer.android.com/reference/android/content/Context.html#unregisterReceiver (android.content.BroadcastReceiver)) tại bất kỳ thời điểm nào bạn thích. Nhưng giả sử bạn đặt đoạn mã trên trong 'MyApplication.onCreate()', bạn không _have_ làm như vậy vì không có hàm Application.onDestroy() (lớp 'Application' là duy nhất theo cách đó - xem tài liệu chính thức hoặc [ ở đây] (http://stackoverflow.com/questions/17278201/android-ondestroy-or-similar-method-in-application-class) để biết thêm thông tin). –

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