Use normal pause/skip keycodes, not custom intent
This commit is contained in:
parent
fe2195f051
commit
17f2ebd7f2
|
@ -3,6 +3,7 @@ package de.test.antennapod.playback;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import androidx.preference.PreferenceManager;
|
import androidx.preference.PreferenceManager;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
|
@ -10,6 +11,7 @@ import androidx.test.filters.LargeTest;
|
||||||
import androidx.test.platform.app.InstrumentationRegistry;
|
import androidx.test.platform.app.InstrumentationRegistry;
|
||||||
import androidx.test.rule.ActivityTestRule;
|
import androidx.test.rule.ActivityTestRule;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||||
import de.danoeh.antennapod.model.feed.FeedItemFilter;
|
import de.danoeh.antennapod.model.feed.FeedItemFilter;
|
||||||
import de.danoeh.antennapod.playback.base.PlayerStatus;
|
import de.danoeh.antennapod.playback.base.PlayerStatus;
|
||||||
import org.awaitility.Awaitility;
|
import org.awaitility.Awaitility;
|
||||||
|
@ -32,10 +34,8 @@ import de.danoeh.antennapod.model.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.model.feed.FeedMedia;
|
import de.danoeh.antennapod.model.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
|
||||||
import de.danoeh.antennapod.core.storage.DBReader;
|
import de.danoeh.antennapod.core.storage.DBReader;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
|
||||||
import de.danoeh.antennapod.core.util.LongList;
|
import de.danoeh.antennapod.core.util.LongList;
|
||||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||||
import de.test.antennapod.EspressoTestUtils;
|
import de.test.antennapod.EspressoTestUtils;
|
||||||
|
@ -241,11 +241,11 @@ public class PlaybackTest {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void skipEpisode() {
|
private void skipEpisode() {
|
||||||
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SKIP_CURRENT_EPISODE);
|
context.sendBroadcast(MediaButtonReceiver.createIntent(context, KeyEvent.KEYCODE_MEDIA_NEXT));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void pauseEpisode() {
|
protected void pauseEpisode() {
|
||||||
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE);
|
context.sendBroadcast(MediaButtonReceiver.createIntent(context, KeyEvent.KEYCODE_MEDIA_PAUSE));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void startLocalPlayback() {
|
protected void startLocalPlayback() {
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
package de.danoeh.antennapod.activity;
|
package de.danoeh.antennapod.activity;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
@ -23,7 +22,6 @@ import androidx.core.view.ViewCompat;
|
||||||
import androidx.core.view.WindowCompat;
|
import androidx.core.view.WindowCompat;
|
||||||
import androidx.core.view.WindowInsetsCompat;
|
import androidx.core.view.WindowInsetsCompat;
|
||||||
import com.google.android.material.appbar.MaterialToolbar;
|
import com.google.android.material.appbar.MaterialToolbar;
|
||||||
import androidx.core.content.ContextCompat;
|
|
||||||
import androidx.drawerlayout.widget.DrawerLayout;
|
import androidx.drawerlayout.widget.DrawerLayout;
|
||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
import androidx.fragment.app.FragmentContainerView;
|
import androidx.fragment.app.FragmentContainerView;
|
||||||
|
@ -44,7 +42,6 @@ import org.greenrobot.eventbus.ThreadMode;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
|
||||||
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
|
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
|
||||||
import de.danoeh.antennapod.dialog.RatingDialog;
|
import de.danoeh.antennapod.dialog.RatingDialog;
|
||||||
import de.danoeh.antennapod.event.MessageEvent;
|
import de.danoeh.antennapod.event.MessageEvent;
|
||||||
|
@ -448,7 +445,6 @@ public class MainActivity extends CastEnabledActivity {
|
||||||
EventBus.getDefault().unregister(this);
|
EventBus.getDefault().unregister(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH)
|
|
||||||
@Override
|
@Override
|
||||||
public void onTrimMemory(int level) {
|
public void onTrimMemory(int level) {
|
||||||
super.onTrimMemory(level);
|
super.onTrimMemory(level);
|
||||||
|
@ -662,9 +658,7 @@ public class MainActivity extends CastEnabledActivity {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (customKeyCode != null) {
|
if (customKeyCode != null) {
|
||||||
Intent intent = new Intent(this, PlaybackService.class);
|
sendBroadcast(MediaButtonReceiver.createIntent(this, customKeyCode));
|
||||||
intent.putExtra(MediaButtonReceiver.EXTRA_KEYCODE, customKeyCode);
|
|
||||||
ContextCompat.startForegroundService(this, intent);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return super.onKeyUp(keyCode, event);
|
return super.onKeyUp(keyCode, event);
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
package de.danoeh.antennapod.adapter.actionbutton;
|
package de.danoeh.antennapod.adapter.actionbutton;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import androidx.annotation.DrawableRes;
|
import androidx.annotation.DrawableRes;
|
||||||
import androidx.annotation.StringRes;
|
import androidx.annotation.StringRes;
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
|
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||||
import de.danoeh.antennapod.model.feed.FeedItem;
|
import de.danoeh.antennapod.model.feed.FeedItem;
|
||||||
import de.danoeh.antennapod.model.feed.FeedMedia;
|
import de.danoeh.antennapod.model.feed.FeedMedia;
|
||||||
import de.danoeh.antennapod.core.util.FeedItemUtil;
|
import de.danoeh.antennapod.core.util.FeedItemUtil;
|
||||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
|
||||||
|
|
||||||
import static de.danoeh.antennapod.core.service.playback.PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE;
|
|
||||||
|
|
||||||
public class PauseActionButton extends ItemActionButton {
|
public class PauseActionButton extends ItemActionButton {
|
||||||
|
|
||||||
|
@ -37,7 +36,7 @@ public class PauseActionButton extends ItemActionButton {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FeedItemUtil.isCurrentlyPlaying(media)) {
|
if (FeedItemUtil.isCurrentlyPlaying(media)) {
|
||||||
IntentUtils.sendLocalBroadcast(context, ACTION_PAUSE_PLAY_CURRENT_EPISODE);
|
context.sendBroadcast(MediaButtonReceiver.createIntent(context, KeyEvent.KEYCODE_MEDIA_PAUSE));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package de.danoeh.antennapod.fragment;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -26,6 +27,7 @@ import com.google.android.material.bottomsheet.BottomSheetBehavior;
|
||||||
import com.google.android.material.elevation.SurfaceColors;
|
import com.google.android.material.elevation.SurfaceColors;
|
||||||
import com.google.android.material.snackbar.Snackbar;
|
import com.google.android.material.snackbar.Snackbar;
|
||||||
|
|
||||||
|
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||||
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
import de.danoeh.antennapod.core.util.playback.PlaybackController;
|
||||||
import de.danoeh.antennapod.event.playback.BufferUpdateEvent;
|
import de.danoeh.antennapod.event.playback.BufferUpdateEvent;
|
||||||
|
@ -54,7 +56,6 @@ import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
import de.danoeh.antennapod.core.util.ChapterUtils;
|
import de.danoeh.antennapod.core.util.ChapterUtils;
|
||||||
import de.danoeh.antennapod.core.util.Converter;
|
import de.danoeh.antennapod.core.util.Converter;
|
||||||
import de.danoeh.antennapod.core.util.IntentUtils;
|
|
||||||
import de.danoeh.antennapod.core.util.TimeSpeedConverter;
|
import de.danoeh.antennapod.core.util.TimeSpeedConverter;
|
||||||
import de.danoeh.antennapod.model.playback.Playable;
|
import de.danoeh.antennapod.model.playback.Playable;
|
||||||
import de.danoeh.antennapod.dialog.PlaybackControlsDialog;
|
import de.danoeh.antennapod.dialog.PlaybackControlsDialog;
|
||||||
|
@ -215,8 +216,8 @@ public class AudioPlayerFragment extends Fragment implements
|
||||||
SkipPreferenceDialog.SkipDirection.SKIP_FORWARD, txtvFF);
|
SkipPreferenceDialog.SkipDirection.SKIP_FORWARD, txtvFF);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
butSkip.setOnClickListener(v ->
|
butSkip.setOnClickListener(v -> getActivity().sendBroadcast(
|
||||||
IntentUtils.sendLocalBroadcast(getActivity(), PlaybackService.ACTION_SKIP_CURRENT_EPISODE));
|
MediaButtonReceiver.createIntent(getContext(), KeyEvent.KEYCODE_MEDIA_NEXT)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
|
|
|
@ -3,6 +3,7 @@ package de.danoeh.antennapod.menuhandler;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
|
||||||
|
@ -15,6 +16,7 @@ import de.danoeh.antennapod.R;
|
||||||
import de.danoeh.antennapod.activity.MainActivity;
|
import de.danoeh.antennapod.activity.MainActivity;
|
||||||
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
|
||||||
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
import de.danoeh.antennapod.core.preferences.UserPreferences;
|
||||||
|
import de.danoeh.antennapod.core.receiver.MediaButtonReceiver;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||||
import de.danoeh.antennapod.core.storage.DBWriter;
|
import de.danoeh.antennapod.core.storage.DBWriter;
|
||||||
import de.danoeh.antennapod.core.sync.SynchronizationSettings;
|
import de.danoeh.antennapod.core.sync.SynchronizationSettings;
|
||||||
|
@ -143,7 +145,7 @@ public class FeedItemMenuHandler {
|
||||||
|
|
||||||
@NonNull Context context = fragment.requireContext();
|
@NonNull Context context = fragment.requireContext();
|
||||||
if (menuItemId == R.id.skip_episode_item) {
|
if (menuItemId == R.id.skip_episode_item) {
|
||||||
IntentUtils.sendLocalBroadcast(context, PlaybackService.ACTION_SKIP_CURRENT_EPISODE);
|
context.sendBroadcast(MediaButtonReceiver.createIntent(context, KeyEvent.KEYCODE_MEDIA_NEXT));
|
||||||
} else if (menuItemId == R.id.remove_item) {
|
} else if (menuItemId == R.id.remove_item) {
|
||||||
DBWriter.deleteFeedMediaOfItem(context, selectedItem.getMedia().getId());
|
DBWriter.deleteFeedMediaOfItem(context, selectedItem.getMedia().getId());
|
||||||
} else if (menuItemId == R.id.remove_inbox_item) {
|
} else if (menuItemId == R.id.remove_inbox_item) {
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
package de.danoeh.antennapod.core.receiver;
|
package de.danoeh.antennapod.core.receiver;
|
||||||
|
|
||||||
|
import android.app.PendingIntent;
|
||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.os.Build;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
@ -10,36 +12,44 @@ import android.view.KeyEvent;
|
||||||
import de.danoeh.antennapod.core.ClientConfig;
|
import de.danoeh.antennapod.core.ClientConfig;
|
||||||
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
import de.danoeh.antennapod.core.service.playback.PlaybackService;
|
||||||
|
|
||||||
/** Receives media button events. */
|
/**
|
||||||
|
* Receives media button events.
|
||||||
|
*/
|
||||||
public class MediaButtonReceiver extends BroadcastReceiver {
|
public class MediaButtonReceiver extends BroadcastReceiver {
|
||||||
private static final String TAG = "MediaButtonReceiver";
|
private static final String TAG = "MediaButtonReceiver";
|
||||||
public static final String EXTRA_KEYCODE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.KEYCODE";
|
public static final String EXTRA_KEYCODE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.KEYCODE";
|
||||||
public static final String EXTRA_SOURCE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.SOURCE";
|
public static final String EXTRA_SOURCE = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.SOURCE";
|
||||||
public static final String EXTRA_HARDWAREBUTTON = "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.HARDWAREBUTTON";
|
public static final String EXTRA_HARDWAREBUTTON
|
||||||
|
= "de.danoeh.antennapod.core.service.extra.MediaButtonReceiver.HARDWAREBUTTON";
|
||||||
|
public static final String NOTIFY_BUTTON_RECEIVER = "de.danoeh.antennapod.NOTIFY_BUTTON_RECEIVER";
|
||||||
|
|
||||||
public static final String NOTIFY_BUTTON_RECEIVER = "de.danoeh.antennapod.NOTIFY_BUTTON_RECEIVER";
|
@Override
|
||||||
|
public void onReceive(Context context, Intent intent) {
|
||||||
|
Log.d(TAG, "Received intent");
|
||||||
|
if (intent == null || intent.getExtras() == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
KeyEvent event = (KeyEvent) intent.getExtras().get(Intent.EXTRA_KEY_EVENT);
|
||||||
|
if (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
|
||||||
|
ClientConfig.initialize(context);
|
||||||
|
Intent serviceIntent = new Intent(context, PlaybackService.class);
|
||||||
|
serviceIntent.putExtra(EXTRA_KEYCODE, event.getKeyCode());
|
||||||
|
serviceIntent.putExtra(EXTRA_SOURCE, event.getSource());
|
||||||
|
serviceIntent.putExtra(EXTRA_HARDWAREBUTTON, event.getEventTime() > 0 || event.getDownTime() > 0);
|
||||||
|
ContextCompat.startForegroundService(context, serviceIntent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
public static Intent createIntent(Context context, int eventCode) {
|
||||||
public void onReceive(Context context, Intent intent) {
|
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, eventCode);
|
||||||
Log.d(TAG, "Received intent");
|
Intent startingIntent = new Intent(context, MediaButtonReceiver.class);
|
||||||
if (intent == null || intent.getExtras() == null) {
|
startingIntent.setAction(MediaButtonReceiver.NOTIFY_BUTTON_RECEIVER);
|
||||||
return;
|
startingIntent.putExtra(Intent.EXTRA_KEY_EVENT, event);
|
||||||
}
|
return startingIntent;
|
||||||
KeyEvent event = (KeyEvent) intent.getExtras().get(Intent.EXTRA_KEY_EVENT);
|
}
|
||||||
if (event != null && event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount()==0) {
|
|
||||||
ClientConfig.initialize(context);
|
|
||||||
Intent serviceIntent = new Intent(context, PlaybackService.class);
|
|
||||||
serviceIntent.putExtra(EXTRA_KEYCODE, event.getKeyCode());
|
|
||||||
serviceIntent.putExtra(EXTRA_SOURCE, event.getSource());
|
|
||||||
//detect if this is a hardware button press
|
|
||||||
if (event.getEventTime() > 0 || event.getDownTime() > 0) {
|
|
||||||
serviceIntent.putExtra(EXTRA_HARDWAREBUTTON, true);
|
|
||||||
} else {
|
|
||||||
serviceIntent.putExtra(EXTRA_HARDWAREBUTTON, false);
|
|
||||||
}
|
|
||||||
ContextCompat.startForegroundService(context, serviceIntent);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public static PendingIntent createPendingIntent(Context context, int eventCode) {
|
||||||
|
return PendingIntent.getBroadcast(context, eventCode, createIntent(context, eventCode),
|
||||||
|
(Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_IMMUTABLE : 0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -127,17 +127,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||||
*/
|
*/
|
||||||
public static final String ACTION_SHUTDOWN_PLAYBACK_SERVICE = "action.de.danoeh.antennapod.core.service.actionShutdownPlaybackService";
|
public static final String ACTION_SHUTDOWN_PLAYBACK_SERVICE = "action.de.danoeh.antennapod.core.service.actionShutdownPlaybackService";
|
||||||
|
|
||||||
/**
|
|
||||||
* If the PlaybackService receives this action, it will end playback of the
|
|
||||||
* current episode and load the next episode if there is one available.
|
|
||||||
*/
|
|
||||||
public static final String ACTION_SKIP_CURRENT_EPISODE = "action.de.danoeh.antennapod.core.service.skipCurrentEpisode";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If the PlaybackService receives this action, it will pause playback.
|
|
||||||
*/
|
|
||||||
public static final String ACTION_PAUSE_PLAY_CURRENT_EPISODE = "action.de.danoeh.antennapod.core.service.pausePlayCurrentEpisode";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Custom action used by Android Wear, Android Auto
|
* Custom action used by Android Wear, Android Auto
|
||||||
*/
|
*/
|
||||||
|
@ -263,8 +252,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||||
registerReceiver(shutdownReceiver, new IntentFilter(ACTION_SHUTDOWN_PLAYBACK_SERVICE));
|
registerReceiver(shutdownReceiver, new IntentFilter(ACTION_SHUTDOWN_PLAYBACK_SERVICE));
|
||||||
registerReceiver(bluetoothStateUpdated, new IntentFilter(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED));
|
registerReceiver(bluetoothStateUpdated, new IntentFilter(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED));
|
||||||
registerReceiver(audioBecomingNoisy, new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY));
|
registerReceiver(audioBecomingNoisy, new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY));
|
||||||
registerReceiver(skipCurrentEpisodeReceiver, new IntentFilter(ACTION_SKIP_CURRENT_EPISODE));
|
|
||||||
registerReceiver(pausePlayCurrentEpisodeReceiver, new IntentFilter(ACTION_PAUSE_PLAY_CURRENT_EPISODE));
|
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
taskManager = new PlaybackServiceTaskManager(this, taskManagerCallback);
|
taskManager = new PlaybackServiceTaskManager(this, taskManagerCallback);
|
||||||
|
|
||||||
|
@ -347,8 +334,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||||
unregisterReceiver(shutdownReceiver);
|
unregisterReceiver(shutdownReceiver);
|
||||||
unregisterReceiver(bluetoothStateUpdated);
|
unregisterReceiver(bluetoothStateUpdated);
|
||||||
unregisterReceiver(audioBecomingNoisy);
|
unregisterReceiver(audioBecomingNoisy);
|
||||||
unregisterReceiver(skipCurrentEpisodeReceiver);
|
|
||||||
unregisterReceiver(pausePlayCurrentEpisodeReceiver);
|
|
||||||
mediaPlayer.shutdown();
|
mediaPlayer.shutdown();
|
||||||
taskManager.shutdown();
|
taskManager.shutdown();
|
||||||
}
|
}
|
||||||
|
@ -1551,26 +1536,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
private final BroadcastReceiver skipCurrentEpisodeReceiver = new BroadcastReceiver() {
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
if (TextUtils.equals(intent.getAction(), ACTION_SKIP_CURRENT_EPISODE)) {
|
|
||||||
Log.d(TAG, "Received SKIP_CURRENT_EPISODE intent");
|
|
||||||
mediaPlayer.skip();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private final BroadcastReceiver pausePlayCurrentEpisodeReceiver = new BroadcastReceiver() {
|
|
||||||
@Override
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
|
||||||
if (TextUtils.equals(intent.getAction(), ACTION_PAUSE_PLAY_CURRENT_EPISODE)) {
|
|
||||||
Log.d(TAG, "Received PAUSE_PLAY_CURRENT_EPISODE intent");
|
|
||||||
mediaPlayer.pause(false, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
public void volumeAdaptionChanged(VolumeAdaptionChangedEvent event) {
|
public void volumeAdaptionChanged(VolumeAdaptionChangedEvent event) {
|
||||||
|
@ -1630,10 +1595,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
||||||
mediaPlayer.pause(abandonAudioFocus, reinit);
|
mediaPlayer.pause(abandonAudioFocus, reinit);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reinit() {
|
|
||||||
mediaPlayer.reinit();
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlaybackServiceMediaPlayer.PSMPInfo getPSMPInfo() {
|
public PlaybackServiceMediaPlayer.PSMPInfo getPSMPInfo() {
|
||||||
return mediaPlayer.getPSMPInfo();
|
return mediaPlayer.getPSMPInfo();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,10 +4,8 @@ import android.app.PendingIntent;
|
||||||
import android.appwidget.AppWidgetManager;
|
import android.appwidget.AppWidgetManager;
|
||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
@ -133,21 +131,21 @@ public abstract class WidgetUpdater {
|
||||||
views.setContentDescription(R.id.butPlayExtended, context.getString(R.string.play_label));
|
views.setContentDescription(R.id.butPlayExtended, context.getString(R.string.play_label));
|
||||||
}
|
}
|
||||||
views.setOnClickPendingIntent(R.id.butPlay,
|
views.setOnClickPendingIntent(R.id.butPlay,
|
||||||
createMediaButtonIntent(context, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
|
MediaButtonReceiver.createPendingIntent(context, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
|
||||||
views.setOnClickPendingIntent(R.id.butPlayExtended,
|
views.setOnClickPendingIntent(R.id.butPlayExtended,
|
||||||
createMediaButtonIntent(context, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
|
MediaButtonReceiver.createPendingIntent(context, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
|
||||||
views.setOnClickPendingIntent(R.id.butRew,
|
views.setOnClickPendingIntent(R.id.butRew,
|
||||||
createMediaButtonIntent(context, KeyEvent.KEYCODE_MEDIA_REWIND));
|
MediaButtonReceiver.createPendingIntent(context, KeyEvent.KEYCODE_MEDIA_REWIND));
|
||||||
views.setOnClickPendingIntent(R.id.butFastForward,
|
views.setOnClickPendingIntent(R.id.butFastForward,
|
||||||
createMediaButtonIntent(context, KeyEvent.KEYCODE_MEDIA_FAST_FORWARD));
|
MediaButtonReceiver.createPendingIntent(context, KeyEvent.KEYCODE_MEDIA_FAST_FORWARD));
|
||||||
views.setOnClickPendingIntent(R.id.butSkip,
|
views.setOnClickPendingIntent(R.id.butSkip,
|
||||||
createMediaButtonIntent(context, KeyEvent.KEYCODE_MEDIA_NEXT));
|
MediaButtonReceiver.createPendingIntent(context, KeyEvent.KEYCODE_MEDIA_NEXT));
|
||||||
} else {
|
} else {
|
||||||
// start the app if they click anything
|
// start the app if they click anything
|
||||||
views.setOnClickPendingIntent(R.id.layout_left, startMediaPlayer);
|
views.setOnClickPendingIntent(R.id.layout_left, startMediaPlayer);
|
||||||
views.setOnClickPendingIntent(R.id.butPlay, startMediaPlayer);
|
views.setOnClickPendingIntent(R.id.butPlay, startMediaPlayer);
|
||||||
views.setOnClickPendingIntent(R.id.butPlayExtended,
|
views.setOnClickPendingIntent(R.id.butPlayExtended,
|
||||||
createMediaButtonIntent(context, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
|
MediaButtonReceiver.createPendingIntent(context, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE));
|
||||||
views.setViewVisibility(R.id.txtvProgress, View.GONE);
|
views.setViewVisibility(R.id.txtvProgress, View.GONE);
|
||||||
views.setViewVisibility(R.id.txtvTitle, View.GONE);
|
views.setViewVisibility(R.id.txtvTitle, View.GONE);
|
||||||
views.setViewVisibility(R.id.txtNoPlaying, View.VISIBLE);
|
views.setViewVisibility(R.id.txtNoPlaying, View.VISIBLE);
|
||||||
|
@ -205,19 +203,6 @@ public abstract class WidgetUpdater {
|
||||||
return n - 1;
|
return n - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an intent which fakes a mediabutton press.
|
|
||||||
*/
|
|
||||||
private static PendingIntent createMediaButtonIntent(Context context, int eventCode) {
|
|
||||||
KeyEvent event = new KeyEvent(KeyEvent.ACTION_DOWN, eventCode);
|
|
||||||
Intent startingIntent = new Intent(context, MediaButtonReceiver.class);
|
|
||||||
startingIntent.setAction(MediaButtonReceiver.NOTIFY_BUTTON_RECEIVER);
|
|
||||||
startingIntent.putExtra(Intent.EXTRA_KEY_EVENT, event);
|
|
||||||
|
|
||||||
return PendingIntent.getBroadcast(context, eventCode, startingIntent,
|
|
||||||
(Build.VERSION.SDK_INT >= 23 ? PendingIntent.FLAG_IMMUTABLE : 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
private static String getProgressString(int position, int duration, float speed) {
|
private static String getProgressString(int position, int duration, float speed) {
|
||||||
if (position < 0 || duration <= 0) {
|
if (position < 0 || duration <= 0) {
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in New Issue