最終更新:2013-10-03 (木) 06:30:29 (3829d)
Android/入力システム
イベントの伝播
- 上位から下位まで
Java
- android.view.View
- android.app.Activity
- InputHandler?
C++
- InputPublisher?
- NativeInputQueue?
- InputConsumer?
- InputReader
- EventHubが監視
- EventHub::getEvent?
- Android/dev/input
ネイティブ層
入力の監視コマンド
C++のクラス
EventHub
InputApplication?
InputDispatcher
InputListener?
InputManager
- AOSP/frameworks/base/services/input/InputManager.h
- AOSP/frameworks/base/services/input/InputManager.cpp
InputReader
- AOSP/frameworks/base/services/input/InputReader.h
- AOSP/frameworks/base/services/input/InputReader.cpp
InputWindow?
PointerController
SpriteController?
呼び出し順
- AOSP/frameworks/base/services/java/com/android/server/SystemServer.javaのrun()
- wm = WindowManagerService.main()
- AOSP/frameworks/base/services/java/com/android/server/wm/WindowManagerService.javaのコンストラクタ
- new InputManager (Javaのクラス)
- InputManager.start()
- AOSP/frameworks/base/services/java/com/android/server/wm/InputManager.javaのコンストラクタ
- native nativeInit
- AOSP/frameworks/base/services/java/com/android/server/wm/InputManager.javaのstart()
- native nativeStart
- AOSP/frameworks/base/services/jni/com_android_server_InputManager.cpp (JNI)
- android_server_InputManager_nativeInit()
- android_server_InputManager_nativeStart()
- gNativeInputManager->getInputManager()->start();
- NativeInputManagerのコンストラクタ
- new EventHub
- new InputManager (C++のクラス)
- AOSP/frameworks/base/services/input/InputManager.cpp
- コンストラクタ
- new InputDispatcher
- new InputReader
- initialize()
- コンストラクタ
構造
クラス名 コンストラクタ EventHub EventHub(); InputManager InputManager(const sp<EventHubInterface>& eventHub,const sp<InputReaderPolicyInterface>& readerPolicy,const sp<InputDispatcherPolicyInterface?>& dispatcherPolicy) InputReader InputReader(const sp<EventHubInterface>& eventHub, const sp<InputReaderPolicyInterface>& policy, const sp<InputListenerInterface?>& listener); InputDispatcher InputDispatcher(const sp<InputDispatcherPolicyInterface?>& policy)