summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/build.gradle12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/FlattrAuthActivity.java4
-rw-r--r--build.gradle12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java118
-rw-r--r--gradle/wrapper/gradle-wrapper.properties2
5 files changed, 72 insertions, 76 deletions
diff --git a/app/build.gradle b/app/build.gradle
index 388487092..e4f66fe64 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -14,7 +14,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.1'
+ classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2'
}
}
@@ -86,6 +86,7 @@ android {
buildConfigField STRING, FLATTR_APP_SECRET, mFlattrAppSecret
}
release {
+ resValue "string", "provider_authority", "de.danoeh.antennapod.provider"
minifyEnabled true
proguardFile "proguard.cfg"
signingConfig signingConfigs.releaseConfig
@@ -127,13 +128,6 @@ android {
}
}
-configurations {
- freeDebugImplementation
- freeReleaseImplementation
- playDebugImplementation
- playReleaseImplementation
-}
-
dependencies {
freeImplementation project(":core")
// free build hack: skip some dependencies
@@ -169,7 +163,7 @@ dependencies {
transitive = true
}
implementation "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion"
- implementation("com.githang:viewpagerindicator:2.5@aar") {
+ implementation("com.githang:viewpagerindicator:2.5.1@aar") {
exclude module: "support-v4"
}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/FlattrAuthActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/FlattrAuthActivity.java
index d9c250b38..26352f58f 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/FlattrAuthActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/FlattrAuthActivity.java
@@ -4,7 +4,7 @@ package de.danoeh.antennapod.activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
+import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
@@ -21,7 +21,7 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
/** Guides the user through the authentication process */
-public class FlattrAuthActivity extends ActionBarActivity {
+public class FlattrAuthActivity extends AppCompatActivity {
private static final String TAG = "FlattrAuthActivity";
private TextView txtvExplanation;
diff --git a/build.gradle b/build.gradle
index e15625f13..4d5fded46 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
google()
}
dependencies {
- classpath "com.android.tools.build:gradle:3.0.1"
+ classpath 'com.android.tools.build:gradle:3.1.0'
classpath "com.github.triplet.gradle:play-publisher:1.2.0"
// Exclude the version that the android plugin depends on.
configurations.classpath.exclude group: "com.android.tools.external.lombok"
@@ -53,13 +53,13 @@ project.ext {
jsoupVersion = "1.11.2"
materialDialogsVersion = "0.9.0.2"
okhttpVersion = "3.9.0"
- okioVersion = "1.13.0"
- recyclerviewFlexibledividerVersion = "1.2.6"
+ okioVersion = "1.14.0"
+ recyclerviewFlexibledividerVersion = "1.4.0"
robotiumSoloVersion = "5.6.3"
rxAndroidVersion = "1.2.1"
- rxJavaVersion = "1.3.2"
- rxJavaRulesVersion = "1.3.2.0"
- triangleLabelViewVersion = "1.1.0"
+ rxJavaVersion = "1.3.8"
+ rxJavaRulesVersion = "1.3.3.0"
+ triangleLabelViewVersion = "1.1.2"
audioPlayerVersion = "v1.0.17"
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index 417716810..ab25f0a5f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -263,30 +263,21 @@ public class PlaybackService extends MediaBrowserServiceCompat {
Log.d(TAG, "Service created.");
isRunning = true;
- registerReceiver(autoStateUpdated, new IntentFilter(
- "com.google.android.gms.car.media.STATUS"));
- registerReceiver(headsetDisconnected, new IntentFilter(
- Intent.ACTION_HEADSET_PLUG));
- registerReceiver(shutdownReceiver, new IntentFilter(
- ACTION_SHUTDOWN_PLAYBACK_SERVICE));
- registerReceiver(bluetoothStateUpdated, new IntentFilter(
- BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED));
- 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));
- registerReceiver(pauseResumeCurrentEpisodeReceiver, new IntentFilter(
- ACTION_RESUME_PLAY_CURRENT_EPISODE));
+ registerReceiver(autoStateUpdated, new IntentFilter("com.google.android.gms.car.media.STATUS"));
+ registerReceiver(headsetDisconnected, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
+ registerReceiver(shutdownReceiver, new IntentFilter(ACTION_SHUTDOWN_PLAYBACK_SERVICE));
+ registerReceiver(bluetoothStateUpdated, new IntentFilter(BluetoothA2dp.ACTION_CONNECTION_STATE_CHANGED));
+ 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));
+ registerReceiver(pauseResumeCurrentEpisodeReceiver, new IntentFilter(ACTION_RESUME_PLAY_CURRENT_EPISODE));
taskManager = new PlaybackServiceTaskManager(this, taskManagerCallback);
flavorHelper = new PlaybackServiceFlavorHelper(PlaybackService.this, flavorHelperCallback);
PreferenceManager.getDefaultSharedPreferences(this)
.registerOnSharedPreferenceChangeListener(prefListener);
- ComponentName eventReceiver = new ComponentName(getApplicationContext(),
- MediaButtonReceiver.class);
+ ComponentName eventReceiver = new ComponentName(getApplicationContext(), MediaButtonReceiver.class);
Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
mediaButtonIntent.setComponent(eventReceiver);
PendingIntent buttonReceiverIntent = PendingIntent.getBroadcast(this, 0, mediaButtonIntent, PendingIntent.FLAG_UPDATE_CURRENT);
@@ -309,7 +300,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
List<MediaSessionCompat.QueueItem> queueItems = new ArrayList<>();
try {
for (FeedItem feedItem : taskManager.getQueue()) {
- if(feedItem.getMedia() != null) {
+ if (feedItem.getMedia() != null) {
MediaDescriptionCompat mediaDescription = feedItem.getMedia().getMediaItem().getDescription();
queueItems.add(new MediaSessionCompat.QueueItem(mediaDescription, feedItem.getId()));
}
@@ -375,10 +366,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
.setTitle(feed.getTitle())
.setDescription(feed.getDescription())
.setSubtitle(feed.getCustomTitle());
- if(feed.getImageLocation() != null) {
+ if (feed.getImageLocation() != null) {
builder.setIconUri(Uri.parse(feed.getImageLocation()));
}
- if(feed.getLink() != null) {
+ if (feed.getLink() != null) {
builder.setMediaUri(Uri.parse(feed.getLink()));
}
MediaDescriptionCompat description = builder.build();
@@ -401,13 +392,13 @@ public class PlaybackService extends MediaBrowserServiceCompat {
e.printStackTrace();
}
List<Feed> feeds = DBReader.getFeedList();
- for (Feed feed: feeds) {
+ for (Feed feed : feeds) {
mediaItems.add(createBrowsableMediaItemForFeed(feed));
}
- } else if (parentId.equals(getResources().getString(R.string.queue_label))){
+ } else if (parentId.equals(getResources().getString(R.string.queue_label))) {
// Child List
try {
- for (FeedItem feedItem: taskManager.getQueue()) {
+ for (FeedItem feedItem : taskManager.getQueue()) {
mediaItems.add(feedItem.getMedia().getMediaItem());
}
} catch (InterruptedException e) {
@@ -416,8 +407,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
} else if (parentId.startsWith("FeedId:")) {
Long feedId = Long.parseLong(parentId.split(":")[1]);
List<FeedItem> feedItems = DBReader.getFeedItemList(DBReader.getFeed(feedId));
- for (FeedItem feedItem: feedItems) {
- if(feedItem.getMedia() != null && feedItem.getMedia().getMediaItem() != null) {
+ for (FeedItem feedItem : feedItems) {
+ if (feedItem.getMedia() != null && feedItem.getMedia().getMediaItem() != null) {
mediaItems.add(feedItem.getMedia().getMediaItem());
}
}
@@ -428,7 +419,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public IBinder onBind(Intent intent) {
Log.d(TAG, "Received onBind event");
- if(intent.getAction() != null && TextUtils.equals(intent.getAction(), MediaBrowserServiceCompat.SERVICE_INTERFACE)) {
+ if (intent.getAction() != null && TextUtils.equals(intent.getAction(), MediaBrowserServiceCompat.SERVICE_INTERFACE)) {
return super.onBind(intent);
} else {
return mBinder;
@@ -467,8 +458,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
sendNotificationBroadcast(NOTIFICATION_TYPE_RELOAD, 0);
//If the user asks to play External Media, the casting session, if on, should end.
flavorHelper.castDisconnect(playable instanceof ExternalMedia);
- if(playable instanceof FeedMedia){
- playable = DBReader.getFeedMedia(((FeedMedia)playable).getId());
+ if (playable instanceof FeedMedia) {
+ playable = DBReader.getFeedMedia(((FeedMedia) playable).getId());
}
mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, prepareImmediately);
}
@@ -514,7 +505,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
return true;
case KeyEvent.KEYCODE_MEDIA_NEXT:
- if(source == InputDevice.SOURCE_CLASS_NONE ||
+ if (source == InputDevice.SOURCE_CLASS_NONE ||
UserPreferences.shouldHardwareButtonSkip()) {
// assume the skip command comes from a notification or the lockscreen
// a >| skip button should actually skip
@@ -529,7 +520,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
mediaPlayer.seekDelta(UserPreferences.getFastForwardSecs() * 1000);
return true;
case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
- if(UserPreferences.shouldHardwarePreviousButtonRestart()) {
+ if (UserPreferences.shouldHardwarePreviousButtonRestart()) {
// user wants to restart current episode
mediaPlayer.seekTo(0);
} else {
@@ -657,8 +648,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
setupNotification(newInfo);
started = true;
// set sleep timer if auto-enabled
- if(newInfo.oldPlayerStatus != null && newInfo.oldPlayerStatus != PlayerStatus.SEEKING &&
- SleepTimerPreferences.autoEnable() && !sleepTimerActive()) {
+ if (newInfo.oldPlayerStatus != null && newInfo.oldPlayerStatus != PlayerStatus.SEEKING &&
+ SleepTimerPreferences.autoEnable() && !sleepTimerActive()) {
setSleepTimer(SleepTimerPreferences.timerMillis(), SleepTimerPreferences.shakeToReset(),
SleepTimerPreferences.vibrate());
}
@@ -801,7 +792,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
Log.e(TAG, "Error handling the queue in order to retrieve the next item", e);
return null;
}
- return (nextItem != null)? nextItem.getMedia() : null;
+ return (nextItem != null) ? nextItem.getMedia() : null;
}
@@ -830,7 +821,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
/**
* This method processes the media object after its playback ended, either because it completed
* or because a different media object was selected for playback.
- *
+ * <p>
* Even though these tasks aren't supposed to be resource intensive, a good practice is to
* usually call this method on a background thread.
*
@@ -1030,6 +1021,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
/**
* Updates the Media Session for the corresponding status.
+ *
* @param playerStatus the current {@link PlayerStatus}
*/
private void updateMediaSession(final PlayerStatus playerStatus) {
@@ -1105,8 +1097,8 @@ public class PlaybackService extends MediaBrowserServiceCompat {
// showRewindOnCompactNotification() corresponds to the "Set Lockscreen Buttons"
// Settings in UI.
// Hence, from user perspective, he/she is setting the buttons for Lockscreen
- return ( UserPreferences.showRewindOnCompactNotification() &&
- (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) );
+ return (UserPreferences.showRewindOnCompactNotification() &&
+ (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP));
}
/**
@@ -1158,7 +1150,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
PendingIntent.FLAG_UPDATE_CURRENT));
try {
mediaSession.setMetadata(builder.build());
- } catch (OutOfMemoryError e) {
+ } catch (OutOfMemoryError e) {
Log.e(TAG, "Setting media session metadata", e);
builder.putBitmap(MediaMetadataCompat.METADATA_KEY_ART, null);
mediaSession.setMetadata(builder.build());
@@ -1255,7 +1247,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
notificationBuilder.addAction(android.R.drawable.ic_media_rew,
getString(R.string.rewind_label),
rewindButtonPendingIntent);
- if(UserPreferences.showRewindOnCompactNotification()) {
+ if (UserPreferences.showRewindOnCompactNotification()) {
compactActionList.add(numActions);
}
numActions++;
@@ -1282,7 +1274,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
notificationBuilder.addAction(android.R.drawable.ic_media_ff,
getString(R.string.fast_forward_label),
ffButtonPendingIntent);
- if(UserPreferences.showFastForwardOnCompactNotification()) {
+ if (UserPreferences.showFastForwardOnCompactNotification()) {
compactActionList.add(numActions);
}
numActions++;
@@ -1293,7 +1285,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
notificationBuilder.addAction(android.R.drawable.ic_media_next,
getString(R.string.skip_episode_label),
skipButtonPendingIntent);
- if(UserPreferences.showSkipOnCompactNotification()) {
+ if (UserPreferences.showSkipOnCompactNotification()) {
compactActionList.add(numActions);
}
numActions++;
@@ -1346,9 +1338,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
*
* @param fromMediaPlayer if true, the information is gathered from the current Media Player
* and {@param playable} and {@param position} become irrelevant.
- * @param playable the playable for which the current position should be saved, unless
- * {@param fromMediaPlayer} is true.
- * @param position the position that should be saved, unless {@param fromMediaPlayer} is true.
+ * @param playable the playable for which the current position should be saved, unless
+ * {@param fromMediaPlayer} is true.
+ * @param position the position that should be saved, unless {@param fromMediaPlayer} is true.
*/
private synchronized void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position) {
int duration;
@@ -1416,7 +1408,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
String status = intent.getStringExtra("media_connection_status");
boolean isConnectedToCar = "media_connected".equals(status);
Log.d(TAG, "Received Auto Connection update: " + status);
- if(!isConnectedToCar) {
+ if (!isConnectedToCar) {
Log.d(TAG, "Car was unplugged during playback.");
pauseIfPauseOnDisconnect();
} else {
@@ -1506,10 +1498,10 @@ public class PlaybackService extends MediaBrowserServiceCompat {
transientPause = false;
if (!bluetooth && UserPreferences.isUnpauseOnHeadsetReconnect()) {
mediaPlayer.resume();
- } else if (bluetooth && UserPreferences.isUnpauseOnBluetoothReconnect()){
+ } else if (bluetooth && UserPreferences.isUnpauseOnBluetoothReconnect()) {
// let the user know we've started playback again...
Vibrator v = (Vibrator) getApplicationContext().getSystemService(Context.VIBRATOR_SERVICE);
- if(v != null) {
+ if (v != null) {
v.vibrate(500);
}
mediaPlayer.resume();
@@ -1590,7 +1582,9 @@ public class PlaybackService extends MediaBrowserServiceCompat {
return mediaPlayer.getPlayerStatus();
}
- public Playable getPlayable() { return mediaPlayer.getPlayable(); }
+ public Playable getPlayable() {
+ return mediaPlayer.getPlayable();
+ }
public boolean canSetSpeed() {
return mediaPlayer.canSetSpeed();
@@ -1685,19 +1679,19 @@ public class PlaybackService extends MediaBrowserServiceCompat {
public void onPlayFromMediaId(String mediaId, Bundle extras) {
Log.d(TAG, "onPlayFromMediaId: mediaId: " + mediaId + " extras: " + extras.toString());
FeedMedia p = DBReader.getFeedMedia(Long.parseLong(mediaId));
- if(p != null) {
+ if (p != null) {
mediaPlayer.playMediaObject(p, !p.localFileAvailable(), true, true);
}
}
@Override
- public void onPlayFromSearch (String query, Bundle extras) {
+ public void onPlayFromSearch(String query, Bundle extras) {
Log.d(TAG, "onPlayFromSearch query=" + query + " extras=" + extras.toString());
- List<SearchResult> results = FeedSearcher.performSearch(getBaseContext(),query,0);
- for( SearchResult result : results) {
+ List<SearchResult> results = FeedSearcher.performSearch(getBaseContext(), query, 0);
+ for (SearchResult result : results) {
try {
- FeedMedia p = ((FeedItem)(result.getComponent())).getMedia();
+ FeedMedia p = ((FeedItem) (result.getComponent())).getMedia();
mediaPlayer.playMediaObject(p, !p.localFileAvailable(), true, true);
return;
} catch (Exception e) {
@@ -1707,7 +1701,6 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
}
onPlay();
- return;
}
@Override
@@ -1745,7 +1738,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
@Override
public void onSkipToNext() {
Log.d(TAG, "onSkipToNext()");
- if(UserPreferences.shouldHardwareButtonSkip()) {
+ if (UserPreferences.shouldHardwareButtonSkip()) {
mediaPlayer.skip();
} else {
seekDelta(UserPreferences.getFastForwardSecs() * 1000);
@@ -1766,7 +1759,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
KeyEvent keyEvent = (KeyEvent) mediaButton.getExtras().get(Intent.EXTRA_KEY_EVENT);
if (keyEvent != null &&
keyEvent.getAction() == KeyEvent.ACTION_DOWN &&
- keyEvent.getRepeatCount() == 0){
+ keyEvent.getRepeatCount() == 0) {
return handleKeycode(keyEvent.getKeyCode(), keyEvent.getSource());
}
}
@@ -1791,18 +1784,27 @@ public class PlaybackService extends MediaBrowserServiceCompat {
} else {
flavorHelper.onSharedPreference(key);
}
- };
+ };
interface FlavorHelperCallback {
PlaybackServiceMediaPlayer.PSMPCallback getMediaPlayerCallback();
+
void setMediaPlayer(PlaybackServiceMediaPlayer mediaPlayer);
+
PlaybackServiceMediaPlayer getMediaPlayer();
+
void setIsCasting(boolean isCasting);
+
void sendNotificationBroadcast(int type, int code);
+
void saveCurrentPosition(boolean fromMediaPlayer, Playable playable, int position);
+
void setupNotification(boolean connected, PlaybackServiceMediaPlayer.PSMPInfo info);
+
MediaSessionCompat getMediaSession();
+
Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter);
+
void unregisterReceiver(BroadcastReceiver receiver);
}
@@ -1849,7 +1851,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
UserPreferences.isPersistNotify()) &&
android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
PlaybackService.this.setupNotification(info);
- } else if (!UserPreferences.isPersistNotify()){
+ } else if (!UserPreferences.isPersistNotify()) {
PlaybackService.this.stopForeground(true);
}
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 2c2bbe5f9..ea720f986 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.4.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-bin.zip