android6.0系统状态栏添加电量百分比
1.系统状态栏添加电量百分比显示
我们要修改SystemUI这个应用,看过源码才知道,其实状态栏是分3个显示的,
锁屏的时候是一个,对应的类是KeyguardStatusBarView,它是一个RelativeLayout,
对应的布局是Keyguard_status_bar.xml
进入后是一个,对应的类是PhoneStatusBar,它是BaseStatusBar的子类
对应的布局是status_bar.xml.xml
下拉通知菜单的时候又是一个,对应的类是StatusBarHeaderView,它是一个RelativeLayout
它对应的布局是Status_bar_expanded_header.xml
要想监听到电量的变化,必须实现BatteryController.BatteryStateChangeCallback这个接口,
它有两个方法,其中onBatteryLevelChanged方法就是监听电量变化的
BatteryController是一个BroadcastReceiver,当电量变化时可以收到
PowerManager.ACTION_POWER_SAVE_MODE_CHANGED这个action,
这时就会走onBatteryLevelChanged方法,所有我们只要实现这个接口就可以监听到。
KeyguardStatusBarView,StatusBarHeaderView和PhoneStatusBar是有实现,
PhoneStatusBar对应的布局是status_bar.xml,在里面加一个textview在自定义电池图标的下面,
然后在onBatteryLevelChanged()方法中去实现电量显示
PhoneStatusBar中:
添加显示电量的textview
<include layout="@layout/system_icons" /> <TextView android:id="@+id/battery_level" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="@dimen/header_battery_margin_expanded" android:paddingEnd="@dimen/battery_level_padding_end" android:textColor="#ffffff" android:textSize="@dimen/battery_level_text_size" android:importantForAccessibility="noHideDescendants"/> <com.android.systemui.statusbar.policy.Clock android:id="@+id/clock"
@Override public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0); mBatteryLevel.setText(percentage); }
如果想要控制电量百分比的显示,只需要写一个ContentObserver做一个开关来监听改变来控制
在packages/apps/Settings/src/com/mediatek/settings/fuelgauge/PowerUsageExts.java 中添加switchpreference
// add by w for battery percentage
mBatteryPercentPrf = new SwitchPreference(mContext);
mBatteryPercentPrf.setKey(KEY_BATTERY_PERCENTAGE_ENABLE);
mBatteryPercentPrf.setTitle(R.string.battery_percentage_title);
mBatteryPercentPrf.setOrder(PREFERENCE_ORDER_FIRST);
mBatteryPercentPrf.setChecked(true);
mPowerUsageScreen.addPreference(mBatteryPercentPrf);
//add end
在public boolean onPowerUsageExtItemsClick()方法中添加
// add by w for battery percentage
if (KEY_BATTERY_PERCENTAGE_ENABLE.equals(preference.getKey())) {
if (preference instanceof SwitchPreference) {
SwitchPreference pref = (SwitchPreference) preference;
int bgState = pref.isChecked() ? 1 : 0;
Log.d(TAG, "battery percentage enable state: " + bgState);
Settings.System.putInt(mContext.getContentResolver(),
"BATTERY_PERCENTAGE_ENABLE", bgState);
Intent intent = new Intent(ACTION_BATTERY_PERCENTAGE_ENABLE);
intent.putExtra("state",bgState);
if (mBatteryPercentPrf != null) {
mBatteryPercentPrf.setChecked(pref.isChecked());
}
mContext.sendBroadcast(intent);
}
// If user click on PowerSaving preference just return here
return true;
}
//add end
在KeyguardStatusBarView和PhoneStatusBar中添加接收广播即可
在KeyguardStatusBarView中:
<FrameLayout android:id="@+id/system_icons_container" android:layout_width="wrap_content" android:layout_height="@dimen/status_bar_height" android:layout_gravity="center_vertical" > <include layout="@layout/system_icons" /> </FrameLayout> <TextView android:id="@+id/battery_level" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" android:layout_marginStart="@dimen/header_battery_margin_keyguard" android:paddingEnd="@dimen/battery_level_padding_end" android:textColor="#ffffff" android:visibility="gone" android:textSize="@dimen/battery_level_text_size" android:importantForAccessibility="noHideDescendants"/>
@Override public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0); mBatteryLevel.setText(percentage); boolean changed = mBatteryCharging != charging; mBatteryCharging = charging; if (changed) {updateVisibilities(); } }
private void updateVisibilities() {if (mMultiUserSwitch.getParent() != this && !mKeyguardUserSwitcherShowing) {if (mMultiUserSwitch.getParent() != null) {getOverlay().remove(mMultiUserSwitch); }addView(mMultiUserSwitch, 0); } else if (mMultiUserSwitch.getParent() == this && mKeyguardUserSwitcherShowing) {removeView(mMultiUserSwitch); }mBatteryLevel.setVisibility(mBatteryCharging ? View.VISIBLE : View.GONE); }
可以看到,在KeyguardStatusBarView中加了一个限制条件控制电量百分比显示,在充电的时候才显示
StatusBarHeaderView中类似
当然,你也可以选择一个类实现BatteryController.BatteryStateChangeCallback这个接口,仿照上面的写法
PS:6.0代码
android6.0系统状态栏添加电量百分比相关推荐
- android6.0在状态栏添加一键截屏
在配置文件frameworks/base/packages/SystemUI/res/values/config.xml下添加screenshot [html] view plaincopy < ...
- android 10.0状态栏显示电量百分比
1.概述 在10.0的系统产品开发中,对于系统默认的电池电量是不显示的,所以产品需求要求显示电池电量,方便知道当前电量,方便显示在电量不足的情况下可以及时充电,所以来实现这个功能 2.状态栏显示电量百 ...
- android电量百分比,Android P 状态栏显示电量百分比
状态栏默认显示电量百分比 在Android P 的BatteryMeterView中有集成显示电量百分比相关代码,所以我们只需要将其显示控制条件默认打开就行. 在Settings的Battery的子页 ...
- 零死角玩转Android6.0系统Healthd深入分析
零死角玩转Android6.0系统Healthd深入分析 概述 Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework ...
- Android6.0 ios,意超越iOS9!谷歌寄希望于Android6.0系统
虽然在目前全球的移动操作系统上,谷歌的Android系统市场占有率傲视群雄,但在某些方面iOS系统还是更占优势.对此分析师Dan Gallagher认为谷歌和苹果.Android和iOS之间的战况将随 ...
- android6.0 添加电量百分比
要完成这个功能需要修改SystemUI和Settings两部分 一.Settings添加开关--控制是否打开此功能 我选择把开关添加到display模块下 diff --git a/packages/ ...
- android6.0 系统时间不自动校准的问题
软件平台:android6.0 硬件平台:MT6797 最近,发现我们产品中有一定概率的时间是不对的,我感到很诧异,我司的产品怎么可以这莫弱鸡,而且android本身的智能性,区区一个时间怎么可能也不 ...
- [RK3288][Android6.0] 调试笔记 --- 电池电量一直显示100%
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 之前文章[RK3288][Android6.0] 调试笔记 - 伪电池驱动添加 阐述了如何添加一个 ...
- android+桌面歌词,Android6.0系统适配桌面歌词效果
在360手机助手及各家的音乐播放器软件上,都使用了桌面浮动窗功能,桌面歌词都是在音乐客户端显示在前台时隐藏,在用户把软件切换到后台后显示出来,此效果在Android 6.0以前,大部分都是使用系统的A ...
最新文章
- Adam公式+参数解析
- bootstrap模态框
- hibernate与jpa_将JPA Hibernate与OptaPlanner集成
- ffmpeg: error while loading shared libraries: libavdevice.so.52
- 北交大计算机学院复试经验,2014考研复试:过来人考研复试经验谈-北交大计算机系...
- c语言 数据结构 list、queue、tree抽象数据类型的定义与实现 详尽代码和注释
- Bootstrap3 插件的选项
- java struts2 上传图片_Java框架Struts2实现图片上传功能
- 计算机辅助初中数学教学,计算机辅助数学教学的优势
- 计算机基础知识 笔试,计算机基础知识笔试题
- dubbo源码-服务发现
- R 语言从Github上安装R语言的程序包
- Echarts饼状legend如何自动显示值和百分比
- vmware上用kali破解wifi
- 最简单的让IjkPlayer自动旋转带有rotation视频的方法
- E-牛牛小数点_牛客练习赛89(数学)
- 时间序列预测框架--Darts--快速开始(下)
- 三角定位matlab,基于RSSI校正的三角形质心定位算法
- 如何让游戏里的 NPC 拥有自己的意志?
- mv或者cp带小括号文件名解析问题总结
热门文章
- 【科普】千字解读自动驾驶的十个实用冷知识
- cmp指令c语言,cmp命令的含义及其使用方法演示与详解
- 深入浅出TF-IDF模型
- java 导出word xml格式_关于Java导出Word文件
- 家中升级到12M光纤到户了,很给力,速度嗖嗖的
- 某公交公司商业智能系统建设方案分享
- android天气预报项目总结报告,Android项目:天气预报App
- 【Lifelong learning】Efficient Meta Lifelong-Learning with Limited Memory
- Git+Github 的工作流程
- 基于JAVA考试编排管理系统计算机毕业设计源码+数据库+lw文档+系统+部署