package me.barrasso.android.volume.media;
import android.media.AudioManager;
import me.barrasso.android.volume.R;
import me.barrasso.android.volume.popup.VolumePanel;
public enum StreamResources {
BluetoothSCOStream(VolumePanel.STREAM_BLUETOOTH_SCO,
R.string.volume_icon_description_bluetooth,
R.drawable.ic_audio_bt,
R.drawable.ic_audio_bt,
false),
RingerStream(AudioManager.STREAM_RING,
R.string.volume_icon_description_ringer,
R.drawable.ic_audio_ring_notif,
R.drawable.ic_audio_phone_mute,
true),
VoiceStream(AudioManager.STREAM_VOICE_CALL,
R.string.volume_icon_description_incall,
R.drawable.ic_audio_phone,
R.drawable.ic_audio_phone,
false),
AlarmStream(AudioManager.STREAM_ALARM,
R.string.volume_alarm,
R.drawable.ic_audio_alarm,
R.drawable.ic_audio_alarm_mute,
true),
MediaStream(AudioManager.STREAM_MUSIC,
R.string.volume_icon_description_media,
R.drawable.ic_audio_vol,
R.drawable.ic_audio_vol_mute,
true),
NotificationStream(AudioManager.STREAM_NOTIFICATION,
R.string.volume_icon_description_notification,
R.drawable.ic_audio_notification,
R.drawable.ic_audio_notification_mute,
true),
// for now, use media resources for master volume
MasterStream(VolumePanel.STREAM_MASTER,
R.string.volume_icon_description_master,
R.drawable.ic_audio_vol,
R.drawable.ic_audio_vol_mute,
false),
RemoteStream(VolumePanel.STREAM_REMOTE_MUSIC,
R.string.volume_icon_description_remote_media,
R.drawable.ic_media_route_on_holo_dark,
R.drawable.ic_media_route_disabled_holo_dark,
false),
SystemStream(AudioManager.STREAM_SYSTEM,
R.string.volume_icon_description_system,
R.drawable.ic_audio_vol,
R.drawable.ic_audio_vol_mute,
false);// will be dynamically updated
int streamType;
int descRes;
int iconRes;
int iconMuteRes;
// RING, VOICE_CALL & BLUETOOTH_SCO are hidden unless explicitly requested
boolean show;
int volume;
StreamResources(int streamType, int descRes, int iconRes, int iconMuteRes, boolean show) {
this.streamType = streamType;
this.descRes = descRes;
this.iconRes = iconRes;
this.iconMuteRes = iconMuteRes;
this.show = show;
}
public int getDescRes() { return descRes; }
public int getIconMuteRes() { return iconMuteRes; }
public int getIconRes() { return iconRes; }
public int getStreamType() { return streamType; }
public int getVolume() { return volume; }
public boolean show() { return show; }
public void setVolume(final int vol) { volume = vol; }
public void setIconRes(int res) { iconRes = res; }
public void setIconMuteRes(int res) { iconMuteRes = res; }
public void setDescRes(int res) { descRes = res; }
public void show(boolean shows) { show = shows; }
// List of stream types and their order
public static final StreamResources[] STREAMS = {
StreamResources.BluetoothSCOStream,
StreamResources.RingerStream,
StreamResources.VoiceStream,
StreamResources.MediaStream,
StreamResources.NotificationStream,
StreamResources.AlarmStream,
StreamResources.MasterStream,
StreamResources.RemoteStream,
StreamResources.SystemStream
};
/** @return A {@link me.barrasso.android.volume.media.StreamResources} for a given stream type. */
public static StreamResources resourceForStreamType(int streamType) {
for (StreamResources resource : STREAMS)
if (resource.getStreamType() == streamType)
return resource;
return StreamResources.MediaStream;
}
}