private QSTileImpl createTileInternal(String tileSpec) {
/// M: Add extra tiles in quicksetting @{
Context context = mHost.getContext();
IQuickSettingsPlugin quickSettingsPlugin = OpSystemUICustomizationFactoryBase
.getOpFactory(context).makeQuickSettings(context);
/// @}
// Stock tiles.
switch (tileSpec) {
case "wifi":
return new WifiTile(mHost);
// cxj mask
//case "bt":
// return new BluetoothTile(mHost);
// case "cell"://隐藏SIM卡 下拉按钮
// return new CellularTile(mHost);
// -------------- cxj add -------------------
case "forfan_bt":
return new ForfanBT(mHost);
case "forfan_volume":
return new ForfanVolume(mHost);
case "forfan_volume_add":
return new ForfanVolumeAdd(mHost);
case "forfan_volume_dec":
return new ForfanVolumeDec(mHost);
// case "forfan_volume_mute": //隐藏 静音状态按钮
// return new ForfanVolumeMute(mHost);
case "forfan_volume_effect":
return new ForfanVolumeEffect(mHost);
case "forfan_brightness":
return new ForfanBrightness(mHost);
case "forfan_accelerate":
return new ForfanAccelerate(mHost);
// -------------- cxj end -------------------
// cxj mask
/*
case "dnd":
return new DndTile(mHost);
case "inversion":
return new ColorInversionTile(mHost);
case "airplane":
return new AirplaneModeTile(mHost);
case "work":
return new WorkModeTile(mHost);
case "rotation":
return new RotationLockTile(mHost);
case "flashlight":
return new FlashlightTile(mHost);
case "location":
return new LocationTile(mHost);
case "cast":
return new CastTile(mHost);
case "hotspot":
return new HotspotTile(mHost);
case "user":
return new UserTile(mHost);
case "battery":
return new BatterySaverTile(mHost);
case "saver":
return new DataSaverTile(mHost);
case "night":
return new NightDisplayTile(mHost);
case "nfc":
return new NfcTile(mHost);
*/
}
/// M: Customize the quick settings tiles for operator. @{
if (tileSpec.equals("dataconnection") && !SIMHelper.isWifiOnlyDevice())
return new MobileDataTile(mHost);
else if (tileSpec.equals("simdataconnection") && !SIMHelper.isWifiOnlyDevice() &&
quickSettingsPlugin.customizeAddQSTile(new SimDataConnectionTile(mHost)) != null) {
return (SimDataConnectionTile) quickSettingsPlugin.customizeAddQSTile(
new SimDataConnectionTile(mHost));
} else if (tileSpec.equals("dulsimsettings") && !SIMHelper.isWifiOnlyDevice() &&
quickSettingsPlugin.customizeAddQSTile(new DualSimSettingsTile(mHost)) != null) {
return (DualSimSettingsTile) quickSettingsPlugin.customizeAddQSTile(
new DualSimSettingsTile(mHost));
} else if (tileSpec.equals("apnsettings") && !SIMHelper.isWifiOnlyDevice() &&
quickSettingsPlugin.customizeAddQSTile(new ApnSettingsTile(mHost)) != null) {
return (ApnSettingsTile) quickSettingsPlugin.customizeAddQSTile(
new ApnSettingsTile(mHost));
}
/// @}
// Intent tiles.
if (tileSpec.startsWith(IntentTile.PREFIX)) return IntentTile.create(mHost, tileSpec);
if (tileSpec.startsWith(CustomTile.PREFIX)) return CustomTile.create(mHost, tileSpec);
// Debug tiles.
// cxj mask
/*
if (Build.IS_DEBUGGABLE) {
if (tileSpec.equals(GarbageMonitor.MemoryTile.TILE_SPEC)) {
return new GarbageMonitor.MemoryTile(mHost);
}
}*/
// Broken tiles.
Log.w(TAG, "Bad tile spec: " + tileSpec);
return null;
}
可以根据自己的需要自定义自己需要的下拉状态兰快捷开关
其中的 WifiTile 继承了 QSTileImpl 的类中提供了 主要的点击、长按、更新布局等方法
@Override
protected void handleClick() {
Log.e("jing","点击"+isVolume);
refreshState();//刷新下拉栏状态 (handleUpdateState)
mContext.sendBroadcast(new Intent("执行点击动作的通知"));
// handleUpdateState(mState, new Object());
}
@Override
protected void handleUpdateState(BooleanState state, Object arg) {
state.label = mContext.getString(R.string.forfan_volume_mute);
try {
Log.e("jing","handleUpdateState 状态"+m_CommService.IsMute());
isVolume = m_CommService.IsMute();
if(isVolume){
state.state = Tile.STATE_INACTIVE;//置灰状态
Log.e("jing","handleUpdateState 静音");
} else {
state.state = Tile.STATE_ACTIVE;//高亮状态
Log.e("jing","handleUpdateState 非静音");
}
}catch (RemoteException e){
e.printStackTrace();
}
state.icon = new DrawableIcon(mContext.getDrawable(R.drawable.forfan_volume_mute));
if (state.slash == null) {
state.slash = new SlashState();
state.slash.rotation = 6;
}
state.value = true;
state.expandedAccessibilityClassName = Switch.class.getName();
state.contentDescription = state.label;
}