Android12修改蓝牙打开后状态栏显示蓝牙图标

Android12系统以后,打开蓝牙的时候,状态栏上面是没有蓝牙图标显示的,只有当蓝牙连接到了设备,状态栏才会显示蓝牙已连接的图标。
如果要让状态在蓝牙打开后也有图标,我们需要修改一下frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java中的private final void updateBluetooth()函数,具体修改如下:

    private final void updateBluetooth() {
   
        int iconId = R.drawable.stat_sys_data_bluetooth_connected;
        String contentDescription =
                mResources.getString(R.string.accessibility_quick_settings_bluetooth_on);
        boolean bluetoothVisible = false;
        if (mBluetooth != null) {
   
			//=========add for dispplay bluetooth on icon start=========
			if(mBluetooth.isBluetoothEnabled()) {
   
				contentDescription = mResources.getString(R.string.accessibility_quick_settings_bluetooth_on);
				bluetoothVisible = mBluetooth.isBluetoothEnabled();
				iconId = R.drawable.qs_bluetooth_icon_on;
			}
			//=========add for dispplay bluetooth on icon end=========
            if (mBluetooth.isBluetoothConnected()
                    && (mBluetooth.isBluetoothAudioActive()
                    || !mBluetooth.isBluetoothAudioProfileOnly())) {
   
				//=========add for dispplay bluetooth on icon start=========
				iconId = R.drawable.stat_sys_data_bluetooth_connected;
				//=========add for dispplay bluetooth on icon end=========
                contentDescription = mResources.getString(
                        R.string.accessibility_bluetooth_connected);
                bluetoothVisible = mBluetooth.isBluetoothEnabled();
            }
        }

        mIconController.setIcon(mSlotBluetooth, iconId, contentDescription);
        mIconController.setIconVisibility(mSlotBluetooth, bluetoothVisible);
    }

上面代码中当mBluetooth.isBluetoothEnabled()为true的时候,获取蓝牙图标的资源赋值给iconId进行显示。当蓝牙为连接状态的时候需要再将iconId赋值为已连接的图标资源。

Android12的SystemUI代码中没有蓝牙打开图标的文件资源,需要添加一个frameworks/base/packages/SystemUI/res-keyguard/drawable/qs_bluetooth_icon_on.xml。文件内容如下:

<?xml version="1.0" encoding="utf-8"?><!--
  ~ Copyright (C) 2020 The Android Open Source Project
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS,
  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  ~ See the License for the specific language governing permissions and
  ~ limitations under the License.
  -->

<animated-vector xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:aapt="http://schemas.android.com/aapt">
    <target 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值