如何以编程方式在Android Pie 9.0中修改AOSP SystemUI?

时间:2019-07-02 19:29:53

标签: android

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

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

1 个答案:

答案 0 :(得分:1)

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

当图块进入视图时,将调用

onStartListening,而当视图离开时将调用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