CPU使用状況を表示
ICSから開発者向けオプションに「CPU使用状況を表示」が追加されました。Settingsで設定すると
以下の処理順でサービス:LoadAverageServiceが起動します。このサービス内でProcessから取得した値をオーバーレイ表示を行っています。
値が何を意味するのかはProcessStats.javaをみればわかります。
ついでに、Viewの追加→WindowManagerServiceまでの流れも要チェックです。
特にViewRoot.javaがViewRootImpl.javaへ変わり、中身もそれなりに修正されています。
DevelopmentSettings#onPreferenceTreeClick - writeCpuUsageOptions() - startService "com.android.systemui.LoadAverageService" of SysttemUI. - LoadAverageService#onCreate() - new LoadView extends ProcessStats - new Stats - WindowManager#addView() with Overlay layer of SECURE_SYSTEM_OVERLAY_LAYER - WindowManagerImpl#addView - ViewRootImpl#setView - IWindowSession#add - Session#add - WindowManagerService#addWindow
確認しておいた方がいいソース
\packages\apps\Settings\src\com\android\settings- DevelopmentSettings.java
\frameworks\base\packages\SystemUI\src\com\android\systemui
- LoadAverageService.java
\frameworks\base\core\java\com\android\internal\os
- ProcessStats.java
\frameworks\base\core\java\android\view
- ViewRootImpl.java
\frameworks\base\services\java\com\android\server\wm
- WindowManagerService.java
\frameworks\base\policy\src\com\android\internal\policy\impl
- PhoneWindowManager.java
LayoutParamsの TYPEで、どの表示レイヤーに表示するかを設定すると思いますが、この表示レイヤーに、新たなレイヤーを追加することを考えています。
返信削除例えば、新たなレイヤーを定義して、TYPE_SYSTEM_ERRORと TYPE_SYSTEM_OVERLAYの間に表示する方法を、ご存知もしくは調査対象だけでも分かっていたら、ご教授お願いできないでしょうか。
以下のソースを調査してはいかがでしょうか。
返信削除UIのWindow関連はこの周辺を調査すれば理解できると思います。
https://android.googlesource.com/platform/frameworks/base.git/+/master/services/core/java/com/android/server/wm/WindowManagerService.java
https://android.googlesource.com/platform/frameworks/base.git/+/master/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java
このコメントは投稿者によって削除されました。
返信削除回答ありがとうございます。
返信削除PhoneWindowManager#windowTypeToLayerLw にて TYPEからレイヤーレベルに変換し、WindowManagerService#addWindowToListInOrderLockedにて該当のレイヤーレベルに追加していると理解しました。
なので、新たなレイヤーとして、WindowManager.LayoutParamsに定義し、PhoneWindowManager#windowTypeToLayerLw に任意の箇所に追加する。
また check関連では、PhoneWindowManager#checkAddPermission や PhoneWindowManager#checkShowToOwnerOnlyなどに修正して対応しようと思います。