[Android] Duck VLC volume on Android TV

Geoffrey Métais git at videolan.org
Fri Nov 10 11:04:43 CET 2017


vlc-android | branch: master | Geoffrey Métais <geoffrey.metais at gmail.com> | Fri Nov 10 10:52:24 2017 +0100| [86c1e3267291209e1f766b2db006bdd7d921a56c] | committer: Geoffrey Métais

Duck VLC volume on Android TV

Because all audio stream are aliased on STREAM_MUSIC on TV

> https://code.videolan.org/videolan/vlc-android/commit/86c1e3267291209e1f766b2db006bdd7d921a56c
---

 .../src/org/videolan/vlc/PlaybackService.java      | 28 ++++++++++++++++------
 1 file changed, 21 insertions(+), 7 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/PlaybackService.java b/vlc-android/src/org/videolan/vlc/PlaybackService.java
index 5c92893f2..b3d87ff4e 100644
--- a/vlc-android/src/org/videolan/vlc/PlaybackService.java
+++ b/vlc-android/src/org/videolan/vlc/PlaybackService.java
@@ -416,12 +416,22 @@ public class PlaybackService extends MediaBrowserServiceCompat implements IVLCVo
                         Log.i(TAG, "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
                         // Lower the volume
                         if (isPlaying()) {
-                            final int volume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
-                            if (audioDuckLevel == -1)
-                                audioDuckLevel = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)/5;
-                            if (volume > audioDuckLevel) {
-                                mLossTransientVolume = volume;
-                                mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioDuckLevel, 0);
+                            if (AndroidDevices.isAndroidTv) {
+                                final int volume = getVolume();
+                                if (audioDuckLevel == -1)
+                                    audioDuckLevel = 20;
+                                if (volume > audioDuckLevel) {
+                                    mLossTransientVolume = volume;
+                                    mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioDuckLevel, 0);
+                                }
+                            } else {
+                                final int volume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
+                                if (audioDuckLevel == -1)
+                                    audioDuckLevel = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC)/5;
+                                if (volume > audioDuckLevel) {
+                                    mLossTransientVolume = volume;
+                                    mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, audioDuckLevel, 0);
+                                }
                             }
                         }
                         break;
@@ -429,7 +439,11 @@ public class PlaybackService extends MediaBrowserServiceCompat implements IVLCVo
                         Log.i(TAG, "AUDIOFOCUS_GAIN: ");
                         // Resume playback
                         if (mLossTransientVolume != -1) {
-                            mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mLossTransientVolume, 0);
+                            if (AndroidDevices.isAndroidTv) {
+                                setVolume(mLossTransientVolume);
+                            } else {
+                                mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, mLossTransientVolume, 0);
+                            }
                             mLossTransientVolume = -1;
                         }
                         if (mLossTransient) {



More information about the Android mailing list