1、新建TestTile类并继承QSTileImpl<BooleanState>,主要作用就是该快速设置按钮的实现类,该类需要实现具体功能。该类具体怎么写可以参考tiles同级目录下其它tile的写法。
文件路径:LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tiles/TestTile.java
2、在QSFactoryImpl中配置TestTile。
文件路径:LINUX/android/frameworks/base/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
(1)导入TestTile包:
import com.android.systemui.qs.tiles.TestTile;
(2)声明Provider泛型对象
private final Provider<TestTile> mTestTileProvider;
(3)QSFactoryImpl的构造方法中添加testTileProvider参数,并初始化mTestTileProvider对象
@Inject
public QSFactoryImpl(Provider<WifiTile> wifiTileProvider,
Provider<BluetoothTile> bluetoothTileProvider,
...
Provider<TestTile> testTileProvider)
mWifiTileProvider = wifiTileProvider;
mBluetoothTileProvider = bluetoothTileProvider;
...
mTestTileProvider = testTileProvider;
(4)在createTileInternal方法中返回TestTile对象
private QSTileImpl createTileInternal(String tileSpec) {
// Stock tiles.
switch (tileSpec) {
case "wifi":
return mWifiTileProvider.get();
case "bt":
return mBluetoothTileProvider.get();
...
case "testtile"://testtile需要在congfig文件中配置声明,后面再说明
return mTestTileProvider.get();
}
3、在config配置文件中quick_settings_tiles_default和quick_settings_tiles_stock字段里添加testtile,配置快速设置中默认显示显示TestTile。
文件路径:LINUX/android/frameworks/base/packages/SystemUI/res/values/config.xml
<!-- The default tiles to display in QuickSettings -->
<string name="quick_settings_tiles_default" translatable="false">
wifi,bt,...,testtile
</string>
<!-- Tiles native to System UI. Order should match "quick_settings_tiles_default" -->
<string name="quick_settings_tiles_stock" translatable="false">
wifi,...,testtile
</string>
自此,添加快速设置功能基本完成。