Custom QuickSettings Toggles

Code: // CpuInfo tile QuickSettingsTileView cpuInfoTile = (QuickSettingsTileView) inflater.inflate(R.layout.quick_settings_tile, parent, false); cpuInfoTile.setContent(R.layout.quick_settings_tile_cpuinfo, inflater); cpuInfoTile.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startSettingsActivity(Intent.ACTION_POWER_USAGE_SUMMARY); } }); mModel.addCpuInfoTile(cpuInfoTile, new QuickSettingsModel.RefreshCallback() { @Override public void refreshView(QuickSettingsTileView view, State state) { ImageView iv = (ImageView) view.findViewById(R.id.cpuinfo_image); TextView tva = (TextView) view.findViewById(R.id.cpuinfoa_textview); TextView tvb = (TextView) view.findViewById(R.id.cpuinfob_textview); Drawable d = mContext.getResources().getDrawable(R.drawable.ic_settings_performance); String GOV = fileReadOneLine(GOV_FILE); String FREQ = fileReadOneLine(SCALE_CUR_FILE); iv.setImageDrawable(d); tva.setText(GOV); tvb.setText(FREQ); view.setContentDescription( mContext.getString(R.string.accessibility_quick_settings_cpuinfo, GOV)); } }); parent.addView(cpuInfoTile);

Code: private QuickSettingsTileView mCpuInfoTile; private RefreshCallback mCpuInfoCallback; private State mCpuInfoState = new State();

Code: <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2012 The Android Open Source Project Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="vertical"> <ImageView android:id="@+id/cpuinfo_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingBottom="10dp" /> <TextView style="@style/TextAppearance.QuickSettings.TileView" android:id="@+id/cpuinfoa_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#287AA9" android:gravity="center" /> <TextView style="@style/TextAppearance.QuickSettings.TileView" android:id="@+id/cpuinfob_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#287AA9" android:gravity="center" /> </LinearLayout>

Code: <string name="accessibility_quick_settings_cpuinfo">CpuInfo <xliff:g id="meminfo" example="CpuInfo">%s</xliff:g>.</string>

This is just going to be a quick rundown on what do to add new toggles to android new QuickSettings system. This will take place in SystemUI.Path: frameworks/base/packages/SystemUIFiles:There are two options when creating a toggle.- Static tiles with useful information.- This type of tile will get removed without activity, for example, the alarm quick setting is a temp tile.I used SystemTilesThis is needed for the widget inside the toggle to get updated. You can view other definitions in here to update various states.This is where we create the layout of the tile and call it from java.Needed to setContentDescription()I know this is a very general overview, but the actuality is there is so much that can be done with this, it would be hard to go into extreme detail. Would be better to just simply leave that stuff for questions in this thread.If you want to know more, please just ask. Lets make android OURS!