package com.james.status.data.icon; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.media.AudioManager; import android.os.Build; import com.james.status.R; import com.james.status.data.IconStyleData; import com.james.status.receivers.IconUpdateReceiver; import java.util.Arrays; import java.util.List; public class HeadphoneIconData extends IconData<HeadphoneIconData.HeadphoneReceiver> { public HeadphoneIconData(Context context) { super(context); } @Override public HeadphoneReceiver getReceiver() { return new HeadphoneReceiver(this); } @Override public IntentFilter getIntentFilter() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) return new IntentFilter(AudioManager.ACTION_HEADSET_PLUG); else return new IntentFilter(Intent.ACTION_HEADSET_PLUG); } @Override public String getTitle() { return getContext().getString(R.string.icon_headphone); } @Override public int getIconStyleSize() { return 2; } @Override public List<IconStyleData> getIconStyles() { List<IconStyleData> styles = super.getIconStyles(); styles.addAll( Arrays.asList( new IconStyleData( getContext().getString(R.string.icon_style_default), IconStyleData.TYPE_VECTOR, R.drawable.ic_headset, R.drawable.ic_headset_mic ), new IconStyleData( getContext().getString(R.string.icon_style_system), IconStyleData.TYPE_IMAGE, android.R.drawable.stat_sys_headset, android.R.drawable.stat_sys_headset ) ) ); return styles; } static class HeadphoneReceiver extends IconUpdateReceiver<HeadphoneIconData> { private HeadphoneReceiver(HeadphoneIconData iconData) { super(iconData); } @Override public void onReceive(HeadphoneIconData icon, Intent intent) { if (intent.getIntExtra("state", 0) == 1) icon.onDrawableUpdate(intent.getIntExtra("microphone", 0)); else icon.onDrawableUpdate(-1); } } }