2014-06-24 30 views
6

Android geliştirme panosunda, AP'yi bir GPIO’da alınan bir kesintiye dayanarak uyandırmaya çalışıyorum, bu konuda bana yardımcı olabilecek herhangi biri var mı? Bu konudaAndroid telefonu bir interrupt üzerinde uyandırın, bir GPIO üzerinde

Benim anlayış:

Biz bir giriş cihazı oluşturmak ve alınan kesme dayalı bu cihaza bir olay güncellemeniz gerekir. Daha sonra uygulamadan OS'nin bir olayın bildirimini göndereceğine inanıyorum ve daha sonra AP'yi uyandırmak için wakelock'u kullanmamız gerekiyor.

Anlayışım doğruysa lütfen bana bildirin. Eğer evet ise, o zaman hangi giriş cihazının kaydedilmesi gerektiğini söyler misiniz (EV_PWR, EV_KEY ..), uygulamanın nasıl bir bildirim alacağı ve AP'yi sürücüden nasıl uyandırabiliriz?

+0

Merhaba, Interrupt'ı kullanarak AP'yi uyandırabiliyorum. Bir kesme işleminde bir KEY_POWER olayı veren giriş aygıtı oluşturdum ve android güç politikası kodu AP'yi uyandırmakla ilgilenecek. – kumar

+0

Bunun nasıl yapıldığını anlamaya çalışıyorum. Çözümünüz hakkında biraz daha ayrıntılı bilgi verebilir misiniz? Bazı örnekler takdir edilecektir ya da en azından belgelere ve örneklere bağlanır. – gfrigon

+0

Android cihazını şarj cihazı sürücüsünden uyandırmak istiyorum, örneğin cihaz cihaza yerleştirildiğinde. Giriş cihazı oluşturmadan bir yolu var mı? – pera

cevap

1

Genel giriş olayını yayma modeli (basitleştirilmiş): Bir girdi oluştuğunda, çekirdek tarafından bir olay oluşturulur. Giriş olayı, giriş olay işleyicisi tarafından okunur ve ön plan uygulamasına gönderilir. Ön plan uygulamasına gönderilmek yerine, bazı belirli uygulamalara az sayıda anahtar gönderilir. Örneğin, klavyedeki Windows düğmesi başlat menüsüne gönderilir, ön planda olmasa bile oynatma/duraklatma düğmesi medya oynatıcı uygulamasına gönderilir.

Android system_server'ın çekirdeğe ait olayları okuduğu durumda, uygulama ön plana/görünüme geçer. Bu, Android'in pencere yöneticisi veya systemui tarafından ele alınan güç tuşu, ev düğmesi vb. Dışındaki tüm giriş olayları için yapılır. PhoneWindowManager.java pencere yöneticisi koduna sahiptir, güç tuşuna basıldığında KEYCODE_POWER olayını alır. Bu durumda ekran açıksa ve ekran için uyandırma kilidi yoksa ekran kapanır (PowerManager'da goToSleep çağrılarak), ekran kapanırsa ekran açılır (PowerManager'da uyandırma ile). isWakeKey http://androidxref.com/5.1.0_r1/xref/frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java#4512 adresindeki güç düğmesi, güç düğmesine basıldığında & yayımlandığında true değerine ayarlanacaktır. Kod mevcut ekran durumuna bağlı olarak uyandırma veya goToSleep'ı çağırır.

İlgili konular