Merge branch 'master' into develop
This commit is contained in:
commit
8d2df1afa1
|
@ -22,8 +22,8 @@ android {
|
|||
// "1.2.3-SNAPSHOT" -> 1020300
|
||||
// "1.2.3-RC4" -> 1020304
|
||||
// "1.2.3" -> 1020395
|
||||
versionCode 2000395
|
||||
versionName "2.0.3"
|
||||
versionCode 2010002
|
||||
versionName "2.1.0-RC2"
|
||||
|
||||
multiDexEnabled false
|
||||
vectorDrawables.useSupportLibrary true
|
||||
|
|
|
@ -16,6 +16,7 @@ import android.view.KeyEvent;
|
|||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.EditText;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.Toast;
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -542,6 +543,11 @@ public class MainActivity extends CastEnabledActivity {
|
|||
//Hardware keyboard support
|
||||
@Override
|
||||
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);
|
||||
Integer customKeyCode = null;
|
||||
|
||||
|
|
|
@ -12,6 +12,7 @@ import android.view.KeyEvent;
|
|||
import android.view.animation.AlphaAnimation;
|
||||
import android.view.animation.AnimationSet;
|
||||
import android.view.animation.ScaleAnimation;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import androidx.appcompat.view.menu.ActionMenuItem;
|
||||
|
@ -489,6 +490,11 @@ public class VideoplayerActivity extends MediaplayerActivity {
|
|||
//Hardware keyboard support
|
||||
@Override
|
||||
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);
|
||||
|
||||
switch (keyCode) {
|
||||
|
|
|
@ -88,7 +88,9 @@ public class AddFeedFragment extends Fragment {
|
|||
intentGetContentAction.setType("*/*");
|
||||
startActivityForResult(intentGetContentAction, REQUEST_CODE_CHOOSE_OPML_IMPORT_PATH);
|
||||
} 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 -> {
|
||||
|
@ -100,7 +102,9 @@ public class AddFeedFragment extends Fragment {
|
|||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
startActivityForResult(intent, REQUEST_CODE_ADD_LOCAL_FOLDER);
|
||||
} 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) {
|
||||
|
|
|
@ -176,7 +176,7 @@ public class DownloadLogFragment extends ListFragment {
|
|||
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
|
||||
if (!super.onOptionsItemSelected(item)) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.clear_history_item:
|
||||
case R.id.clear_logs_item:
|
||||
DBWriter.clearDownloadLog();
|
||||
return true;
|
||||
case R.id.refresh_item:
|
||||
|
|
|
@ -90,7 +90,6 @@ public class OnlineSearchFragment extends Fragment {
|
|||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
// Inflate the layout for this fragment
|
||||
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);
|
||||
gridView = root.findViewById(R.id.gridView);
|
||||
adapter = new ItunesAdapter(getActivity(), new ArrayList<>());
|
||||
|
@ -110,6 +109,7 @@ public class OnlineSearchFragment extends Fragment {
|
|||
txtvEmpty = root.findViewById(android.R.id.empty);
|
||||
TextView txtvPoweredBy = root.findViewById(R.id.search_powered_by);
|
||||
txtvPoweredBy.setText(getString(R.string.search_powered_by, searchProvider.getName()));
|
||||
setupToolbar(root.findViewById(R.id.toolbar));
|
||||
return root;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
We are proud to release version 2.0 with a new logo and refreshed user interface.
|
||||
Thank you to 6420 users who participated in the vote for the new logo!
|
||||
This is a beta release for AntennaPod 2.1.0
|
||||
|
||||
- Support for chapter images (only new episodes, by @ByteHamster)
|
||||
- Skip intro and ending per feed (by @tonytamsf)
|
||||
- Option to show notifications after episodes have been auto-downloaded (by @shortspider)
|
||||
- Bug fixes and improvements (by @ebraminio, @tonytamsf, @JessieVela, @ByteHamster and more)
|
||||
- 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)
|
||||
- Pick a country for the 'Discover' screen (@tonytamsf)
|
||||
- Keyboard shortcuts (@asdoi)
|
||||
- Search the PodcastIndex.org database (@edwinhere)
|
||||
- Pull to refresh (@asdoi)
|
||||
- Playback speed & filter dialogs (@ByteHamster & @bws9000)
|
||||
- Smooth sleep timer volume (@olivoto)
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
android:title="@string/pref_skip_keeps_episodes_title"/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/media_player">
|
||||
<PreferenceCategory android:title="@string/experimental_pref">
|
||||
<ListPreference
|
||||
android:defaultValue="exoplayer"
|
||||
android:entries="@array/media_player_options"
|
||||
|
@ -122,9 +122,6 @@
|
|||
android:title="@string/media_player"
|
||||
android:summary="@string/pref_media_player_message"
|
||||
android:entryValues="@array/media_player_values"/>
|
||||
</PreferenceCategory>
|
||||
|
||||
<PreferenceCategory android:title="@string/experimental_pref">
|
||||
<SwitchPreferenceCompat
|
||||
android:defaultValue="false"
|
||||
android:enabled="true"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package de.danoeh.antennapod.core.feed.util;
|
||||
|
||||
import android.util.Log;
|
||||
import de.danoeh.antennapod.core.feed.Feed;
|
||||
import de.danoeh.antennapod.core.feed.FeedItem;
|
||||
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}
|
||||
*/
|
||||
public final class PlaybackSpeedUtils {
|
||||
private static final String TAG = "PlaybackSpeedUtils";
|
||||
|
||||
private PlaybackSpeedUtils() {
|
||||
}
|
||||
|
@ -33,8 +35,10 @@ public final class PlaybackSpeedUtils {
|
|||
FeedItem item = ((FeedMedia) media).getItem();
|
||||
if (item != null) {
|
||||
Feed feed = item.getFeed();
|
||||
if (feed != null) {
|
||||
if (feed != null && feed.getPreferences() != null) {
|
||||
playbackSpeed = feed.getPreferences().getFeedPlaybackSpeed();
|
||||
} else {
|
||||
Log.d(TAG, "Can not get feed specific playback speed: " + feed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -517,11 +517,12 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(
|
||||
playableLoaded -> {
|
||||
mediaPlayer.playMediaObject(playable, stream, startWhenPrepared,
|
||||
mediaPlayer.playMediaObject(playableLoaded, stream, startWhenPrepared,
|
||||
prepareImmediately);
|
||||
addPlayableToQueue(playable);
|
||||
addPlayableToQueue(playableLoaded);
|
||||
}, error -> {
|
||||
Log.d(TAG, "Playable was not found. Stopping service.");
|
||||
error.printStackTrace();
|
||||
stateManager.stopService();
|
||||
});
|
||||
return Service.START_NOT_STICKY;
|
||||
|
@ -729,6 +730,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
|
|||
addPlayableToQueue(playable);
|
||||
}, error -> {
|
||||
Log.d(TAG, "Playable was not loaded from preferences. Stopping service.");
|
||||
error.printStackTrace();
|
||||
stateManager.stopService();
|
||||
});
|
||||
}
|
||||
|
|
|
@ -236,7 +236,7 @@
|
|||
<string-array name="media_player_options">
|
||||
<item>@string/media_player_builtin</item>
|
||||
<item>@string/media_player_sonic</item>
|
||||
<item>@string/media_player_exoplayer</item>
|
||||
<item>@string/media_player_exoplayer_recommended</item>
|
||||
</string-array>
|
||||
|
||||
<string-array name="media_player_values">
|
||||
|
|
|
@ -501,7 +501,7 @@
|
|||
<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_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_switched_to_exoplayer">Switched to ExoPlayer.</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_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="unable_to_start_system_file_manager">Unable to start system file manager</string>
|
||||
|
||||
<string name="filter">Filter</string>
|
||||
|
||||
|
|
Loading…
Reference in New Issue