From 4699dfddcbe616af65de672fcbbfc407cc65ceff Mon Sep 17 00:00:00 2001 From: Scott Jackson Date: Sun, 2 Mar 2014 07:35:11 -0800 Subject: #287 Make EQ more reliable by keeping one session id --- .../daneren2005/dsub/audiofx/AudioEffectsController.java | 4 ++-- src/github/daneren2005/dsub/service/DownloadService.java | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java b/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java index 16e30c6d..f53a4dff 100644 --- a/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java +++ b/src/github/daneren2005/dsub/audiofx/AudioEffectsController.java @@ -36,9 +36,9 @@ public class AudioEffectsController { private EqualizerController equalizerController; private VisualizerController visualizerController; - public AudioEffectsController(Context context, MediaPlayer mediaPlayer) { + public AudioEffectsController(Context context, int audioSessionId) { this.context = context; - audioSessionId = mediaPlayer.getAudioSessionId(); + this.audioSessionId = audioSessionId; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { available = true; diff --git a/src/github/daneren2005/dsub/service/DownloadService.java b/src/github/daneren2005/dsub/service/DownloadService.java index fcf49ce6..7b4ddf31 100644 --- a/src/github/daneren2005/dsub/service/DownloadService.java +++ b/src/github/daneren2005/dsub/service/DownloadService.java @@ -97,6 +97,7 @@ public class DownloadService extends Service { private Looper mediaPlayerLooper; private MediaPlayer mediaPlayer; private MediaPlayer nextMediaPlayer; + private int audioSessionId; private boolean nextSetup = false; private boolean isPartial = true; private final List downloadList = new ArrayList(); @@ -154,6 +155,7 @@ public class DownloadService extends Service { mediaPlayer = new MediaPlayer(); mediaPlayer.setWakeMode(DownloadService.this, PowerManager.PARTIAL_WAKE_LOCK); + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override @@ -162,17 +164,19 @@ public class DownloadService extends Service { return false; } }); + audioSessionId = mediaPlayer.getAudioSessionId(); + Log.d(TAG, "id: " + audioSessionId); try { Intent i = new Intent(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION); - i.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, mediaPlayer.getAudioSessionId()); + i.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, audioSessionId); i.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName()); sendBroadcast(i); } catch(Throwable e) { // Froyo or lower } - effectsController = new AudioEffectsController(DownloadService.this, mediaPlayer); + effectsController = new AudioEffectsController(DownloadService.this, audioSessionId); if(prefs.getBoolean(Constants.PREFERENCES_EQUALIZER_ON, false)) { getEqualizerController(); } @@ -1222,7 +1226,11 @@ public class DownloadService extends Service { mediaPlayer.setOnCompletionListener(null); mediaPlayer.reset(); setPlayerState(IDLE); - mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + try { + mediaPlayer.setAudioSessionId(audioSessionId); + } catch(Exception e) { + mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + } String dataSource = file.getPath(); if(isPartial) { if (proxy == null) { @@ -1305,7 +1313,7 @@ public class DownloadService extends Service { nextMediaPlayer = new MediaPlayer(); nextMediaPlayer.setWakeMode(DownloadService.this, PowerManager.PARTIAL_WAKE_LOCK); try { - nextMediaPlayer.setAudioSessionId(mediaPlayer.getAudioSessionId()); + nextMediaPlayer.setAudioSessionId(audioSessionId); } catch(Throwable e) { nextMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } -- cgit v1.2.3