package com.android.systemui.statusbar.toggles; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import com.android.systemui.R; public class SilentToggle extends Toggle { public SilentToggle(Context context) { super(context); setLabel(R.string.toggle_silent); IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); context.registerReceiver(new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { updateState(); } }, filter); updateState(); } @Override protected boolean updateInternalToggleState() { AudioManager am = (AudioManager) mContext .getSystemService(Context.AUDIO_SERVICE); int mode = am.getRingerMode(); mToggle.setChecked(mode == AudioManager.RINGER_MODE_SILENT); if (mToggle.isChecked()) { setIcon(R.drawable.toggle_silence); } else { setIcon(R.drawable.toggle_silence_off); } return mToggle.isChecked(); } @Override protected void onCheckChanged(boolean isChecked) { AudioManager am = (AudioManager) mContext .getSystemService(Context.AUDIO_SERVICE); am.setRingerMode(isChecked ? AudioManager.RINGER_MODE_SILENT : AudioManager.RINGER_MODE_NORMAL); updateState(); } @Override protected boolean onLongPress() { Intent intent = new Intent( android.provider.Settings.ACTION_SOUND_SETTINGS); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(intent); return true; } }