2013年11月17日日曜日

何気なく使っているFramework PrintManager

Android 4.4 KitKatoから追加されたPrint機能。

※調査する時間が取れず、中途半端ですが一旦公開します。


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

Print機能を構成するパッケージが4つに分かれています。
すべて重要なので、確認しておきましょう。

\frameworks\base\core\java\android\print
PrintManager.java
IPrintSpooler.aidl

\frameworks\base\core\java\android\printservice
PrintService.java
PrinterDiscoverySession.java
IPrintService.aidl

\frameworks\base\packages\PrintSpooler\src\com\android\printspooler
PrintSpoolerService.java

\frameworks\base\services\java\com\android\server\print
PrintManagerService.java
RemotePrintService.java
RemotePrintSpooler.java
UserState.java



簡易クラス図

2013年11月3日日曜日

Andoird 4.4 KitKat StatusBarの変更点(基本設計編)



システムよりの確認です。


SystemServerをみる

config.disable_systemuiの設定次第で、ステータスバーを非表示にできる。

https://android.googlesource.com/platform/frameworks/base/+/android-4.4_r1/services/java/com/android/server/SystemServer.java
 
        boolean disableSystemUI = SystemProperties.getBoolean("config.disable_systemui", false);

            if (!disableSystemUI) {
                try {
                    Slog.i(TAG, "Status Bar");
                    statusBar = new StatusBarManagerService(context, wm);
                    ServiceManager.addService(Context.STATUS_BAR_SERVICE, statusBar);
                } catch (Throwable e) {
                    reportWtf("starting StatusBarManagerService", e);
                }
            }


SystemUiをみる

そもそも、Tablet用のフォルダがなくなった。すでに、JBでは使われていなかった。(※Nexus系の端末)

https://android.googlesource.com/platform/frameworks/base/+/android-4.4_r1/packages/SystemUI/src/com/android/systemui/statusbar/

TV用は?

相変わらず、スケルトン。モジュールの定義のみ。

https://android.googlesource.com/platform/frameworks/base/+/android-4.4_r1/packages/SystemUI/src/com/android/systemui/statusbar/tv/TvStatusBar.java

2013年11月2日土曜日

4.4 KitKatの表示レイヤーについて


android-4.4_r1がAOSP上で公開されました。
毎度おなじみの表示レイヤーのチェックを行いました。

確認OSバージョン

android-4.4_r1 KitKat

表示レイヤー

OSのメジャーアップデートなので、表示レイヤーの変更点があるかどうか確認しました。
ソース
android-4.4_r1/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
(★ = 4.4_r1にて新規追加されたレイヤー)
レイヤー名用途
1TYPE_UNIVERSE_BACKGROUND
2TYPE_PRIVATE_PRESENTATION
2TYPE_WALLPAPER壁紙
3TYPE_PHONE着信などの電話用
4TYPE_SEARCH_BAR検索バー
5TYPE_RECENTS_OVERLAY履歴
5TYPE_SYSTEM_DIALOG電源OFFダイアログなどのシステムダイアログ
6TYPE_TOASTトースト表示
7TYPE_PRIORITY_PHONESIMエラー表示など
8TYPE_DREAMDream用レイヤー
9SYSTEM_ALERT_LAYERANRやLowバッテリー通知
10TYPE_INPUT_METHOD文字入力UI
11TYPE_INPUT_METHOD文字入力UIのダイアログ
12TYPE_KEYGUARD_SCRIM★keyguardが起動するまでの間、Keyguardの後ろに表示する
13TYPE_KEYGUARDキーガード表示
14TYPE_KEYGUARD_DIALOGシャットダウン中やSIMロック表示、キーガード表示中の電源OFFダイアログなど
15TYPE_STATUS_BAR_SUB_PANELPhone用expandしたパネル
16TYPE_STATUS_BARStatusBar
17TYPE_STATUS_BAR_PANELStatusBarをexpandしたパネル
18TYPE_VOLUME_OVERLAYボリューム変更
19TYPE_SYSTEM_OVERLAYキーガードより上位に表示するシステムオーバーレイ
20TYPE_NAVIGATION_BARナビゲーションBar
21TYPE_NAVIGATION_BAR_PANELナビゲーションBarの上に表示するために必要なパネル(searchなど)
22TYPE_SYSTEM_ERRORシステムエラー通知
23TYPE_MAGNIFICATION_OVERLAY拡大表示用
24TYPE_DISPLAY_OVERLAYSecondaryディスプレイ用
25TYPE_DRAGドラッグ&ドロップ操作用
26TYPE_SECURE_SYSTEM_OVERLAY
27TYPE_BOOT_PROGRESSBoot中のDialog表示
28TYPE_POINTERマウスポインター
29TYPE_HIDDEN_NAV_CONSUMERFakeWindow用


大きな変更点は
  1. TYPE_KEYGUARD_SCRIMの追加

アプリケーション開発者にはあまり関係ありませんが、Frameworksのカスタム作業がメインの方、WindowManagerServiceとKeyguard周りを調査しましょう。