【问题标题】:How to modify AOSP SystemUI in Android Pie 9.0 programmatically?如何以编程方式修改 Android Pie 9.0 中的 AOSP SystemUI?
【发布时间】:2019-07-02 19:29:53
【问题描述】:

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

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

【问题讨论】:

  • 猜测您需要修改系统 UI 文件中的某些内容,我猜您应该像 以非编程方式那样做同样的事情,但在 以编程方式方式
  • 这不能回答我的问题....!!
  • 我没有将它作为答案发布,如您所见。这是不应该的。

标签: android


【解决方案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

【讨论】:

  • 这帮助我解决了前两个问题。有帮助。谢谢...!!
猜你喜欢
  • 2019-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-04
  • 2015-02-27
相关资源
最近更新 更多