安卓7.0上在状态栏上加电池百分比

2023-10-31 05:50

本文主要是介绍安卓7.0上在状态栏上加电池百分比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

     》》》》》》


    安卓7.0上的statusbar上是默认不带电池百分比的。需要我们加上去。有两个方法,先写第一个方法

   1. 在frameworks/base/packages/SystemUI/res/layout/system_icons.xml中添加布局文件:

   

<TextView android:id="@+id/system_icon_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:textColor="#ffffff"android:textSize="@dimen/battery_level_text_size"android:visibility="gone"android:importantForAccessibility="noHideDescendants"/>
    2. 在frameworks/base/packages/SystemUI/res/values/strings.xml中添加字符串

 

<string name="battery_level_template"><xliff:g id="level" example="45">%d</xliff:g>%%</string>
    3.在 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java

   

   mKeyguardStatusBar.setUserInfoController(mUserInfoController);mKeyguardStatusBar.setUserSwitcherController(mUserSwitcherController);mUserInfoController.reloadUserInfo();((BatteryMeterView) mStatusBarView.findViewById(R.id.battery)).setBatteryController(mBatteryController);mKeyguardStatusBar.setBatteryController(mBatteryController);///M: add{@if (true) {//show battery percentmStatusBarView.setBatteryController(mBatteryController);}///@}
   4.在 frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java

      首先引入两个包

    

import android.widget.TextView;
import com.android.systemui.statusbar.policy.BatteryController;
 

      这个类需要实现接口

public class PhoneStatusBarView extends PanelBar implements BatteryController.BatteryStateChangeCallback

        增加其他方法

   public void onFinishInflate() {mBarTransitions.init();///M:add {@mBatteryLevel = (TextView) findViewById(R.id.system_icon_battery_level);///@}}
  
 private TextView mBatteryLevel;private BatteryController mBatteryController;public void setBatteryController(BatteryController batteryController) {mBatteryController = batteryController;mBatteryController.addStateChangedCallback(this);if (mBatteryLevel != null){mBatteryLevel.setVisibility(View.VISIBLE);}}@Overridepublic void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {if (mBatteryLevel != null) {mBatteryLevel.setText(getResources().getString(R.string.battery_level_template, level));}}@Overridepublic void onPowerSaveChanged(boolean isPowerSave) {// could not care less}


第二种方法


diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml
index 82119a3..455edf9 100644
--- a/packages/SystemUI/res/layout/status_bar.xml
+++ b/packages/SystemUI/res/layout/status_bar.xml
@@ -80,6 +80,15 @@android:textColor="#ffffff"android:textSize="@dimen/battery_level_text_size"android:layout_marginStart="7dp"/>
+             <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:textSize="@dimen/battery_level_text_size"
+                android:importantForAccessibility="noHideDescendants"/><com.android.systemui.statusbar.policy.Clockandroid:id="@+id/clock"


diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index f17403d..8bee44c 100755
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.javaimport android.app.ActivityManager.RunningTaskInfo;//add by yuhaixiang for factory end
+import com.android.systemui.FontSizeUtils;
+import java.text.NumberFormat;public class PhoneStatusBar extends BaseStatusBar implements DemoMode,DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
@@ -443,6 +445,15 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,private int mNavigationIconHints = 0;private HandlerThread mHandlerThread;
+    
+    private TextView mBatteryLevel;
+    private ContentObserver mBatteryLevelShow = new ContentObserver(new Handler()) {
+        @Override
+        public void onChange(boolean selfChange) {
+            mBatteryLevel.setVisibility((Settings.System.getInt(mContext.getContentResolver(),
+                    "status_bar_show_battery_percent_outside", 1) != 0) ? View.VISIBLE : View.GONE);
+        }
+    };// ensure quick settings is disabled until the current user makes it through the setup wizardprivate boolean mUserSetup = false;
@@ -778,7 +789,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,// ================================================================================protected PhoneStatusBarView makeStatusBarView() {final Context context = mContext;
-
+         mContext.getContentResolver().registerContentObserver(Settings.System.getUriFor("status_bar_show_battery_percent_outside"),
+                true, mBatteryLevelShow);updateDisplaySize(); // populates mDisplayMetricsupdateResources();@@ -914,6 +926,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,mLocationController = new LocationControllerImpl(mContext,mHandlerThread.getLooper()); // will post a notificationmBatteryController = createBatteryController();
+         mBatteryLevel = (TextView) mStatusBarView.findViewById(R.id.battery_level);
+        mBatteryLevel.setVisibility((Settings.System.getInt(context.getContentResolver(),
+                "status_bar_show_battery_percent_outside", 1) != 0) ? View.VISIBLE : View.GONE);mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {@Overridepublic void onPowerSaveChanged(boolean isPowerSave) {
@@ -925,6 +940,9 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,@Overridepublic void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {// noop
+                String percentage = NumberFormat.getPercentInstance().format((double) level / 100.0);
+                mBatteryLevel.setText(percentage);
+}});mNetworkController = new NetworkControllerImpl(mContext, mHandlerThread.getLooper());
@@ -3804,6 +3822,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,updateRowStates();mScreenPinningRequest.onConfigurationChanged();mNetworkController.onConfigurationChanged();
+         FontSizeUtils.updateFontSize(mBatteryLevel, R.dimen.battery_level_text_size);}@Override



这篇关于安卓7.0上在状态栏上加电池百分比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/313258

相关文章

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

安卓玩机工具------小米工具箱扩展工具 小米机型功能拓展

小米工具箱扩展版                     小米工具箱扩展版 iO_Box_Mi_Ext是由@晨钟酱开发的一款适用于小米(MIUI)、多亲(2、2Pro)、多看(多看电纸书)的多功能工具箱。该工具所有功能均可以免root实现,使用前,请打开开发者选项中的“USB调试”  功能特点 【小米工具箱】 1:冻结MIUI全家桶,隐藏状态栏图标,修改下拉通知栏图块数量;冻结

安卓开发板_联发科MTK开发评估套件串口调试

串口调试 如果正在进行lk(little kernel ) 或内核开发,USB 串口适配器( USB 转串口 TTL 适配器的简称)对于检查系统启动日志非常有用,特别是在没有图形桌面显示的情况下。 1.选购适配器 常用的许多 USB 转串口的适配器,按芯片来分,有以下几种: CH340PL2303CP2104FT232 一般来说,采用 CH340 芯片的适配器,性能比较稳定,价

安卓实现弹出软键盘屏幕自适应调整

今天,我通过尝试诸多方法,最终实现了软键盘弹出屏幕的自适应。      其实,一开始我想通过EditText的事件来实现,后来发现,安卓自带的函数十分强大,只需几行代码,便可实现。实现如下:     在Manifest中设置activity的属性:android:windowSoftInputMode="adjustUnspecified|stateHidden|adjustResi

iOS如何隐藏系统状态栏

这里主要说明一下iOS7系统给状态栏的适配及隐藏带来的改变。 变化一: 不隐藏状态栏的情况下,StatusBar会直接显示在当前页面上,当前页面的会延伸到 StatusBar下方,顶到最上头。 这种显示方式在iOS7上是无法改变的,也无法通过设置或者配置类达到iOS6的状态栏效果。       所以在iOS7上进行页面布局的时候要考虑

安卓错误经验分析之 R cannot be resolved to a variable

当出现 R cannot be resolved to a variable  错误的时候,不能采用编译器建议的修改方法,试着clean一下,然后查找gen文件夹下R.java是否丢失,如果不存在R.java,程序没有报错且采用其它方法均无效,八成是res文件夹下的layout或者manifest出现错误没有显示出来,需要自己查一遍,否则无法根本解决问题,盲目修改代码是没用的。

2409atl,atl3.0到7.0的变化

原文 本文不介绍新的ATL7服务器类和属性.这不是一个完整的列表,只是我目前找到的. 串 串转换宏有一些限制.它从栈中分配内存,可能会在大串时溢出栈.函数退出时,释放该串,而不是在函数内引入的域内释放. 它使用过时OLE2ANSI定义.如果你查看MSDN上对_alloca(来转换)的注意,它说它在SEH或C++EH中使用时有限制. 如,看一下ATL3的串转换宏: USES_CONVER

uni-app 扫码优化:谈谈我是如何提升安卓 App 扫码准确率的

一. 前言 之前的一个项目遭到用户吐槽:“你们这个 App 扫码的正确率太低了,尤其是安卓的设备。经常性的扫码扫不出来,就算是扫出来了,也是错误的结果!” 由于之前是扫描二维码的需求,所以没有对扫描条形码做严格的测试,客户提示说是条形码扫描效率低下。随即,我用自己的手机测试了一下,在安卓手机上确实有这样的问题,扫码准确率确实是低,尤其是条形码,扫码效率慢且不准确。扫描二维码的的效率还算可以

鸿蒙图表MPChart自定义样式(五)左y轴显示数值,右y轴显示百分比

左y轴数值不变,右y轴改成百分比,需要通过自定义RightAxisFormatter实现IAxisValueFormatter接口,将右y轴的数值改成百分比文本,RightAxisFormatter类如下: class RightAxisFormatter implements IAxisValueFormatter {maxNumber: number = 0;constructor(ma