android6.0 状态栏添加图标 举例Location

本文介绍了如何在Android 6.0中向状态栏添加Location图标,包括将图片放入指定目录,修改config.xml配置,以及在PhoneStatusBarPolicy.java中设置图标显示。示例中详细说明了添加Location图标的具体步骤,但未涉及控制类的实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

增加状态图标步骤如下:

:1: 将图片放在 \frameworks\base\packages\SystemUI\res\drawable-hdpi(实际情况自己选择)

:2:\frameworks\base\core\res\res\values config.xml

添加<item><xliff:gid="id">eyeball</xliff:g></item>

3:\frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone PhoneStatusBarPolicy.java 添加如下(注意名字要与 config.xml中定义的一致)

mService.setIcon(“eyeball”, R.drawable.stat_sys_eyeball, 0,null);

mService.setIconVisibility(“eyeball”, true);
这只是简单的添加一个图标,没有对他进行控制
下面举个我在工作当中实现的一个例子——添加Location图标
添加图片和item我就不贴出来了

diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/frameworks/bas
index c0b6fa5..5140280 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -189,7 +189,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
         DragDownHelper.DragDownCallback, ActivityStarter, OnUnlockMethodChangedListener,
         HeadsUpManager.OnHeadsUpChangedListener {
     static final String TAG = "PhoneStatusBar";
-    public static final boolean DEBUG = BaseStatusBar.DEBUG;
+    public static final boolean DEBUG = true;//BaseStatusBar.DEBUG;
     public static final boolean SPEW = false;
     public static final boolean DUMPTRUCK = true; // extra dumpsys info
     public static final boolean DEBUG_GESTURES = false;
@@ -624,7 +624,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,

         // Lastly, call to the icon policy to install/update all the icons.
         mIconPolicy = new PhoneStatusBarPolicy(mContext, mCastController, mHotspotController,
-                mUserInfoController, mBluetoothController);
+                mUserInfoController, mBluetoothController,mLocationController);
         mIconPolicy.setCurrentUserSetup(mUserSetup);




/statusbar/phone/PhoneStatusBarPolicy.java
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java b/framewor
index fa9c4bb..7558d76 100644
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java
@@ -45,6 +45,8 @@ import com.android.systemui.statusbar.policy.BluetoothController.Callback;
 import com.android.systemui.statusbar.policy.CastController;
 import com.android.systemui.statusbar.policy.CastController.CastDevice;
 import com.android.systemui.statusbar.policy.HotspotController;
+import com.android.systemui.statusbar.policy.LocationController;
+import com.android.systemui.statusbar.policy.LocationController.LocationSettingsChangeCallback;
 import com.android.systemui.statusbar.policy.UserInfoController;


-public class PhoneStatusBarPolicy implements Callback {
+public class PhoneStatusBarPolicy implements Callback,LocationSettingsChangeCallback {
     private static final String TAG = "PhoneStatusBarPolicy";


     public PhoneStatusBarPolicy(Context context, CastController cast, HotspotController hotspot,
-            UserInfoController userInfoController, BluetoothController bluetooth) {
+            UserInfoController userInfoController, BluetoothController bluetooth,LocationController locationController) {
         mContext = context;
         mCast = cast;
         mHotspot = hotspot;
         mBluetooth = bluetooth;
         mBluetooth.addStateChangedCallback(this);
+       mLocationController = locationController;
+        mLocationController.addSettingsChangedCallback(this);


     @Override
+    public void onLocationSettingsChanged(boolean locationEnabled){
+       updateLocation();
+    }
+    
+    private LocationController mLocationController;
+    private void updateLocation(){
+       boolean bluetoothEnabled = false;
+       if (mLocationController != null) {
+               bluetoothEnabled = mLocationController.isLocationEnabled();
+       }
+       mService.setIcon("location",R.drawable.stat_sys_location,0,null);
+        mService.setIconVisibility("location",bluetoothEnabled);
+    }
+

这的LocationContorller是SystemUI中就已经定义的了如自己添加的没有控制类,要自己根据实际情况添加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值