2010-05-04 22 views
8

ứng dụng của tôi làm điều gì đó khi màn hình chuyển sang màu đen, nhưng tôi muốn nó chỉ thực hiện tác vụ đó nếu màn hình bị tắt "tự nó", thông qua thời gian chờ màn hình - KHÔNG khi người dùng nhấn nút nguồn. Có cách nào để phân biệt giữa hai sự kiện này không?Phân biệt giữa thời gian chờ màn hình và nhấn nút nguồn?

ACTION_SCREEN_OFF rõ ràng là cháy trong cả hai trường hợp và tôi không tìm thấy bất kỳ ý định nào khác có thể khớp với những gì tôi đang tìm kiếm.

Nhờ sự giúp đỡ của bạn, Nick

+0

nó là gì bạn đang cố gắng làm gì? Có thể có một hành động khác để lắng nghe. – CaseyB

+0

Tôi đang cố gắng thực hiện phép tính đơn giản khi màn hình hết thời gian chờ, nhưng không phải khi người dùng nhấn nút nguồn để 'cưỡng bức' sẽ tắt màn hình. Một "Timeout" -Hành động sẽ là tuyệt vời, nhưng tôi đã không tìm thấy bất cứ điều gì tương tự, được nêu ra. Có thể truy vấn xem màn hình khóa có bật (mà tôi tin, thường chỉ xảy ra khi bạn nhấn nút nguồn, ít nhất là trên N1)? – Nick

+0

Tại sao bạn muốn làm điều đó trong tình huống đó? Nếu bạn giải thích * cái gì * và * tại sao *, có lẽ ai đó có thể gợi ý cho bạn một giải pháp tốt hơn. –

Trả lời

4

Ở cấp độ thấp hơn, có sự kiện xảy ra khi màn hình hết giờ, hãy xem bằng "adb logcat" và bạn sẽ thấy nó, đào từ đó.

+0

Cảm ơn câu trả lời của bạn. Tôi thấy điều đó, nhưng nghĩ rằng vì nó không phải là một phát sóng công cộng, tôi không thể nghe nó, nhưng tôi chắc chắn tôi sẽ tìm thấy một cái gì đó trên đó trên google nếu bạn nói rằng nó là lý thuyết có thể (mặc dù không phải với các phương tiện thông thường , Tôi đoán). Cảm ơn! – Nick

0

Bạn có thể lắng nghe một sự kiện bàn phím KEYCODE_POWER? Điều đó có thể làm những gì bạn muốn. (Nhưng thứ tự trong đó và ACTION_SCREEN_OFF đến có thể không được đảm bảo).

+0

Xin chào, cảm ơn bạn đã trả lời! Đó là một ý tưởng hay, mặc dù tôi đã thử nó và nó không hoạt động, có vẻ như không thể nắm bắt được mã khóa đó: http://groups.google.com/group/android-developers/browse_thread/thread/8c858b7a8605791d/ 9120aa96dfb59d82? Lnk = raot Ngoài ra, tôi cần đăng ký khóa-sự kiện trên toàn hệ thống vì tôi đang sử dụng dịch vụ, cũng không thể, tôi nghĩ: -/ Nhưng cảm ơn sự giúp đỡ của bạn, đó là ý tưởng hay, nếu nó hoạt động, nó sẽ là hoàn hảo :-)! – Nick

1

Dịch vụ không thể trực tiếp xử lý các sự kiện nút. Có lẽ bạn có thể đăng ký hoạt động của mình để nhận thông báo khi màn hình tắt, và sau đó để Activity kiểm tra phím cuối cùng được nhấn để xem đó có phải là nút nguồn hay không - nếu không thì bạn có thể gửi phát sóng cho dịch vụ của bạn và để nó chạy bất cứ điều gì bạn muốn.

1

Đó là một câu hỏi vui vẻ :) Mặc dù không chính xác, bạn có thể thử lấy mẫu thời gian kể từ khi người sử dụng sự kiện liên lạc cuối cùng và thời gian hoạt động của bạn đi để tạm dừng - và xem nếu nó phù hợp với screen off timeout

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