diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 9aaa2bebd..7399a8e59 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
+
-
-
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/MikesMp3Player.java b/app/src/main/java/com/github/goldy1992/mp3player/MikesMp3Player.java
index 85342c8b0..e6a955554 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/MikesMp3Player.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/MikesMp3Player.java
@@ -2,14 +2,11 @@
import android.app.Application;
+/**
+ * Declared in case need in the future
+ */
public class MikesMp3Player extends Application {
- /**
- * Declared in case need in the future
- */
- @Override
- public void onCreate() {
- super.onCreate();
-// startService(new Intent(this, KillNotificationService.class));
- }
+
+
}
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/client/SeekerBarController2.java b/app/src/main/java/com/github/goldy1992/mp3player/client/SeekerBarController2.java
index c3c0533b7..b604c4589 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/client/SeekerBarController2.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/client/SeekerBarController2.java
@@ -182,7 +182,7 @@ private boolean validPosition(long position) {
}
private float getPositionAsFraction() {
- Log.e(LOG_TAG, "current pos: " + currentPosition + ", seekerbar max" + seekerBar.getMax());
+ //Log.d(LOG_TAG, "current pos: " + currentPosition + ", seekerbar max" + seekerBar.getMax());
return currentPosition / (float) seekerBar.getMax();
}
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/client/activities/FolderActivity.java b/app/src/main/java/com/github/goldy1992/mp3player/client/activities/FolderActivity.java
index c4de15a18..604ccd1fa 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/client/activities/FolderActivity.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/client/activities/FolderActivity.java
@@ -44,7 +44,7 @@ public void onConnected() {
super.onConnected();
MediaItem mediaItem = getIntent().getParcelableExtra(MEDIA_ITEM);
String itemLibraryId = MediaItemUtils.getLibraryId(mediaItem);
- this.viewPageFragment = new SongListFragment(MediaItemType.FOLDER, itemLibraryId, getMediaActivityCompatComponent());
+ this.viewPageFragment = SongListFragment.newInstance(MediaItemType.FOLDER, itemLibraryId, getMediaActivityCompatComponent());
initialiseView(R.layout.activity_folder);
getSupportFragmentManager().beginTransaction().add(R.id.songListFragment, viewPageFragment).commit();
getSupportActionBar().setTitle(MediaItemUtils.getDirectoryName(mediaItem));
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/client/activities/MainActivity.java b/app/src/main/java/com/github/goldy1992/mp3player/client/activities/MainActivity.java
index b039097cf..c0f819226 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/client/activities/MainActivity.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/client/activities/MainActivity.java
@@ -180,9 +180,9 @@ public void onChildrenLoaded(@NonNull String parentId, @NonNull ArrayList mediaBrowserAdapter.connect());
runOnUiThread(r);
}
@@ -193,6 +195,10 @@ public void setMediaBrowserAdapter(MediaBrowserAdapter mediaBrowserAdapter) {
this.mediaBrowserAdapter = mediaBrowserAdapter;
}
+ private void createService() {
+ startService(new Intent(getApplicationContext(), MediaPlaybackServiceInjector.class));
+ }
+
private void initialiseDependencies() {
MediaActivityCompatComponent component = DaggerMediaActivityCompatComponent
.factory()
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragment.java b/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragment.java
index c53d1601d..5c9176d18 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragment.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragment.java
@@ -6,17 +6,16 @@
import com.github.goldy1992.mp3player.commons.MediaItemType;
import com.github.goldy1992.mp3player.dagger.components.MediaActivityCompatComponent;
-import javax.inject.Inject;
-
import static com.github.goldy1992.mp3player.commons.Constants.MEDIA_ITEM;
public class FolderListFragment extends MediaItemListFragment {
- @Inject
- public FolderListFragment(MediaItemType mediaItemType, String id, MediaActivityCompatComponent component) {
- super(mediaItemType, id, component);
+ public static FolderListFragment newInstance(MediaItemType mediaItemType, String id, MediaActivityCompatComponent component) {
+ FolderListFragment folderListFragment = new FolderListFragment();
+ folderListFragment.init(mediaItemType, id, component);
+ return folderListFragment;
}
-
+
@Override
public void itemSelected(MediaBrowserCompat.MediaItem item) {
Intent intent = intentMapper.getIntent(this.parentItemType);
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/MediaItemListFragment.java b/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/MediaItemListFragment.java
index 1e84eebcb..788562fe5 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/MediaItemListFragment.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/MediaItemListFragment.java
@@ -53,7 +53,7 @@ public abstract class MediaItemListFragment extends Fragment implements MyGeneri
private AlbumArtPainter albumArtPainter;
private MyGenericItemTouchListener myGenericItemTouchListener;
- public MediaItemListFragment(MediaItemType mediaItemType, String id, MediaActivityCompatComponent component) {
+ public void init(MediaItemType mediaItemType, String id, MediaActivityCompatComponent component) {
this.parentItemType = mediaItemType;
this.parentItemTypeId = id;
injectDependencies(component);
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragment.java b/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragment.java
index 89ca4b0ae..277ac7e82 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragment.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragment.java
@@ -6,15 +6,13 @@
import com.github.goldy1992.mp3player.commons.MediaItemUtils;
import com.github.goldy1992.mp3player.dagger.components.MediaActivityCompatComponent;
-import javax.inject.Inject;
-
public class SongListFragment extends MediaItemListFragment {
- @Inject
- public SongListFragment(MediaItemType mediaItemType, String id, MediaActivityCompatComponent compatComponent) {
- super(mediaItemType, id, compatComponent);
+ public static SongListFragment newInstance(MediaItemType mediaItemType, String id, MediaActivityCompatComponent component) {
+ SongListFragment songListFragment = new SongListFragment();
+ songListFragment.init(mediaItemType, id, component);
+ return songListFragment;
}
-
@Override
public void itemSelected(MediaBrowserCompat.MediaItem item) {
mediaControllerAdapter.playFromMediaId(MediaItemUtils.getLibraryId(item), null);
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/dagger/components/ServiceComponent.java b/app/src/main/java/com/github/goldy1992/mp3player/dagger/components/ServiceComponent.java
index afe1d6566..d014af112 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/dagger/components/ServiceComponent.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/dagger/components/ServiceComponent.java
@@ -9,6 +9,7 @@
import com.github.goldy1992.mp3player.dagger.modules.service.MediaSessionConnectorModule;
import com.github.goldy1992.mp3player.dagger.modules.service.SearchDatabaseModule;
import com.github.goldy1992.mp3player.service.MediaPlaybackService;
+import com.google.android.exoplayer2.ui.PlayerNotificationManager.NotificationListener;
import javax.inject.Singleton;
@@ -31,7 +32,7 @@ public interface ServiceComponent {
@Component.Factory
interface Factory {
ServiceComponent create(@BindsInstance Context context,
- @BindsInstance MediaPlaybackService mediaPlaybackService,
+ @BindsInstance NotificationListener notificationListener,
@BindsInstance String workerId);
}
}
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/KillNotificationService.java b/app/src/main/java/com/github/goldy1992/mp3player/service/KillNotificationService.java
deleted file mode 100644
index 7e93cd96e..000000000
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/KillNotificationService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.github.goldy1992.mp3player.service;
-
-import android.app.NotificationManager;
-import android.app.Service;
-import android.content.Context;
-import android.content.Intent;
-import android.os.IBinder;
-
-import androidx.annotation.Nullable;
-
-public class KillNotificationService extends Service{
-
- @Override
- public void onTaskRemoved(Intent rootIntent) {
- super.onTaskRemoved(rootIntent);
- String ns = Context.NOTIFICATION_SERVICE;
- NotificationManager nMgr = (NotificationManager) getSystemService(ns);
- nMgr.cancelAll();
- }
-
- @Nullable
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/MediaPlaybackService.java b/app/src/main/java/com/github/goldy1992/mp3player/service/MediaPlaybackService.java
index 6397a8d3d..2d6e9733c 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/MediaPlaybackService.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/service/MediaPlaybackService.java
@@ -1,18 +1,22 @@
package com.github.goldy1992.mp3player.service;
+import android.app.Notification;
import android.content.Intent;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.support.v4.media.MediaBrowserCompat;
import android.support.v4.media.session.MediaSessionCompat;
+import android.util.Log;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
import androidx.media.MediaBrowserServiceCompat;
import com.github.goldy1992.mp3player.service.library.ContentManager;
-import com.github.goldy1992.mp3player.service.player.PlayerNotificationManagerCreator;
+import com.google.android.exoplayer2.ui.PlayerNotificationManager.NotificationListener;
import java.util.List;
@@ -22,13 +26,12 @@
/**
* Created by Mike on 24/09/2017.
*/
-public abstract class MediaPlaybackService extends MediaBrowserServiceCompat {
+public abstract class MediaPlaybackService extends MediaBrowserServiceCompat implements NotificationListener {
private static final String LOG_TAG = "MEDIA_PLAYBACK_SERVICE";
private ContentManager contentManager;
private HandlerThread worker;
private Handler handler;
- private PlayerNotificationManagerCreator playerNotificationManagerCreator;
private MediaSessionConnectorCreator mediaSessionConnectorCreator;
private MediaSessionCompat mediaSession;
private RootAuthenticator rootAuthenticator;
@@ -38,16 +41,23 @@ public abstract class MediaPlaybackService extends MediaBrowserServiceCompat {
@Override
public void onCreate() {
super.onCreate();
- this.playerNotificationManagerCreator.create();
this.mediaSessionConnectorCreator.create();
setSessionToken(mediaSession.getSessionToken());
+ }
+
+ @Override
+ public int onStartCommand (Intent intent,
+ int flags,
+ int startId) {
+ Log.i(LOG_TAG, "breakpoint, on start command called");
+ return START_STICKY;
}
@Override
- public BrowserRoot onGetRoot(String clientPackageName, int clientUid,
- Bundle rootHints) {
+ public BrowserRoot onGetRoot(@NonNull String clientPackageName, int clientUid,
+ @Nullable Bundle rootHints) {
return rootAuthenticator.authenticate(clientPackageName, clientUid, rootHints);
}
@@ -73,6 +83,27 @@ public void onLoadChildren(@NonNull String parentId, @NonNull ResultFor a service, the {@code ongoing} flag can be used as an indicator as to whether it
+ * should be in the foreground.
+ *
+ * @param notificationId The id of the notification which has been posted.
+ * @param notification The {@link Notification}.
+ * @param ongoing Whether the notification is ongoing.
+ */
+ @Override
+ public void onNotificationPosted(
+ int notificationId, Notification notification, boolean ongoing) {
+ // fix to make notifications removable on versions < oreo.
+ if (!ongoing) {
+ stopForeground(false);
+ } else {
+ startForeground(notificationId, notification);
+ }
+ }
+
@Override
public void onSearch(@NonNull String query, Bundle extras,
@NonNull Result> result) {
@@ -84,22 +115,6 @@ public void onSearch(@NonNull String query, Bundle extras,
});
}
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- stopForeground(true);
- mediaSession.release();
- worker.quitSafely();
- }
-
- @Override
- public void onTaskRemoved(Intent rootIntent) {
- super.onTaskRemoved(rootIntent);
- mediaSession.release();
- stopSelf();
- }
-
public MediaSessionCompat getMediaSession() {
return mediaSession;
}
@@ -134,11 +149,6 @@ public void setMediaSessionConnectorCreator(MediaSessionConnectorCreator mediaSe
this.mediaSessionConnectorCreator = mediaSessionConnectorCreator;
}
- @Inject
- public void setPlayerNotificationManagerCreator(PlayerNotificationManagerCreator playerNotificationManagerCreator) {
- this.playerNotificationManagerCreator = playerNotificationManagerCreator;
- }
-
@VisibleForTesting
public HandlerThread getWorker() {
return worker;
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/MyControlDispatcher.java b/app/src/main/java/com/github/goldy1992/mp3player/service/MyControlDispatcher.java
index b787f4a4b..8c4f72efb 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/MyControlDispatcher.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/service/MyControlDispatcher.java
@@ -1,6 +1,7 @@
package com.github.goldy1992.mp3player.service;
import com.github.goldy1992.mp3player.service.player.AudioBecomingNoisyBroadcastReceiver;
+import com.github.goldy1992.mp3player.service.player.MyPlayerNotificationManager;
import com.google.android.exoplayer2.DefaultControlDispatcher;
import com.google.android.exoplayer2.Player;
@@ -10,15 +11,22 @@ public class MyControlDispatcher extends DefaultControlDispatcher {
private final AudioBecomingNoisyBroadcastReceiver audioBecomingNoisyBroadcastReceiver;
+ private final MyPlayerNotificationManager playerNotificationManager;
+
@Inject
- public MyControlDispatcher(AudioBecomingNoisyBroadcastReceiver audioBecomingNoisyBroadcastReceiver) {
+ public MyControlDispatcher(AudioBecomingNoisyBroadcastReceiver audioBecomingNoisyBroadcastReceiver,
+ MyPlayerNotificationManager playerNotificationManager) {
this.audioBecomingNoisyBroadcastReceiver = audioBecomingNoisyBroadcastReceiver;
+ this.playerNotificationManager = playerNotificationManager;
}
@Override
public boolean dispatchSetPlayWhenReady(Player player, boolean playWhenReady) {
if (playWhenReady) {
audioBecomingNoisyBroadcastReceiver.register();
+ if (!this.playerNotificationManager.isActive()) {
+ this.playerNotificationManager.activate();
+ }
} else {
audioBecomingNoisyBroadcastReceiver.unregister();
}
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProvider.java b/app/src/main/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProvider.java
index cde11c2a4..46fcdda1a 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProvider.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProvider.java
@@ -1,21 +1,19 @@
package com.github.goldy1992.mp3player.service.player;
-import android.os.Handler;
import android.support.v4.media.session.PlaybackStateCompat;
import com.github.goldy1992.mp3player.R;
import com.google.android.exoplayer2.Player;
import javax.inject.Inject;
-import javax.inject.Named;
import static com.github.goldy1992.mp3player.commons.Constants.DECREASE_PLAYBACK_SPEED;
public class DecreaseSpeedProvider extends SpeedChangeActionProviderBase {
@Inject
- public DecreaseSpeedProvider(@Named("worker") Handler handler) {
- super(handler);
+ public DecreaseSpeedProvider() {
+ super();
}
@Override
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProvider.java b/app/src/main/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProvider.java
index a36e70520..ba36adef0 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProvider.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProvider.java
@@ -1,21 +1,19 @@
package com.github.goldy1992.mp3player.service.player;
-import android.os.Handler;
import android.support.v4.media.session.PlaybackStateCompat;
import com.github.goldy1992.mp3player.R;
import com.google.android.exoplayer2.Player;
import javax.inject.Inject;
-import javax.inject.Named;
import static com.github.goldy1992.mp3player.commons.Constants.INCREASE_PLAYBACK_SPEED;
public class IncreaseSpeedProvider extends SpeedChangeActionProviderBase {
@Inject
- public IncreaseSpeedProvider(@Named("worker")Handler handler) {
- super(handler);
+ public IncreaseSpeedProvider() {
+ super();
}
@Override
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/player/PlayerNotificationManagerCreator.java b/app/src/main/java/com/github/goldy1992/mp3player/service/player/MyPlayerNotificationManager.java
similarity index 52%
rename from app/src/main/java/com/github/goldy1992/mp3player/service/player/PlayerNotificationManagerCreator.java
rename to app/src/main/java/com/github/goldy1992/mp3player/service/player/MyPlayerNotificationManager.java
index 76c02a870..44f4e8748 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/player/PlayerNotificationManagerCreator.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/service/player/MyPlayerNotificationManager.java
@@ -3,6 +3,7 @@
import android.content.Context;
import android.graphics.Color;
+import androidx.annotation.VisibleForTesting;
import androidx.core.app.NotificationCompat;
import com.github.goldy1992.mp3player.LogTagger;
@@ -10,12 +11,13 @@
import com.github.goldy1992.mp3player.service.MyDescriptionAdapter;
import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.ui.PlayerNotificationManager;
+import com.google.android.exoplayer2.ui.PlayerNotificationManager.NotificationListener;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
-public class PlayerNotificationManagerCreator implements LogTagger {
+public class MyPlayerNotificationManager implements LogTagger {
private static final int NOTIFICATION_ID = 512;
@@ -26,22 +28,32 @@ public class PlayerNotificationManagerCreator implements LogTagger {
private final ExoPlayer exoPlayer;
private final Context context;
private final MyDescriptionAdapter myDescriptionAdapter;
+ private final NotificationListener notificationListener;
+ private boolean isActive = false;
@Inject
- public PlayerNotificationManagerCreator(Context context, MyDescriptionAdapter myDescriptionAdapter, ExoPlayer exoPlayer) {
+ public MyPlayerNotificationManager(Context context, MyDescriptionAdapter myDescriptionAdapter,
+ ExoPlayer exoPlayer,
+ NotificationListener notificationListener) {
this.context = context;
this.myDescriptionAdapter = myDescriptionAdapter;
this.exoPlayer = exoPlayer;
-
-
+ this.notificationListener = notificationListener;
+ create();
}
public PlayerNotificationManager create() {
if (null == playbackNotificationManager) {
- this.playbackNotificationManager = PlayerNotificationManager.createWithNotificationChannel(context,
- CHANNEL_ID, R.string.notification_channel_name, R.string.channel_description, NOTIFICATION_ID, myDescriptionAdapter);
-
- this.playbackNotificationManager.setPlayer(exoPlayer);
+ this.playbackNotificationManager =
+ PlayerNotificationManager.createWithNotificationChannel(
+ context,
+ CHANNEL_ID,
+ R.string.notification_channel_name,
+ R.string.channel_description,
+ NOTIFICATION_ID,
+ myDescriptionAdapter,
+ notificationListener);
+ this.playbackNotificationManager.setPlayer(null);
this.playbackNotificationManager.setColor(Color.BLACK);
this.playbackNotificationManager.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
this.playbackNotificationManager.setPriority(NotificationCompat.PRIORITY_LOW);
@@ -54,8 +66,32 @@ public PlayerNotificationManager create() {
return playbackNotificationManager;
}
+ public void activate() {
+ this.playbackNotificationManager.setPlayer(exoPlayer);
+ this.isActive = true;
+ }
+
+ public void deactivate() {
+ this.playbackNotificationManager.setPlayer(null);
+ this.isActive = false;
+ }
+
+ public boolean isActive() {
+ return isActive;
+ }
+
@Override
public String getLogTag() {
return "MEDIA_PLAYBACK_SERVICE";
}
+
+ @VisibleForTesting
+ public PlayerNotificationManager getPlaybackNotificationManager() {
+ return playbackNotificationManager;
+ }
+
+ @VisibleForTesting
+ public void setPlayerNotificationManager(PlayerNotificationManager playerNotificationManager) {
+ this.playbackNotificationManager = playerNotificationManager;
+ }
}
diff --git a/app/src/main/java/com/github/goldy1992/mp3player/service/player/SpeedChangeActionProviderBase.java b/app/src/main/java/com/github/goldy1992/mp3player/service/player/SpeedChangeActionProviderBase.java
index 41161d7b4..b787a052f 100644
--- a/app/src/main/java/com/github/goldy1992/mp3player/service/player/SpeedChangeActionProviderBase.java
+++ b/app/src/main/java/com/github/goldy1992/mp3player/service/player/SpeedChangeActionProviderBase.java
@@ -1,7 +1,6 @@
package com.github.goldy1992.mp3player.service.player;
import android.os.Bundle;
-import android.os.Handler;
import android.util.Log;
import com.google.android.exoplayer2.ControlDispatcher;
@@ -14,23 +13,13 @@
public abstract class SpeedChangeActionProviderBase implements MediaSessionConnector.CustomActionProvider {
- Handler handler;
-
private static final float MINIMUM_PLAYBACK_SPEED = 0.25f;
private static final float MAXIMUM_PLAYBACK_SPEED = 2f;
private static final float DEFAULT_PLAYBACK_SPEED_CHANGE = 0.05f;
private static final String LOG_TAG = "ACTN_PRVDR";
- public SpeedChangeActionProviderBase(Handler handler) {
- this.handler = handler;
- }
-
@Override
public void onCustomAction(Player player, ControlDispatcher controlDispatcher, String action, Bundle extras) {
- handler.post(() -> { this.performAction(player, action);} );
- }
-
- private void performAction(Player player, String action) {
Log.i(LOG_TAG, "hit speed change");
final float currentSpeed = player.getPlaybackParameters().speed;
float newSpeed = currentSpeed;
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragmentTest.java b/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragmentTest.java
index ba62410f5..85d9fbcf9 100644
--- a/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragmentTest.java
+++ b/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/FolderListFragmentTest.java
@@ -36,7 +36,7 @@ public void setup() {
activityScenario = Robolectric.buildActivity(TestMainActivity.class).setup();
TestMainActivity testMainActivity = activityScenario.get();
MediaActivityCompatComponent component = testMainActivity.getMediaActivityCompatComponent();
- folderListFragment = new FolderListFragment(MediaItemType.FOLDERS, "id", component);
+ folderListFragment = FolderListFragment.newInstance(MediaItemType.FOLDERS, "id", component);
super.setup(folderListFragment, FolderListFragment.class);
}
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragmentTest.java b/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragmentTest.java
index 66f4807ff..2501e939f 100644
--- a/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragmentTest.java
+++ b/app/src/test/java/com/github/goldy1992/mp3player/client/views/fragments/viewpager/SongListFragmentTest.java
@@ -35,7 +35,7 @@ public void setup() {
activityScenario = Robolectric.buildActivity(TestMainActivity.class).setup();
TestMainActivity testMainActivity = activityScenario.get();
MediaActivityCompatComponent component = testMainActivity.getMediaActivityCompatComponent();
- folderListFragment = new SongListFragment(MediaItemType.SONGS, "id", component);
+ folderListFragment = SongListFragment.newInstance(MediaItemType.SONGS, "id", component);
super.setup(folderListFragment, SongListFragment.class);
}
@Test
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/service/MediaPlaybackServiceTest.java b/app/src/test/java/com/github/goldy1992/mp3player/service/MediaPlaybackServiceTest.java
index bc2d9dd34..2a5c78210 100644
--- a/app/src/test/java/com/github/goldy1992/mp3player/service/MediaPlaybackServiceTest.java
+++ b/app/src/test/java/com/github/goldy1992/mp3player/service/MediaPlaybackServiceTest.java
@@ -102,13 +102,4 @@ public void testOnLoadChildrenRejectedMediaId() {
//shadowOf(mediaPlaybackService.getWorker().getLooper()).idle();
verify(result, times(1)).sendResult(any());
}
-
- @Test
- public void testOnDestroy() throws IllegalAccessException {
- MediaSessionCompat mediaSessionSpy = spy(mediaPlaybackService.getMediaSession());
- FieldUtils.writeField(mediaPlaybackService, "mediaSession", mediaSessionSpy, true);
- mediaPlaybackService.onDestroy();
- verify(mediaSessionSpy, times(1)).release();
- }
-
}
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/service/MyControlDispatcherTest.java b/app/src/test/java/com/github/goldy1992/mp3player/service/MyControlDispatcherTest.java
index ffad71207..d6fdef8f4 100644
--- a/app/src/test/java/com/github/goldy1992/mp3player/service/MyControlDispatcherTest.java
+++ b/app/src/test/java/com/github/goldy1992/mp3player/service/MyControlDispatcherTest.java
@@ -1,6 +1,7 @@
package com.github.goldy1992.mp3player.service;
import com.github.goldy1992.mp3player.service.player.AudioBecomingNoisyBroadcastReceiver;
+import com.github.goldy1992.mp3player.service.player.MyPlayerNotificationManager;
import com.google.android.exoplayer2.ExoPlayer;
import org.junit.Before;
@@ -11,8 +12,10 @@
import org.robolectric.RobolectricTestRunner;
import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
@RunWith(RobolectricTestRunner.class)
public class MyControlDispatcherTest {
@@ -22,20 +25,34 @@ public class MyControlDispatcherTest {
@Mock
private AudioBecomingNoisyBroadcastReceiver audioBecomingNoisyBroadcastReceiver;
+ @Mock
+ private MyPlayerNotificationManager playerNotificationManager;
+
@Mock
private ExoPlayer exoPlayer;
@Before
public void setup() {
MockitoAnnotations.initMocks(this);
- this.myControlDispatcher = new MyControlDispatcher(audioBecomingNoisyBroadcastReceiver);
+ this.myControlDispatcher = new MyControlDispatcher(audioBecomingNoisyBroadcastReceiver, playerNotificationManager);
}
@Test
public void testDispatchSetPlayWhenReady() {
+ when(playerNotificationManager.isActive()).thenReturn(true);
+ final boolean result = myControlDispatcher.dispatchSetPlayWhenReady(exoPlayer, true);
+ assertTrue(result);
+ verify(audioBecomingNoisyBroadcastReceiver, times(1)).register();
+ verify(playerNotificationManager, never()).activate();
+ }
+
+ @Test
+ public void testDispatchSetPlayWhenReadyPlaybackManagerNotActive() {
+ when(playerNotificationManager.isActive()).thenReturn(false);
final boolean result = myControlDispatcher.dispatchSetPlayWhenReady(exoPlayer, true);
assertTrue(result);
verify(audioBecomingNoisyBroadcastReceiver, times(1)).register();
+ verify(playerNotificationManager, times(1)).activate();
}
@Test
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProviderTest.java b/app/src/test/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProviderTest.java
index 6849c8a4f..937ee3c8d 100644
--- a/app/src/test/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProviderTest.java
+++ b/app/src/test/java/com/github/goldy1992/mp3player/service/player/DecreaseSpeedProviderTest.java
@@ -30,7 +30,7 @@ public class DecreaseSpeedProviderTest extends SpeedProviderTestBase{
public void setup() {
MockitoAnnotations.initMocks(this);
super.setup();
- this.decreaseSpeedProvider = new DecreaseSpeedProvider(handler);
+ this.decreaseSpeedProvider = new DecreaseSpeedProvider();
}
@Test
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProviderTest.java b/app/src/test/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProviderTest.java
index 4df587464..e41b655e9 100644
--- a/app/src/test/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProviderTest.java
+++ b/app/src/test/java/com/github/goldy1992/mp3player/service/player/IncreaseSpeedProviderTest.java
@@ -32,7 +32,7 @@ public class IncreaseSpeedProviderTest extends SpeedProviderTestBase {
public void setup() {
MockitoAnnotations.initMocks(this);
super.setup();
- this.increaseSpeedProvider = new IncreaseSpeedProvider(handler);
+ this.increaseSpeedProvider = new IncreaseSpeedProvider();
}
@Test
diff --git a/app/src/test/java/com/github/goldy1992/mp3player/service/player/MyPlayerNotificationManagerTest.java b/app/src/test/java/com/github/goldy1992/mp3player/service/player/MyPlayerNotificationManagerTest.java
new file mode 100644
index 000000000..28793480b
--- /dev/null
+++ b/app/src/test/java/com/github/goldy1992/mp3player/service/player/MyPlayerNotificationManagerTest.java
@@ -0,0 +1,66 @@
+package com.github.goldy1992.mp3player.service.player;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.github.goldy1992.mp3player.service.MyDescriptionAdapter;
+import com.google.android.exoplayer2.ExoPlayer;
+import com.google.android.exoplayer2.ui.PlayerNotificationManager;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.jupiter.api.Tag;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+
+import static org.junit.Assert.*;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+@RunWith(RobolectricTestRunner.class)
+public class MyPlayerNotificationManagerTest {
+
+ private MyPlayerNotificationManager myPlayerNotificationManager;
+
+ private Context context;
+ @Mock
+ private MyDescriptionAdapter myDescriptionAdapter;
+
+ @Mock
+ private ExoPlayer exoPlayer;
+
+ @Mock
+ private PlayerNotificationManager playerNotificationManager;
+
+ @Mock
+ private PlayerNotificationManager.NotificationListener notificationListener;
+
+ @Before
+ public void setup() {
+ MockitoAnnotations.initMocks(this);
+ this.context = InstrumentationRegistry.getInstrumentation().getContext();
+ this.myPlayerNotificationManager = new MyPlayerNotificationManager(this.context, this.myDescriptionAdapter, this.exoPlayer, this.notificationListener);
+ assertNotNull(myPlayerNotificationManager.getPlaybackNotificationManager());
+ assertFalse(myPlayerNotificationManager.isActive());
+ }
+
+ @Test
+ public void testActivate() {
+ myPlayerNotificationManager.setPlayerNotificationManager(playerNotificationManager);
+ myPlayerNotificationManager.activate();
+ assertTrue(myPlayerNotificationManager.isActive());
+ verify(playerNotificationManager, times(1)).setPlayer(exoPlayer);
+ }
+
+ @Test
+ public void testDeactivate() {
+ myPlayerNotificationManager.setPlayerNotificationManager(playerNotificationManager);
+ myPlayerNotificationManager.deactivate();
+ assertFalse(myPlayerNotificationManager.isActive());
+ verify(playerNotificationManager, times(1)).setPlayer(null);
+ }
+}
\ No newline at end of file