diff --git a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java
index ad38f53f..07725368 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/service/MusicService.java
@@ -55,6 +55,8 @@ import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
+import hugo.weaving.DebugLog;
+
/**
* @author Karim Abou Zeid (kabouzeid), Andrew Neal
*/
@@ -115,6 +117,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
private int nextPosition = -1;
private int shuffleMode;
private int repeatMode;
+ private boolean audioDucking;
private boolean pausedByTransientLossOfFocus;
private boolean receiversAndRemoteControlClientRegistered;
private PlayingNotificationHelper playingNotificationHelper;
@@ -162,6 +165,8 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName());
wakeLock.setReferenceCounted(false);
+ audioDucking = PreferenceUtil.getInstance(this).audioDucking();
+
musicPlayerHandlerThread = new HandlerThread("PlaybackHandler");
musicPlayerHandlerThread.start();
playerHandler = new PlaybackHandler(this, musicPlayerHandlerThread.getLooper());
@@ -987,6 +992,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
switch (key) {
+ case PreferenceUtil.AUDIO_DUCKING:
+ audioDucking = sharedPreferences.getBoolean(key, true);
+ break;
case PreferenceUtil.GAPLESS_PLAYBACK:
if (sharedPreferences.getBoolean(key, false)) {
prepareNext();
@@ -1025,6 +1033,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
mService = new WeakReference<>(service);
}
+ @DebugLog
@Override
public void handleMessage(@NonNull final Message msg) {
final MusicService service = mService.get();
@@ -1034,21 +1043,29 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
switch (msg.what) {
case DUCK:
- currentDuckVolume -= .05f;
- if (currentDuckVolume > .2f) {
- sendEmptyMessageDelayed(DUCK, 10);
+ if (service.audioDucking) {
+ currentDuckVolume -= .05f;
+ if (currentDuckVolume > .2f) {
+ sendEmptyMessageDelayed(DUCK, 10);
+ } else {
+ currentDuckVolume = .2f;
+ }
} else {
- currentDuckVolume = .2f;
+ currentDuckVolume = 1f;
}
service.playback.setVolume(currentDuckVolume);
break;
case UNDUCK:
- currentDuckVolume += .03f;
- if (currentDuckVolume < 1.0f) {
- sendEmptyMessageDelayed(UNDUCK, 10);
+ if (service.audioDucking) {
+ currentDuckVolume += .03f;
+ if (currentDuckVolume < 1f) {
+ sendEmptyMessageDelayed(UNDUCK, 10);
+ } else {
+ currentDuckVolume = 1f;
+ }
} else {
- currentDuckVolume = 1.0f;
+ currentDuckVolume = 1f;
}
service.playback.setVolume(currentDuckVolume);
break;
diff --git a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java
index 28742b40..51ef9a91 100644
--- a/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java
+++ b/app/src/main/java/com/kabouzeid/gramophone/util/PreferenceUtil.java
@@ -43,6 +43,7 @@ public final class PreferenceUtil {
public static final String COLORED_NOTIFICATION = "colored_notification";
+ public static final String AUDIO_DUCKING = "audio_ducking";
public static final String GAPLESS_PLAYBACK = "gapless_playback";
public static final String LAST_ADDED_CUTOFF_TIMESTAMP = "last_added_cutoff_timestamp";
@@ -134,6 +135,10 @@ public final class PreferenceUtil {
return mPreferences.getBoolean(GAPLESS_PLAYBACK, false);
}
+ public final boolean audioDucking() {
+ return mPreferences.getBoolean(AUDIO_DUCKING, true);
+ }
+
public final boolean albumArtOnLockscreen() {
return mPreferences.getBoolean(ALBUM_ART_ON_LOCKSCREEN, true);
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d5b8962f..9239b489 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -129,6 +129,7 @@
Alternative progress slider
Show card below playback controls
Colored playback controls
+ Reduce volume on focus loss
No equalizer found.
"Play a song first, then try again."
Delete
@@ -166,6 +167,7 @@
Can increase the album cover quality but causes slower image loading times. Only enable this if you have problems with low resolution artworks.
Colors play/pause, shuffle and repeat as well as the progress slider in the album cover\u2019s vibrant color.
Colors the navigation bar in the primary color.
+ Notifications, navigation etc.
"Couldn\u2019t download a matching album cover."
Search your library…
Rescanning media…
diff --git a/app/src/main/res/xml/pref_audio.xml b/app/src/main/res/xml/pref_audio.xml
index a3dca416..3887155e 100644
--- a/app/src/main/res/xml/pref_audio.xml
+++ b/app/src/main/res/xml/pref_audio.xml
@@ -3,6 +3,12 @@
+
+