remove some unused methods in music service

This commit is contained in:
dkanada 2020-10-17 13:07:15 +09:00
commit b1ffa78a2e
3 changed files with 38 additions and 92 deletions

View file

@ -342,15 +342,6 @@ public class MusicPlayerRemote {
return false; return false;
} }
public static boolean removeFromQueue(@NonNull Song song) {
if (musicService != null) {
musicService.removeSong(song);
return true;
}
return false;
}
public static boolean removeFromQueue(int position) { public static boolean removeFromQueue(int position) {
if (musicService != null && position >= 0 && position < getPlayingQueue().size()) { if (musicService != null && position >= 0 && position < getPlayingQueue().size()) {
musicService.removeSong(position); musicService.removeSong(position);

View file

@ -98,9 +98,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
public static final int PLAY_SONG = 3; public static final int PLAY_SONG = 3;
public static final int PREPARE_NEXT = 4; public static final int PREPARE_NEXT = 4;
public static final int SET_POSITION = 5; public static final int SET_POSITION = 5;
private static final int FOCUS_CHANGE = 6; public static final int FOCUS_CHANGE = 6;
private static final int DUCK = 7; public static final int DUCK = 7;
private static final int UNDUCK = 8; public static final int UNDUCK = 8;
public static final int RESTORE_QUEUES = 9; public static final int RESTORE_QUEUES = 9;
public static final int SHUFFLE_MODE_NONE = 0; public static final int SHUFFLE_MODE_NONE = 0;
@ -110,9 +110,9 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
public static final int REPEAT_MODE_ALL = 1; public static final int REPEAT_MODE_ALL = 1;
public static final int REPEAT_MODE_THIS = 2; public static final int REPEAT_MODE_THIS = 2;
public static final int SAVE_QUEUES = 0; public static final int SAVE_QUEUE = 0;
private final IBinder musicBind = new MusicBinder(); private final IBinder musicBinder = new MusicBinder();
public boolean pendingQuit = false; public boolean pendingQuit = false;
@ -133,7 +133,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
private AudioManager audioManager; private AudioManager audioManager;
private MediaSessionCompat mediaSession; private MediaSessionCompat mediaSession;
private PowerManager.WakeLock wakeLock; private PowerManager.WakeLock wakeLock;
private PlaybackHandler playerHandler;
private final AudioManager.OnAudioFocusChangeListener audioFocusListener = new AudioManager.OnAudioFocusChangeListener() { private final AudioManager.OnAudioFocusChangeListener audioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
@Override @Override
@ -142,13 +141,13 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
}; };
private PlaybackHandler playerHandler;
private Handler uiThreadHandler;
private ThrottledSeekHandler throttledSeekHandler;
private QueueSaveHandler queueSaveHandler; private QueueSaveHandler queueSaveHandler;
private ProgressHandler progressHandler; private ProgressHandler progressHandler;
private HandlerThread musicPlayerHandlerThread; private HandlerThread playerHandlerThread;
private HandlerThread queueSaveHandlerThread; private HandlerThread queueSaveHandlerThread;
private ThrottledSeekHandler throttledSeekHandler;
private boolean becomingNoisyReceiverRegistered;
private IntentFilter becomingNoisyReceiverIntentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
private final BroadcastReceiver becomingNoisyReceiver = new BroadcastReceiver() { private final BroadcastReceiver becomingNoisyReceiver = new BroadcastReceiver() {
@Override @Override
@ -161,8 +160,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
private boolean notHandledMetaChangedForCurrentTrack; private boolean notHandledMetaChangedForCurrentTrack;
private Handler uiThreadHandler;
private static final long MEDIA_SESSION_ACTIONS = PlaybackStateCompat.ACTION_PLAY private static final long MEDIA_SESSION_ACTIONS = PlaybackStateCompat.ACTION_PLAY
| PlaybackStateCompat.ACTION_PAUSE | PlaybackStateCompat.ACTION_PAUSE
| PlaybackStateCompat.ACTION_PLAY_PAUSE | PlaybackStateCompat.ACTION_PLAY_PAUSE
@ -179,31 +176,30 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName()); wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, getClass().getName());
wakeLock.setReferenceCounted(false); wakeLock.setReferenceCounted(false);
musicPlayerHandlerThread = new HandlerThread("PlaybackHandler"); playerHandlerThread = new HandlerThread(PlaybackHandler.class.getName());
musicPlayerHandlerThread.start(); playerHandlerThread.start();
playerHandler = new PlaybackHandler(this, musicPlayerHandlerThread.getLooper()); playerHandler = new PlaybackHandler(this, playerHandlerThread.getLooper());
playback = new MultiPlayer(this); playback = new MultiPlayer(this);
playback.setCallbacks(this); playback.setCallbacks(this);
setupMediaSession(); initMediaSession();
// queue saving needs to run on a separate thread so that it doesn't block the playback handler events // queue saving needs to run on a separate thread so that it doesn't block the playback handler events
queueSaveHandlerThread = new HandlerThread("QueueSaveHandler", Process.THREAD_PRIORITY_BACKGROUND); queueSaveHandlerThread = new HandlerThread(QueueSaveHandler.class.getName(), Process.THREAD_PRIORITY_BACKGROUND);
queueSaveHandlerThread.start(); queueSaveHandlerThread.start();
queueSaveHandler = new QueueSaveHandler(this, queueSaveHandlerThread.getLooper()); queueSaveHandler = new QueueSaveHandler(this, queueSaveHandlerThread.getLooper());
uiThreadHandler = new Handler(); uiThreadHandler = new Handler();
progressHandler = new ProgressHandler(this, Looper.myLooper()); progressHandler = new ProgressHandler(this, Looper.myLooper());
throttledSeekHandler = new ThrottledSeekHandler(playerHandler);
registerReceiver(widgetIntentReceiver, new IntentFilter(APP_WIDGET_UPDATE)); registerReceiver(widgetIntentReceiver, new IntentFilter(APP_WIDGET_UPDATE));
registerReceiver(becomingNoisyReceiver, new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY));
initNotification();
throttledSeekHandler = new ThrottledSeekHandler(playerHandler);
PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this); PreferenceUtil.getInstance(this).registerOnSharedPreferenceChangedListener(this);
initNotification();
restoreState(); restoreState();
mediaSession.setActive(true); mediaSession.setActive(true);
@ -217,7 +213,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
return audioManager; return audioManager;
} }
private void setupMediaSession() { private void initMediaSession() {
ComponentName mediaButtonReceiverComponentName = new ComponentName(getApplicationContext(), MediaButtonIntentReceiver.class); ComponentName mediaButtonReceiverComponentName = new ComponentName(getApplicationContext(), MediaButtonIntentReceiver.class);
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON); Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
@ -330,10 +326,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
@Override @Override
public void onDestroy() { public void onDestroy() {
unregisterReceiver(widgetIntentReceiver); unregisterReceiver(widgetIntentReceiver);
if (becomingNoisyReceiverRegistered) { unregisterReceiver(becomingNoisyReceiver);
unregisterReceiver(becomingNoisyReceiver);
becomingNoisyReceiverRegistered = false;
}
progressHandler.sendEmptyMessage(TRACK_ENDED); progressHandler.sendEmptyMessage(TRACK_ENDED);
mediaSession.setActive(false); mediaSession.setActive(false);
@ -345,7 +338,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
@Override @Override
public IBinder onBind(Intent intent) { public IBinder onBind(Intent intent) {
return musicBind; return musicBinder;
} }
private static final class QueueSaveHandler extends Handler { private static final class QueueSaveHandler extends Handler {
@ -361,14 +354,14 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
public void handleMessage(@NonNull Message msg) { public void handleMessage(@NonNull Message msg) {
final MusicService service = mService.get(); final MusicService service = mService.get();
switch (msg.what) { switch (msg.what) {
case SAVE_QUEUES: case SAVE_QUEUE:
service.saveQueuesImpl(); service.saveQueue();
break; break;
} }
} }
} }
private void saveQueuesImpl() { private void saveQueue() {
QueueStore.getInstance(this).saveQueues(playingQueue, originalPlayingQueue); QueueStore.getInstance(this).saveQueues(playingQueue, originalPlayingQueue);
} }
@ -381,16 +374,13 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
public void saveState() { public void saveState() {
saveQueues(); queueSaveHandler.removeMessages(SAVE_QUEUE);
queueSaveHandler.sendEmptyMessage(SAVE_QUEUE);
savePosition(); savePosition();
saveProgress(); saveProgress();
} }
private void saveQueues() {
queueSaveHandler.removeMessages(SAVE_QUEUES);
queueSaveHandler.sendEmptyMessage(SAVE_QUEUES);
}
private void restoreState() { private void restoreState() {
shuffleMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(PreferenceUtil.SHUFFLE, 0); shuffleMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(PreferenceUtil.SHUFFLE, 0);
repeatMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(PreferenceUtil.REPEAT, 0); repeatMode = PreferenceManager.getDefaultSharedPreferences(this).getInt(PreferenceUtil.REPEAT, 0);
@ -438,7 +428,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
private void releaseResources() { private void releaseResources() {
playerHandler.removeCallbacksAndMessages(null); playerHandler.removeCallbacksAndMessages(null);
musicPlayerHandlerThread.quitSafely(); playerHandlerThread.quitSafely();
queueSaveHandler.removeCallbacksAndMessages(null); queueSaveHandler.removeCallbacksAndMessages(null);
queueSaveHandlerThread.quitSafely(); queueSaveHandlerThread.quitSafely();
@ -499,7 +489,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
private boolean requestFocus() { private boolean requestFocus() {
return (getAudioManager().requestAudioFocus(audioFocusListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED); return getAudioManager().requestAudioFocus(audioFocusListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED;
} }
public void initNotification() { public void initNotification() {
@ -527,7 +517,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
private void updateMediaSessionMetaData() { private void updateMediaSessionMetadata() {
final Song song = getCurrentSong(); final Song song = getCurrentSong();
if (song.id == null) { if (song.id == null) {
@ -571,7 +561,10 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
@Override @Override
public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> glideAnimation) { public void onResourceReady(@NonNull Bitmap resource, Transition<? super Bitmap> glideAnimation) {
metaData.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, copy(resource)); Bitmap.Config config = resource.getConfig();
Bitmap copy = resource.copy(config, false);
metaData.putBitmap(MediaMetadataCompat.METADATA_KEY_ALBUM_ART, copy);
mediaSession.setMetadata(metaData.build()); mediaSession.setMetadata(metaData.build());
} }
@ -588,20 +581,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
} }
private static Bitmap copy(Bitmap bitmap) {
Bitmap.Config config = bitmap.getConfig();
if (config == null) {
config = Bitmap.Config.RGB_565;
}
try {
return bitmap.copy(config, false);
} catch (OutOfMemoryError e) {
e.printStackTrace();
return null;
}
}
public void runOnUiThread(Runnable runnable) { public void runOnUiThread(Runnable runnable) {
uiThreadHandler.post(runnable); uiThreadHandler.post(runnable);
} }
@ -727,28 +706,11 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
originalPlayingQueue.remove(playingQueue.remove(position)); originalPlayingQueue.remove(playingQueue.remove(position));
} }
rePosition(position); reposition(position);
notifyChange(QUEUE_CHANGED); notifyChange(QUEUE_CHANGED);
} }
public void removeSong(@NonNull Song song) { private void reposition(int deletedPosition) {
for (int i = 0; i < playingQueue.size(); i++) {
if (playingQueue.get(i).id.equals(song.id)) {
playingQueue.remove(i);
rePosition(i);
}
}
for (int i = 0; i < originalPlayingQueue.size(); i++) {
if (originalPlayingQueue.get(i).id.equals(song.id)) {
originalPlayingQueue.remove(i);
}
}
notifyChange(QUEUE_CHANGED);
}
private void rePosition(int deletedPosition) {
int currentPosition = getPosition(); int currentPosition = getPosition();
if (deletedPosition < currentPosition) { if (deletedPosition < currentPosition) {
position = currentPosition - 1; position = currentPosition - 1;
@ -822,11 +784,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
playSongAt(getPosition()); playSongAt(getPosition());
} else { } else {
playback.start(); playback.start();
if (!becomingNoisyReceiverRegistered) {
registerReceiver(becomingNoisyReceiver, becomingNoisyReceiverIntentFilter);
becomingNoisyReceiverRegistered = true;
}
if (notHandledMetaChangedForCurrentTrack) { if (notHandledMetaChangedForCurrentTrack) {
handleChangeInternal(META_CHANGED); handleChangeInternal(META_CHANGED);
notHandledMetaChangedForCurrentTrack = false; notHandledMetaChangedForCurrentTrack = false;
@ -991,14 +948,14 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
break; break;
case META_CHANGED: case META_CHANGED:
updateNotification(); updateNotification();
updateMediaSessionMetaData(); updateMediaSessionMetadata();
updateMediaSessionPlaybackState(); updateMediaSessionPlaybackState();
savePosition(); savePosition();
saveProgress(); saveProgress();
break; break;
case QUEUE_CHANGED: case QUEUE_CHANGED:
// because playing queue size might have changed // because playing queue size might have changed
updateMediaSessionMetaData(); updateMediaSessionMetadata();
saveState(); saveState();
if (playingQueue.size() > 0) { if (playingQueue.size() > 0) {
prepareNext(); prepareNext();
@ -1028,7 +985,7 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
switch (key) { switch (key) {
case PreferenceUtil.SHOW_ALBUM_COVER: case PreferenceUtil.SHOW_ALBUM_COVER:
case PreferenceUtil.BLUR_ALBUM_COVER: case PreferenceUtil.BLUR_ALBUM_COVER:
updateMediaSessionMetaData(); updateMediaSessionMetadata();
break; break;
case PreferenceUtil.COLORED_NOTIFICATION: case PreferenceUtil.COLORED_NOTIFICATION:
updateNotification(); updateNotification();
@ -1058,7 +1015,6 @@ public class MusicService extends Service implements SharedPreferences.OnSharedP
} }
private static final class PlaybackHandler extends Handler { private static final class PlaybackHandler extends Handler {
@NonNull
private final WeakReference<MusicService> mService; private final WeakReference<MusicService> mService;
private int currentDuckVolume = 100; private int currentDuckVolume = 100;

View file

@ -24,7 +24,6 @@ import com.dkanada.gramophone.dialogs.ConfirmLogoutDialog;
import com.dkanada.gramophone.R; import com.dkanada.gramophone.R;
import com.dkanada.gramophone.glide.CustomGlideRequest; import com.dkanada.gramophone.glide.CustomGlideRequest;
import com.dkanada.gramophone.helper.MusicPlayerRemote; import com.dkanada.gramophone.helper.MusicPlayerRemote;
import com.dkanada.gramophone.interfaces.MediaCallback;
import com.dkanada.gramophone.model.Song; import com.dkanada.gramophone.model.Song;
import com.dkanada.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity; import com.dkanada.gramophone.ui.activities.base.AbsSlidingMusicPanelActivity;
import com.dkanada.gramophone.ui.fragments.mainactivity.library.LibraryFragment; import com.dkanada.gramophone.ui.fragments.mainactivity.library.LibraryFragment;