Android4.4 SystemUI分析之PowerUI

本文主要分析Android4.4中SystemUI的PowerUI组件,包括其源码路径、程序结构、启动过程以及电池图标的绘制。尽管基于MTK平台与Google版本略有差异,但整体框架相似。在SystemUI的启动过程中,会注册监听器,并在status_bar.xml布局文件中定义电池图标。BatteryMeterView类负责电池图标的绘制,通过注册和注销广播实现,具体的绘制逻辑集中在draw(Canvas c)方法中。
摘要由CSDN通过智能技术生成

以下分析是基于MTK Android4.4原生的SystemUI与Google 的SystemUI有微小的区别,但两者的整体框架是差不多的。

这一篇是分析SystemUI的第一篇,先从最简单的PowerUI着手,源码路径:/frameworks/base/packages/SystemUI  程序目录结构如下:

我导入Eclipse编辑,报错的原因是因为找不到Framework上的一些包和资源,这个没有关系;修改完后在使用mmm模块编译,再push到手机(eng版本)上进行调试,push后需要重启才能生效。

在AndroidManifest.xml上没有Activity注册

<intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
所以整个程序启动是从外部启动SystemUIService的。那么是如何启动SystemUIService的呢?看下这个文件:/frameworks/base/services/java/com/android/server/SystemServer.java在这个文件中可以找到

    static final void startSystemUi(Context context) {
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.android.systemui",
                    "com.android.systemui.SystemUIService"));
        //Slog.d(TAG, "Starting service: " + intent);
        context.startServiceAsUser(intent, UserHandle.OWNER);
    }
所以SystemUI在SystemService启动时就被调用了。

SystemUIService的关键代码如下:

package com.android.systemui;

import android.app.Service;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.IBinder;
import android.util.Log;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.HashMap;

public class SystemUIService extends Service {
    private static final String TAG = "System
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值