Applied ducking state to prepared media play. Renamed *OnVolume to *OnDucking for consistency. Added is-playing check before initiating ducking. Replaced switch on String to if else for source compatability.
This commit is contained in:
parent
ea9302aa0a
commit
f73bd0fdde
@ -150,8 +150,8 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
<string name="audio">Audio</string>
|
<string name="audio">Audio</string>
|
||||||
<string name="volume_title">Volume</string>
|
<string name="volume_title">Volume</string>
|
||||||
<string name="volume_on_notification_title">Volume During Notification</string>
|
<string name="volume_during_ducking_title">Volume During Notification</string>
|
||||||
<string name="volume_on_notification_summary">Playback volume: </string>
|
<string name="volume_during_ducking_summary">Playback volume: </string>
|
||||||
<string name="media_button_title">Headset/Bluetooth Controls</string>
|
<string name="media_button_title">Headset/Bluetooth Controls</string>
|
||||||
<string name="media_button_summary">This is also required for ICS lockscreen controls.</string>
|
<string name="media_button_summary">This is also required for ICS lockscreen controls.</string>
|
||||||
<string name="media_button_beep_title">Headset Control Beep</string>
|
<string name="media_button_beep_title">Headset Control Beep</string>
|
||||||
|
@ -32,10 +32,10 @@ THE SOFTWARE.
|
|||||||
android:title="@string/replaygain"
|
android:title="@string/replaygain"
|
||||||
android:summary="@string/replaygain_summary" />
|
android:summary="@string/replaygain_summary" />
|
||||||
<ch.blinkenlights.android.vanilla.SeekBarPreference
|
<ch.blinkenlights.android.vanilla.SeekBarPreference
|
||||||
android:key="volume_on_notification"
|
android:key="volume_during_ducking"
|
||||||
android:negativeButtonText="@string/restore_default"
|
android:negativeButtonText="@string/restore_default"
|
||||||
android:dialogLayout="@layout/shake_pref"
|
android:dialogLayout="@layout/shake_pref"
|
||||||
android:title="@string/volume_on_notification_title"
|
android:title="@string/volume_during_ducking_title"
|
||||||
android:defaultValue="50" />
|
android:defaultValue="50" />
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:key="media_button"
|
android:key="media_button"
|
||||||
|
@ -394,7 +394,7 @@ public final class PlaybackService extends Service
|
|||||||
/**
|
/**
|
||||||
* Percentage to set the volume as while a notification is playing (aka ducking)
|
* Percentage to set the volume as while a notification is playing (aka ducking)
|
||||||
*/
|
*/
|
||||||
private int mVolumeOnNotification;
|
private int mVolumeDuringDucking;
|
||||||
/**
|
/**
|
||||||
* TRUE if the readahead feature is enabled
|
* TRUE if the readahead feature is enabled
|
||||||
*/
|
*/
|
||||||
@ -460,7 +460,7 @@ public final class PlaybackService extends Service
|
|||||||
mReplayGainBump = settings.getInt(PrefKeys.REPLAYGAIN_BUMP, 75); /* seek bar is 150 -> 75 == middle == 0 */
|
mReplayGainBump = settings.getInt(PrefKeys.REPLAYGAIN_BUMP, 75); /* seek bar is 150 -> 75 == middle == 0 */
|
||||||
mReplayGainUntaggedDeBump = settings.getInt(PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP, 150); /* seek bar is 150 -> == 0 */
|
mReplayGainUntaggedDeBump = settings.getInt(PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP, 150); /* seek bar is 150 -> == 0 */
|
||||||
|
|
||||||
mVolumeOnNotification = settings.getInt(PrefKeys.VOLUME_ON_NOTIFICATION, 50);
|
mVolumeDuringDucking = settings.getInt(PrefKeys.VOLUME_DURING_DUCKING, 50);
|
||||||
refreshDuckingValues();
|
refreshDuckingValues();
|
||||||
|
|
||||||
mReadaheadEnabled = settings.getBoolean(PrefKeys.ENABLE_READAHEAD, false);
|
mReadaheadEnabled = settings.getBoolean(PrefKeys.ENABLE_READAHEAD, false);
|
||||||
@ -636,7 +636,7 @@ public final class PlaybackService extends Service
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void refreshDuckingValues() {
|
private void refreshDuckingValues() {
|
||||||
float duckingFactor = ((float)mVolumeOnNotification)/100f;
|
float duckingFactor = ((float) mVolumeDuringDucking)/100f;
|
||||||
mMediaPlayer.setDuckingFactor(duckingFactor);
|
mMediaPlayer.setDuckingFactor(duckingFactor);
|
||||||
mPreparedMediaPlayer.setDuckingFactor(duckingFactor);
|
mPreparedMediaPlayer.setDuckingFactor(duckingFactor);
|
||||||
}
|
}
|
||||||
@ -862,8 +862,8 @@ public final class PlaybackService extends Service
|
|||||||
} else if (PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP.equals(key)) {
|
} else if (PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP.equals(key)) {
|
||||||
mReplayGainUntaggedDeBump = settings.getInt(PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP, 150);
|
mReplayGainUntaggedDeBump = settings.getInt(PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP, 150);
|
||||||
refreshReplayGainValues();
|
refreshReplayGainValues();
|
||||||
} else if (PrefKeys.VOLUME_ON_NOTIFICATION.equals(key)) {
|
} else if (PrefKeys.VOLUME_DURING_DUCKING.equals(key)) {
|
||||||
mVolumeOnNotification = settings.getInt(PrefKeys.VOLUME_ON_NOTIFICATION, 50);
|
mVolumeDuringDucking = settings.getInt(PrefKeys.VOLUME_DURING_DUCKING, 50);
|
||||||
refreshDuckingValues();
|
refreshDuckingValues();
|
||||||
} else if (PrefKeys.ENABLE_READAHEAD.equals(key)) {
|
} else if (PrefKeys.ENABLE_READAHEAD.equals(key)) {
|
||||||
mReadaheadEnabled = settings.getBoolean(PrefKeys.ENABLE_READAHEAD, false);
|
mReadaheadEnabled = settings.getBoolean(PrefKeys.ENABLE_READAHEAD, false);
|
||||||
@ -1004,7 +1004,9 @@ public final class PlaybackService extends Service
|
|||||||
mTimeline.setFinishAction(finishAction(state));
|
mTimeline.setFinishAction(finishAction(state));
|
||||||
|
|
||||||
if((toggled & FLAG_DUCKING) != 0) {
|
if((toggled & FLAG_DUCKING) != 0) {
|
||||||
mMediaPlayer.setIsDucking((state & FLAG_DUCKING) != 0);
|
boolean isDucking = (state & FLAG_DUCKING) != 0;
|
||||||
|
mMediaPlayer.setIsDucking(isDucking);
|
||||||
|
mPreparedMediaPlayer.setIsDucking(isDucking);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2037,9 +2039,13 @@ public final class PlaybackService extends Service
|
|||||||
Log.d("VanillaMusic", "audio focus change: " + type);
|
Log.d("VanillaMusic", "audio focus change: " + type);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
|
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
|
||||||
mDuckedLoss = true;
|
synchronized (mStateLock) {
|
||||||
setFlag(FLAG_DUCKING);
|
mDuckedLoss = (mState & FLAG_PLAYING) != 0;
|
||||||
break;
|
if(mDuckedLoss) {
|
||||||
|
setFlag(FLAG_DUCKING);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
case AudioManager.AUDIOFOCUS_LOSS:
|
case AudioManager.AUDIOFOCUS_LOSS:
|
||||||
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
|
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
|
||||||
mDuckedLoss = false;
|
mDuckedLoss = false;
|
||||||
|
@ -66,5 +66,5 @@ public class PrefKeys {
|
|||||||
public static final String ENABLE_READAHEAD = "enable_readahead";
|
public static final String ENABLE_READAHEAD = "enable_readahead";
|
||||||
public static final String USE_DARK_THEME = "use_dark_theme";
|
public static final String USE_DARK_THEME = "use_dark_theme";
|
||||||
public static final String FILESYSTEM_BROWSE_START = "filesystem_browse_start";
|
public static final String FILESYSTEM_BROWSE_START = "filesystem_browse_start";
|
||||||
public static final String VOLUME_ON_NOTIFICATION = "volume_on_notification";
|
public static final String VOLUME_DURING_DUCKING = "volume_during_ducking";
|
||||||
}
|
}
|
||||||
|
@ -88,8 +88,8 @@ public class SeekBarPreference extends DialogPreference implements SeekBar.OnSee
|
|||||||
} else if(PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP.equals(getKey())) {
|
} else if(PrefKeys.REPLAYGAIN_UNTAGGED_DEBUMP.equals(getKey())) {
|
||||||
String summary = (String)mContext.getResources().getText(R.string.replaygain_untagged_debump_summary);
|
String summary = (String)mContext.getResources().getText(R.string.replaygain_untagged_debump_summary);
|
||||||
return String.format("%s %.1fdB", summary, (value-150)/10f);
|
return String.format("%s %.1fdB", summary, (value-150)/10f);
|
||||||
} else if (PrefKeys.VOLUME_ON_NOTIFICATION.equals(getKey())) {
|
} else if (PrefKeys.VOLUME_DURING_DUCKING.equals(getKey())) {
|
||||||
String summary = mContext.getString(R.string.volume_on_notification_summary);
|
String summary = mContext.getString(R.string.volume_during_ducking_summary);
|
||||||
return summary + " " + value + "%";
|
return summary + " " + value + "%";
|
||||||
} else {
|
} else {
|
||||||
return String.format("%d%% (%+.1fdB)", value, 20 * Math.log10(Math.pow(value / 100.0, 3)));
|
return String.format("%d%% (%+.1fdB)", value, 20 * Math.log10(Math.pow(value / 100.0, 3)));
|
||||||
@ -107,15 +107,13 @@ public class SeekBarPreference extends DialogPreference implements SeekBar.OnSee
|
|||||||
SeekBar seekBar = (SeekBar)view.findViewById(R.id.seek_bar);
|
SeekBar seekBar = (SeekBar)view.findViewById(R.id.seek_bar);
|
||||||
|
|
||||||
int maxValue;
|
int maxValue;
|
||||||
switch (getKey()) {
|
String key = getKey();
|
||||||
case PrefKeys.SHAKE_THRESHOLD:
|
if (PrefKeys.SHAKE_THRESHOLD.equals(key)) {
|
||||||
maxValue = 300;
|
maxValue = 300;
|
||||||
break;
|
} else if (PrefKeys.VOLUME_DURING_DUCKING.equals(key)) {
|
||||||
case PrefKeys.VOLUME_ON_NOTIFICATION:
|
maxValue = 100;
|
||||||
maxValue = 100;
|
} else {
|
||||||
break;
|
maxValue = 150;
|
||||||
default:
|
|
||||||
maxValue = 150;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
seekBar.setMax(maxValue);
|
seekBar.setMax(maxValue);
|
||||||
@ -128,7 +126,7 @@ public class SeekBarPreference extends DialogPreference implements SeekBar.OnSee
|
|||||||
@Override
|
@Override
|
||||||
protected void onDialogClosed(boolean positiveResult)
|
protected void onDialogClosed(boolean positiveResult)
|
||||||
{
|
{
|
||||||
if(!positiveResult && PrefKeys.VOLUME_ON_NOTIFICATION.equals(getKey())) {
|
if(!positiveResult && PrefKeys.VOLUME_DURING_DUCKING.equals(getKey())) {
|
||||||
setValue(50);
|
setValue(50);
|
||||||
}
|
}
|
||||||
notifyChanged();
|
notifyChanged();
|
||||||
|
@ -155,5 +155,5 @@ public class VanillaMediaPlayer extends MediaPlayer {
|
|||||||
|
|
||||||
setVolume(volume, volume);
|
setVolume(volume, volume);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user