今回から確認OSバージョンをAndroid OS 4.0.1_r1に変更しました。
ICSから端末単体でスクリーンショットが撮れるようになりました。
とりあえず、frameworks内の確認!!
- InputDispatcher.cpp
- InputManager.cpp
\frameworks\base\policy\src\com\android\internal\policy\impl
- PhoneWindowManager.java
\frameworks\base\packages\SystemUI\src\com\android\systemui\screenshot
- GlobalScreenshot.java
- TakeScreenshotService.java

確認OSバージョン
Android OS 4.0.1_r1 ICSスクリーンショット
ICSから端末単体でスクリーンショットが撮れるようになりました。
とりあえず、frameworks内の確認!!
スクリーンショットが実行されるまでの流れ
- Native層のInputDispatcherからinterceptKeyBeforeQueueingをコール
- 一旦、Java層にコールバック
- InputManagerを経てPhoneWindowManager#interceptKeyBeforeQueueing
- interceptKeyBeforeQueueing
- interceptScreenshotChord()
- mScreenshotChordLongPress#run
- takeScreenshot()
- SystemUIに新たに追加されたService、TakeScreenshotServiceへ
- run()
- GlobalScreenshot#takeScreenshot
- Surface.screenshotをコールし画面イメージのBitmap取得
- アニメーションして保存
確認しておいた方がいいソース
\frameworks\base\services\input- InputDispatcher.cpp
- InputManager.cpp
\frameworks\base\policy\src\com\android\internal\policy\impl
- PhoneWindowManager.java
\frameworks\base\packages\SystemUI\src\com\android\systemui\screenshot
- GlobalScreenshot.java
- TakeScreenshotService.java
簡易クラス図

0 件のコメント:
コメントを投稿