2012年8月15日水曜日

何気なく使っているFramework 第7回 スクリーンショット


今回から確認OSバージョンをAndroid OS 4.0.1_r1に変更しました。


確認OSバージョン

Android OS 4.0.1_r1 ICS

スクリーンショット


ICSから端末単体でスクリーンショットが撮れるようになりました。
とりあえず、frameworks内の確認!!


スクリーンショットが実行されるまでの流れ


  1. Native層のInputDispatcherからinterceptKeyBeforeQueueingをコール
  2. 一旦、Java層にコールバック
  3. InputManagerを経てPhoneWindowManager#interceptKeyBeforeQueueing

    1. interceptKeyBeforeQueueing
    2. interceptScreenshotChord()
    3. mScreenshotChordLongPress#run
    4. takeScreenshot()
  4. SystemUIに新たに追加されたService、TakeScreenshotService

    1. run()
  5. GlobalScreenshot#takeScreenshot
  6. Surface.screenshotをコールし画面イメージのBitmap取得
  7. アニメーションして保存


確認しておいた方がいいソース

\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


簡易クラス図


f:id:baroqueworksdev:20111204004218p:image:w640

0 件のコメント:

コメントを投稿