2014-06-24 22 views
6

Trên bo mạch phát triển Android, tôi đang cố gắng đánh thức AP dựa trên sự gián đoạn nhận được trên GPIO, ai cũng có thể giúp tôi với điều này?Đánh thức điện thoại Android bị gián đoạn trên GPIO

hiểu biết của tôi về vấn đề này là:

Chúng ta cần phải tạo ra một thiết bị đầu vào và cập nhật một sự kiện vào thiết bị này dựa trên ngắt nhận. Sau đó, từ ứng dụng tôi tin rằng hệ điều hành sẽ gửi một sự kiện xảy ra thông báo và sau đó chúng ta cần phải sử dụng wakelock để đánh thức AP.

Vui lòng cho tôi biết nếu sự hiểu biết của tôi là chính xác? Nếu có, thì bạn có thể cho tôi biết loại thiết bị đầu vào nào cần được đăng ký (EV_PWR, EV_KEY ..), cách ứng dụng sẽ nhận được thông báo và chúng tôi có thể đánh thức AP từ trình điều khiển không?

+0

Xin chào, tôi có thể đánh thức AP dựa trên gián đoạn. Tôi đã tạo thiết bị đầu vào cho phép sự kiện KEY_POWER bị gián đoạn và mã chính sách quyền lực android sẽ đảm nhiệm việc đánh thức AP. – kumar

+0

Tôi đang cố gắng hiểu cách thực hiện điều này. Bạn có thể cung cấp thêm một chút chi tiết về giải pháp của bạn không. Một số ví dụ sẽ được đánh giá cao hoặc ít nhất là liên kết đến tài liệu và ví dụ. – gfrigon

+0

Tôi muốn đánh thức Android từ trình điều khiển bộ sạc pin, ví dụ: khi thiết bị được đặt trong giá đỡ. Có cách nào mà không tạo thiết bị đầu vào không? – pera

Trả lời

1

Mô hình truyền bá sự kiện đầu vào chung (được đơn giản hóa): Khi đầu vào xảy ra sự kiện được nhân tạo tạo ra. Sự kiện đầu vào được đọc bởi trình xử lý sự kiện đầu vào và nó được gửi đến ứng dụng nền trước. Vài phím được gửi đến một số ứng dụng cụ thể thay vì được gửi đến ứng dụng nền trước. Ví dụ, nút Windows trong bàn phím được gửi đến menu bắt đầu, nút phát/tạm dừng được gửi tới ứng dụng trình phát đa phương tiện ngay cả khi nó không ở nền trước.

Trong trường hợp hệ thống Android_server đọc sự kiện từ hạt nhân, nó được chuyển tới ứng dụng/chế độ xem trước. Điều này được thực hiện cho tất cả các sự kiện đầu vào ngoại trừ phím nguồn, nút trang chủ vv được xử lý bởi trình quản lý cửa sổ của Android hoặc systemui. PhoneWindowManager.java có mã trình quản lý cửa sổ, nó nhận được sự kiện KEYCODE_POWER khi nhấn phím nguồn. Trong trường hợp đó nếu màn hình bật và không có khóa đánh thức để hiển thị được giữ thì màn hình bị khóa (bằng cách gọi goToSleep trong PowerManager), tương tự nếu màn hình tắt thì màn hình được bật (bằng cách gọi wakeup trong PowerManager).

isWakeKey tại http://androidxref.com/5.1.0_r1/xref/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#4512 sẽ được đặt thành true khi nhấn nút nguồn & phát hành. Mã sẽ gọi wakeup hoặc goToSleep tùy thuộc vào trạng thái màn hình hiện tại.

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