Merge branch 'master' into develop

This commit is contained in:
ByteHamster 2020-11-06 23:17:33 +01:00
commit 8d2df1afa1
12 changed files with 43 additions and 21 deletions

View File

@ -22,8 +22,8 @@ android {
// "1.2.3-SNAPSHOT" -> 1020300 // "1.2.3-SNAPSHOT" -> 1020300
// "1.2.3-RC4" -> 1020304 // "1.2.3-RC4" -> 1020304
// "1.2.3" -> 1020395 // "1.2.3" -> 1020395
versionCode 2000395 versionCode 2010002
versionName "2.0.3" versionName "2.1.0-RC2"
multiDexEnabled false multiDexEnabled false
vectorDrawables.useSupportLibrary true vectorDrawables.useSupportLibrary true

View File

@ -16,6 +16,7 @@ import android.view.KeyEvent;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.FrameLayout; import android.widget.FrameLayout;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
@ -542,6 +543,11 @@ public class MainActivity extends CastEnabledActivity {
//Hardware keyboard support //Hardware keyboard support
@Override @Override
public boolean onKeyUp(int keyCode, KeyEvent event) { public boolean onKeyUp(int keyCode, KeyEvent event) {
View currentFocus = getCurrentFocus();
if (currentFocus instanceof EditText) {
return super.onKeyUp(keyCode, event);
}
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
Integer customKeyCode = null; Integer customKeyCode = null;

View File

@ -12,6 +12,7 @@ import android.view.KeyEvent;
import android.view.animation.AlphaAnimation; import android.view.animation.AlphaAnimation;
import android.view.animation.AnimationSet; import android.view.animation.AnimationSet;
import android.view.animation.ScaleAnimation; import android.view.animation.ScaleAnimation;
import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import androidx.appcompat.view.menu.ActionMenuItem; import androidx.appcompat.view.menu.ActionMenuItem;
@ -489,6 +490,11 @@ public class VideoplayerActivity extends MediaplayerActivity {
//Hardware keyboard support //Hardware keyboard support
@Override @Override
public boolean onKeyUp(int keyCode, KeyEvent event) { public boolean onKeyUp(int keyCode, KeyEvent event) {
View currentFocus = getCurrentFocus();
if (currentFocus instanceof EditText) {
return super.onKeyUp(keyCode, event);
}
AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
switch (keyCode) { switch (keyCode) {

View File

@ -88,7 +88,9 @@ public class AddFeedFragment extends Fragment {
intentGetContentAction.setType("*/*"); intentGetContentAction.setType("*/*");
startActivityForResult(intentGetContentAction, REQUEST_CODE_CHOOSE_OPML_IMPORT_PATH); startActivityForResult(intentGetContentAction, REQUEST_CODE_CHOOSE_OPML_IMPORT_PATH);
} catch (ActivityNotFoundException e) { } catch (ActivityNotFoundException e) {
Log.e(TAG, "No activity found. Should never happen..."); e.printStackTrace();
((MainActivity) getActivity())
.showSnackbarAbovePlayer(R.string.unable_to_start_system_file_manager, Snackbar.LENGTH_LONG);
} }
}); });
root.findViewById(R.id.btn_add_local_folder).setOnClickListener(v -> { root.findViewById(R.id.btn_add_local_folder).setOnClickListener(v -> {
@ -100,7 +102,9 @@ public class AddFeedFragment extends Fragment {
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent, REQUEST_CODE_ADD_LOCAL_FOLDER); startActivityForResult(intent, REQUEST_CODE_ADD_LOCAL_FOLDER);
} catch (ActivityNotFoundException e) { } catch (ActivityNotFoundException e) {
Log.e(TAG, "No activity found. Should never happen..."); e.printStackTrace();
((MainActivity) getActivity())
.showSnackbarAbovePlayer(R.string.unable_to_start_system_file_manager, Snackbar.LENGTH_LONG);
} }
}); });
if (Build.VERSION.SDK_INT < 21) { if (Build.VERSION.SDK_INT < 21) {

View File

@ -176,7 +176,7 @@ public class DownloadLogFragment extends ListFragment {
public boolean onOptionsItemSelected(@NonNull MenuItem item) { public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (!super.onOptionsItemSelected(item)) { if (!super.onOptionsItemSelected(item)) {
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.clear_history_item: case R.id.clear_logs_item:
DBWriter.clearDownloadLog(); DBWriter.clearDownloadLog();
return true; return true;
case R.id.refresh_item: case R.id.refresh_item:

View File

@ -90,7 +90,6 @@ public class OnlineSearchFragment extends Fragment {
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment // Inflate the layout for this fragment
View root = inflater.inflate(R.layout.fragment_itunes_search, container, false); View root = inflater.inflate(R.layout.fragment_itunes_search, container, false);
setupToolbar(root.findViewById(R.id.toolbar));
root.findViewById(R.id.spinner_country).setVisibility(INVISIBLE); root.findViewById(R.id.spinner_country).setVisibility(INVISIBLE);
gridView = root.findViewById(R.id.gridView); gridView = root.findViewById(R.id.gridView);
adapter = new ItunesAdapter(getActivity(), new ArrayList<>()); adapter = new ItunesAdapter(getActivity(), new ArrayList<>());
@ -110,6 +109,7 @@ public class OnlineSearchFragment extends Fragment {
txtvEmpty = root.findViewById(android.R.id.empty); txtvEmpty = root.findViewById(android.R.id.empty);
TextView txtvPoweredBy = root.findViewById(R.id.search_powered_by); TextView txtvPoweredBy = root.findViewById(R.id.search_powered_by);
txtvPoweredBy.setText(getString(R.string.search_powered_by, searchProvider.getName())); txtvPoweredBy.setText(getString(R.string.search_powered_by, searchProvider.getName()));
setupToolbar(root.findViewById(R.id.toolbar));
return root; return root;
} }

View File

@ -1,7 +1,9 @@
We are proud to release version 2.0 with a new logo and refreshed user interface. This is a beta release for AntennaPod 2.1.0
Thank you to 6420 users who participated in the vote for the new logo!
- Support for chapter images (only new episodes, by @ByteHamster) - A long-standing wish of many: playing local files! In the 'Add podcast' screen simply tap 'Add local folder' and select a location on your phone! (@ByteHamster, @igoralmeida & @damoasda)
- Skip intro and ending per feed (by @tonytamsf) - Pick a country for the 'Discover' screen (@tonytamsf)
- Option to show notifications after episodes have been auto-downloaded (by @shortspider) - Keyboard shortcuts (@asdoi)
- Bug fixes and improvements (by @ebraminio, @tonytamsf, @JessieVela, @ByteHamster and more) - Search the PodcastIndex.org database (@edwinhere)
- Pull to refresh (@asdoi)
- Playback speed & filter dialogs (@ByteHamster & @bws9000)
- Smooth sleep timer volume (@olivoto)

View File

@ -114,7 +114,7 @@
android:title="@string/pref_skip_keeps_episodes_title"/> android:title="@string/pref_skip_keeps_episodes_title"/>
</PreferenceCategory> </PreferenceCategory>
<PreferenceCategory android:title="@string/media_player"> <PreferenceCategory android:title="@string/experimental_pref">
<ListPreference <ListPreference
android:defaultValue="exoplayer" android:defaultValue="exoplayer"
android:entries="@array/media_player_options" android:entries="@array/media_player_options"
@ -122,9 +122,6 @@
android:title="@string/media_player" android:title="@string/media_player"
android:summary="@string/pref_media_player_message" android:summary="@string/pref_media_player_message"
android:entryValues="@array/media_player_values"/> android:entryValues="@array/media_player_values"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/experimental_pref">
<SwitchPreferenceCompat <SwitchPreferenceCompat
android:defaultValue="false" android:defaultValue="false"
android:enabled="true" android:enabled="true"

View File

@ -1,5 +1,6 @@
package de.danoeh.antennapod.core.feed.util; package de.danoeh.antennapod.core.feed.util;
import android.util.Log;
import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.Feed;
import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.FeedMedia;
@ -14,6 +15,7 @@ import static de.danoeh.antennapod.core.feed.FeedPreferences.SPEED_USE_GLOBAL;
* Utility class to use the appropriate playback speed based on {@link PlaybackPreferences} * Utility class to use the appropriate playback speed based on {@link PlaybackPreferences}
*/ */
public final class PlaybackSpeedUtils { public final class PlaybackSpeedUtils {
private static final String TAG = "PlaybackSpeedUtils";
private PlaybackSpeedUtils() { private PlaybackSpeedUtils() {
} }
@ -33,8 +35,10 @@ public final class PlaybackSpeedUtils {
FeedItem item = ((FeedMedia) media).getItem(); FeedItem item = ((FeedMedia) media).getItem();
if (item != null) { if (item != null) {
Feed feed = item.getFeed(); Feed feed = item.getFeed();
if (feed != null) { if (feed != null && feed.getPreferences() != null) {
playbackSpeed = feed.getPreferences().getFeedPlaybackSpeed(); playbackSpeed = feed.getPreferences().getFeedPlaybackSpeed();
} else {
Log.d(TAG, "Can not get feed specific playback speed: " + feed);
} }
} }
} }

View File

@ -517,11 +517,12 @@ public class PlaybackService extends MediaBrowserServiceCompat {
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())
.subscribe( .subscribe(
playableLoaded -> { playableLoaded -> {
mediaPlayer.playMediaObject(playable, stream, startWhenPrepared, mediaPlayer.playMediaObject(playableLoaded, stream, startWhenPrepared,
prepareImmediately); prepareImmediately);
addPlayableToQueue(playable); addPlayableToQueue(playableLoaded);
}, error -> { }, error -> {
Log.d(TAG, "Playable was not found. Stopping service."); Log.d(TAG, "Playable was not found. Stopping service.");
error.printStackTrace();
stateManager.stopService(); stateManager.stopService();
}); });
return Service.START_NOT_STICKY; return Service.START_NOT_STICKY;
@ -729,6 +730,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
addPlayableToQueue(playable); addPlayableToQueue(playable);
}, error -> { }, error -> {
Log.d(TAG, "Playable was not loaded from preferences. Stopping service."); Log.d(TAG, "Playable was not loaded from preferences. Stopping service.");
error.printStackTrace();
stateManager.stopService(); stateManager.stopService();
}); });
} }

View File

@ -236,7 +236,7 @@
<string-array name="media_player_options"> <string-array name="media_player_options">
<item>@string/media_player_builtin</item> <item>@string/media_player_builtin</item>
<item>@string/media_player_sonic</item> <item>@string/media_player_sonic</item>
<item>@string/media_player_exoplayer</item> <item>@string/media_player_exoplayer_recommended</item>
</string-array> </string-array>
<string-array name="media_player_values"> <string-array name="media_player_values">

View File

@ -501,7 +501,7 @@
<string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string> <string name="pref_enqueue_downloaded_summary">Add downloaded episodes to the queue</string>
<string name="media_player_builtin">Built-in Android player</string> <string name="media_player_builtin">Built-in Android player</string>
<string name="media_player_sonic" translatable="false">Sonic Media Player</string> <string name="media_player_sonic" translatable="false">Sonic Media Player</string>
<string name="media_player_exoplayer" translatable="false">ExoPlayer</string> <string name="media_player_exoplayer_recommended">ExoPlayer (recommended)</string>
<string name="media_player_switch_to_exoplayer">Switch to ExoPlayer</string> <string name="media_player_switch_to_exoplayer">Switch to ExoPlayer</string>
<string name="media_player_switched_to_exoplayer">Switched to ExoPlayer.</string> <string name="media_player_switched_to_exoplayer">Switched to ExoPlayer.</string>
<string name="pref_skip_silence_title">Skip Silence in Audio</string> <string name="pref_skip_silence_title">Skip Silence in Audio</string>
@ -739,6 +739,7 @@
<string name="reconnect_local_folder">Re-connect local folder</string> <string name="reconnect_local_folder">Re-connect local folder</string>
<string name="reconnect_local_folder_warning">In case of permission denials, you can use this to re-connect to the exact same folder. Do not select another folder.</string> <string name="reconnect_local_folder_warning">In case of permission denials, you can use this to re-connect to the exact same folder. Do not select another folder.</string>
<string name="local_feed_description">This virtual podcast was created by adding a folder to AntennaPod.</string> <string name="local_feed_description">This virtual podcast was created by adding a folder to AntennaPod.</string>
<string name="unable_to_start_system_file_manager">Unable to start system file manager</string>
<string name="filter">Filter</string> <string name="filter">Filter</string>