systemUI 之 QSFactoryImpl 下拉状态栏快捷开关

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;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值