首页 > 解决方案 > 如何以编程方式修改 Android Pie 9.0 中的 AOSP SystemUI?

问题描述

如何在 Android Pie AOSP 中修改状态栏?我想添加一些自定义图标以及电池、网络信号等现有图标。另外我想知道我必须编辑哪些文件才能以编程方式添加和删除快速设置图块。

  1. 认为默认情况下没有快速设置图块,我如何以编程方式仅添加 wifi、蓝牙和 gps 快速设置图块?
  2. 如何在各自的磁贴中添加 wifi 和蓝牙设置的扩展布局,以便单击磁贴时,我可以显示现有的 wifi 网络和蓝牙设备?
  3. 获取 wifi 网络和蓝牙设备列表的代码在哪里?
  4. 我如何实现回调,以便如果我打开 wifi 并连接到网络,状态栏中的 wifi 图标变得可见?如果我希望状态栏中的自定义图标具有相同的行为,我该如何继续?

标签: android

解决方案


鉴于您的问题,我认为您正在谈论快速设置图块。要制作快速设置图块,您的类必须扩展 TileService: public class HSTileService extends TileService。TileService 有几个必须实现的方法: public void onClick()public void onTileRemoved()public void onTileAdded()public void onStartListening()public void onStopListening()

onStartListening当 tile 进入视图onStopListening时调用,当它离开视图时调用。所有这些方法都必须super.<method_name>作为它们的第一个操作调用。

要获取您操纵以更改磁贴状态的 QSTile 对象,请使用 Tile tile = getQsTile(); 要设置状态,请使用tile.setState(),它采用Tile.STATE_ACTIVETile.STATE_INACTIVETile.STATE_DISABLED作为参数。更改磁贴的状态后,请确保您调用tile.updateTile()或它不会更新。

要获取磁贴状态,请使用tile.getState()

最后,您需要以下导入:

import android.app.ActivityManager;
import android.content.Context;
import android.graphics.drawable.Icon;
import android.os.Build;
import android.service.quicksettings.Tile;
import android.service.quicksettings.TileService;
import android.content.Intent;
import android.util.Log;

如果您需要进一步的帮助,请注意,所有这些以及更多内容都可以在 AOSP 文档以及此处找到:https ://medium.com/androiddevelopers/quick-settings-tiles-e3c22daf93a8


推荐阅读