Skip to content

Commit

Permalink
version upgrade, added media button callbacks, code cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
nuclearfog committed Jun 23, 2024
1 parent 023c4a8 commit bad26a5
Show file tree
Hide file tree
Showing 5 changed files with 98 additions and 40 deletions.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ android {
applicationId 'org.nuclearfog.apollo'
minSdkVersion 16
targetSdkVersion 34
versionCode 43
versionName '1.5.3'
versionCode 44
versionName '1.5.4'
// disable vector optimization
vectorDrawables.generatedDensities = []
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,24 @@

import org.nuclearfog.apollo.service.MusicPlaybackService;

import java.lang.ref.WeakReference;

/**
* this class updates the current play status from {@link MusicPlaybackService} to an activity
*
* @author nuclearfog
*/
public class PlaybackStatus extends BroadcastReceiver {

/**
* callback reference
*/
private WeakReference<PlayStatusListener> mReference;
private PlayStatusListener callback;


/**
* @param callback callback listener to update information
*/
public PlaybackStatus(PlayStatusListener callback) {
mReference = new WeakReference<>(callback);
this.callback = callback;
}

/**
Expand All @@ -32,9 +32,7 @@ public PlaybackStatus(PlayStatusListener callback) {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
PlayStatusListener callback = mReference.get();

if (action != null && callback != null) {
if (action != null) {
switch (action) {
case MusicPlaybackService.CHANGED_META:
callback.onMetaChange();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,33 +6,30 @@

import org.nuclearfog.apollo.service.MusicPlaybackService;

import java.lang.ref.WeakReference;

/**
* Custom broadcast listener for unmounting external storage
*
* @author nuclearfog
*/
public class UnmountBroadcastReceiver extends BroadcastReceiver {

private WeakReference<MusicPlaybackService> mReference;
private MusicPlaybackService service;


public UnmountBroadcastReceiver(MusicPlaybackService service) {
mReference = new WeakReference<>(service);
this.service = service;
}

/**
* {@inheritDoc}
*/
@Override
public void onReceive(Context context, Intent intent) {
MusicPlaybackService mService = mReference.get();
String action = intent.getAction();
if (mService != null && action != null) {
if (Intent.ACTION_MEDIA_EJECT.equals(action)) {
mService.onEject();
} else if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
mService.onMediaMount();
}
if (Intent.ACTION_MEDIA_EJECT.equals(action)) {
service.onEject();
} else if (Intent.ACTION_MEDIA_MOUNTED.equals(action)) {
service.onMediaMount();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@
import org.nuclearfog.apollo.ui.widgets.AppWidgetSmall;
import org.nuclearfog.apollo.ui.widgets.RecentWidgetProvider;

import java.lang.ref.WeakReference;

/**
* widget Broadcast listener
*
* @author nuclearfog
*/
public class WidgetBroadcastReceiver extends BroadcastReceiver {

Expand All @@ -24,34 +24,31 @@ public class WidgetBroadcastReceiver extends BroadcastReceiver {
private AppWidgetBase altWidget = new AppWidgetLargeAlternate();
private AppWidgetBase recentWidget = new RecentWidgetProvider();

private WeakReference<MusicPlaybackService> mReference;
private MusicPlaybackService service;


public WidgetBroadcastReceiver(MusicPlaybackService mService) {
mReference = new WeakReference<>(mService);
public WidgetBroadcastReceiver(MusicPlaybackService service) {
this.service = service;
}

/**
* {@inheritDoc}
*/
@Override
public void onReceive(Context context, Intent intent) {
MusicPlaybackService mService = mReference.get();
if (mService != null) {
String command = intent.getStringExtra(MusicPlaybackService.CMDNAME);
int[] small = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);
String command = intent.getStringExtra(MusicPlaybackService.CMDNAME);
int[] small = intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);

if (AppWidgetSmall.CMDAPPWIDGETUPDATE.equals(command)) {
smallWidget.performUpdate(mService, small);
} else if (AppWidgetLarge.CMDAPPWIDGETUPDATE.equals(command)) {
largeWidget.performUpdate(mService, small);
} else if (AppWidgetLargeAlternate.CMDAPPWIDGETUPDATE.equals(command)) {
altWidget.performUpdate(mService, small);
} else if (RecentWidgetProvider.CMDAPPWIDGETUPDATE.equals(command)) {
recentWidget.performUpdate(mService, small);
} else {
mService.handleCommandIntent(intent);
}
if (AppWidgetSmall.CMDAPPWIDGETUPDATE.equals(command)) {
smallWidget.performUpdate(service, small);
} else if (AppWidgetLarge.CMDAPPWIDGETUPDATE.equals(command)) {
largeWidget.performUpdate(service, small);
} else if (AppWidgetLargeAlternate.CMDAPPWIDGETUPDATE.equals(command)) {
altWidget.performUpdate(service, small);
} else if (RecentWidgetProvider.CMDAPPWIDGETUPDATE.equals(command)) {
recentWidget.performUpdate(service, small);
} else {
service.handleCommandIntent(intent);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package org.nuclearfog.apollo.service;

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.media.session.MediaSessionCompat;
import android.support.v4.media.session.PlaybackStateCompat;
import android.view.KeyEvent;

/**
* callback class used by media buttons to control playback
Expand Down Expand Up @@ -75,4 +78,67 @@ public void onSeekTo(long pos) {
public void onPlayFromUri(Uri uri, Bundle extras) {
service.openFile(uri);
}

/**
* {@inheritDoc}
*/
@Override
public void onSetShuffleMode(int shuffleMode) {
switch (shuffleMode) {
case PlaybackStateCompat.SHUFFLE_MODE_INVALID:
case PlaybackStateCompat.SHUFFLE_MODE_NONE:
service.setShuffleMode(MusicPlaybackService.SHUFFLE_NONE);
break;

case PlaybackStateCompat.SHUFFLE_MODE_ALL:
service.setShuffleMode(MusicPlaybackService.SHUFFLE_AUTO);
break;

case PlaybackStateCompat.SHUFFLE_MODE_GROUP:
service.setShuffleMode(MusicPlaybackService.SHUFFLE_NORMAL);
break;
}
}

/**
* {@inheritDoc}
*/
@Override
public void onSetRepeatMode(int repeatMode) {
switch (repeatMode) {
case PlaybackStateCompat.REPEAT_MODE_NONE:
case PlaybackStateCompat.REPEAT_MODE_INVALID:
service.setRepeatMode(MusicPlaybackService.REPEAT_NONE);
break;

case PlaybackStateCompat.REPEAT_MODE_ONE:
service.setRepeatMode(MusicPlaybackService.REPEAT_CURRENT);
break;

case PlaybackStateCompat.REPEAT_MODE_ALL:
case PlaybackStateCompat.REPEAT_MODE_GROUP:
service.setRepeatMode(MusicPlaybackService.REPEAT_ALL);
break;
}
}

/**
* {@inheritDoc}
*/
@Override
public boolean onMediaButtonEvent(Intent mediaButtonEvent) {
String intentAction = mediaButtonEvent.getAction();
if (Intent.ACTION_MEDIA_BUTTON.equals(intentAction)) {
KeyEvent event = mediaButtonEvent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (event != null && event.getKeyCode() == KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE) {
if (service.isPlaying()) {
service.pause(false);
} else {
service.play();
}
return true;
}
}
return false;
}
}

0 comments on commit bad26a5

Please sign in to comment.