Có một số phần của khung công tác chưa rõ ràng đối với tôi. Tôi nổi tiếng với dòng chảy của một sự kiện đầu vào (Kernel -> Eventhub -> InputReader -> InputDispatcher -> ...).Xử lý khóa Android (Framework)
Tình hình
(Yêu cầu:. Xử lý phím nhập mà không thay đổi khung Android) Tôi muốn để xử lý các sự kiện quan trọng đến từ một thiết bị (bàn phím/gamepad/controller/...) nhưng có là một số yêu cầu. Đối với một, tôi không muốn thay đổi khuôn khổ Android. Điều này có nghĩa là, tôi không muốn mở rộng WindowManagerPolicy
và các chức năng của nó như interceptKeyBeforeDispatching
nơi khóa chủ đang được xử lý. Điều này sẽ dẫn đến sự kiện quan trọng được gửi vào lớp ứng dụng mà là tốt. Nhược điểm là, tôi có một yêu cầu phức tạp ở đây. Ví dụ: Khi tôi đang chơi Angry Birds và tôi nhấn nút GoToAlpha trên thiết bị đầu vào được kết nối của mình, ứng dụng Alpha phải bắt đầu. Angry Birds không có đầu mối mà nút GoToAlpha là, sẽ không xử lý/nhận ra nó và sẽ có ví dụ không có ý định phát sóng để bắt đầu ứng dụng Alpha của tôi.
Câu hỏi
Có cách nào để xử lý của tôi (tùy chỉnh) sự kiện quan trọng sau khi nó đã được gửi đi, biết rằng việc áp dụng ở mặt trước không thể xử lý chìa khóa?
của tôi (thất bại) giải pháp
Tạo một dịch vụ mà sẽ xử lý các sự kiện quan trọng. Điều này là không thể vì một ứng dụng như Angry Birds sẽ không ràng buộc với dịch vụ của tôi và sự kiện quan trọng sẽ không bị bắt trong dịch vụ của tôi. Nếu tôi sai, vui lòng cung cấp thêm thông tin :).
Tạo thư viện bên ngoài nơi tôi cho phép các hoạt động của ứng dụng được kế thừa từ ActivityBase của riêng mình. Tất cả các sự kiện quan trọng và có hành vi mặc định có thể được xử lý ở đây. Nhược điểm, các ứng dụng hiện tại sẽ không hỗ trợ các sự kiện khóa tùy chỉnh của tôi vì chúng không sử dụng thư viện.
Mở rộng khuôn khổ sẽ ở trong mắt của tôi giải pháp sạch nhất nhưng điều đó sẽ dẫn đến không đáp ứng yêu cầu của tôi.
Bất kỳ sự giúp đỡ hay thông tin hữu ích sẽ được đánh giá
tắm
Nếu câu hỏi đầu tiên có thể được giải quyết trên một cách này hay cách khác .. Tôi muốn để tùy chỉnh của tôi
Intent
phía sau nút GoToAlpha. Điều này có nghĩa .. Bởi mặc định ứng dụng Alpha sẽ được bắt đầu nhưng sau khi người dùng đã tùy chỉnh nó, ứng dụng Beta sẽ được bắt đầu từ bây giờ .. Bất kỳ suy nghĩ nào?
Cảm ơn
Sẽ không lạ nếu có thể chụp các sự kiện quan trọng từ các ứng dụng khác? Tôi đoán đây sẽ là một nguy cơ bảo mật – Boy
Đúng. Một khi sự kiện quan trọng rời khỏi khung công tác, nó chỉ đi đến một ứng dụng và được xử lý ở đó. Nếu không, nó sẽ được trả về khung. Điều này có nghĩa là không có giải pháp nào đáp ứng được cả hai yêu cầu của tôi? – DroidBender
Theo ý kiến của tôi, có lẽ sẽ không có cách nào, chỉ vì vấn đề an ninh: xử lý các sự kiện quan trọng trong khi ứng dụng của bạn không tập trung. Có lẽ cách duy nhất sẽ là nếu bạn thực hiện một bàn phím Android (tôi không có hiểu biết về điều đó)? Điều này sẽ có thể xử lý các sự kiện quan trọng (và người dùng cũng chỉ vào nguy cơ bảo mật này khi bạn chọn bàn phím của bên thứ 3) – Boy