mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-02-01 03:06:48 +01:00
Merge pull request #5241 from ByteHamster/speed-up-media-info
Speed up loading media info
This commit is contained in:
commit
00e2ad49d9
@ -268,7 +268,7 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
controller.setPlaybackSpeed(newSpeed);
|
controller.setPlaybackSpeed(newSpeed);
|
||||||
loadMediaInfo();
|
loadMediaInfo(false);
|
||||||
});
|
});
|
||||||
butPlaybackSpeed.setOnLongClickListener(v -> {
|
butPlaybackSpeed.setOnLongClickListener(v -> {
|
||||||
new VariableSpeedDialog().show(getChildFragmentManager(), null);
|
new VariableSpeedDialog().show(getChildFragmentManager(), null);
|
||||||
@ -290,14 +290,16 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
txtvPlaybackSpeed.setVisibility(View.VISIBLE);
|
txtvPlaybackSpeed.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadMediaInfo() {
|
private void loadMediaInfo(boolean includingChapters) {
|
||||||
if (disposable != null) {
|
if (disposable != null) {
|
||||||
disposable.dispose();
|
disposable.dispose();
|
||||||
}
|
}
|
||||||
disposable = Maybe.create(emitter -> {
|
disposable = Maybe.<Playable>create(emitter -> {
|
||||||
Playable media = controller.getMedia();
|
Playable media = controller.getMedia();
|
||||||
if (media != null) {
|
if (media != null) {
|
||||||
|
if (includingChapters) {
|
||||||
ChapterUtils.loadChapters(media, getContext());
|
ChapterUtils.loadChapters(media, getContext());
|
||||||
|
}
|
||||||
emitter.onSuccess(media);
|
emitter.onSuccess(media);
|
||||||
} else {
|
} else {
|
||||||
emitter.onComplete();
|
emitter.onComplete();
|
||||||
@ -305,8 +307,12 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
})
|
})
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe(media -> updateUi((Playable) media),
|
.subscribe(media -> {
|
||||||
error -> Log.e(TAG, Log.getStackTraceString(error)),
|
updateUi(media);
|
||||||
|
if (media.getChapters() == null && !includingChapters) {
|
||||||
|
loadMediaInfo(true);
|
||||||
|
}
|
||||||
|
}, error -> Log.e(TAG, Log.getStackTraceString(error)),
|
||||||
() -> updateUi(null));
|
() -> updateUi(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,7 +356,7 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSleepTimerUpdate() {
|
public void onSleepTimerUpdate() {
|
||||||
AudioPlayerFragment.this.loadMediaInfo();
|
AudioPlayerFragment.this.loadMediaInfo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -360,7 +366,7 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadMediaInfo() {
|
public void loadMediaInfo() {
|
||||||
AudioPlayerFragment.this.loadMediaInfo();
|
AudioPlayerFragment.this.loadMediaInfo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -397,7 +403,7 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
super.onStart();
|
super.onStart();
|
||||||
controller = newPlaybackController();
|
controller = newPlaybackController();
|
||||||
controller.init();
|
controller.init();
|
||||||
loadMediaInfo();
|
loadMediaInfo(false);
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
txtvRev.setText(NumberFormat.getInstance().format(UserPreferences.getRewindSecs()));
|
txtvRev.setText(NumberFormat.getInstance().format(UserPreferences.getRewindSecs()));
|
||||||
txtvFF.setText(NumberFormat.getInstance().format(UserPreferences.getFastForwardSecs()));
|
txtvFF.setText(NumberFormat.getInstance().format(UserPreferences.getFastForwardSecs()));
|
||||||
@ -447,7 +453,7 @@ public class AudioPlayerFragment extends Fragment implements
|
|||||||
|
|
||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
public void favoritesChanged(FavoritesEvent event) {
|
public void favoritesChanged(FavoritesEvent event) {
|
||||||
AudioPlayerFragment.this.loadMediaInfo();
|
AudioPlayerFragment.this.loadMediaInfo(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -124,14 +124,16 @@ public class CoverFragment extends Fragment {
|
|||||||
configureForOrientation(getResources().getConfiguration());
|
configureForOrientation(getResources().getConfiguration());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loadMediaInfo() {
|
private void loadMediaInfo(boolean includingChapters) {
|
||||||
if (disposable != null) {
|
if (disposable != null) {
|
||||||
disposable.dispose();
|
disposable.dispose();
|
||||||
}
|
}
|
||||||
disposable = Maybe.<Playable>create(emitter -> {
|
disposable = Maybe.<Playable>create(emitter -> {
|
||||||
Playable media = controller.getMedia();
|
Playable media = controller.getMedia();
|
||||||
if (media != null) {
|
if (media != null) {
|
||||||
|
if (includingChapters) {
|
||||||
ChapterUtils.loadChapters(media, getContext());
|
ChapterUtils.loadChapters(media, getContext());
|
||||||
|
}
|
||||||
emitter.onSuccess(media);
|
emitter.onSuccess(media);
|
||||||
} else {
|
} else {
|
||||||
emitter.onComplete();
|
emitter.onComplete();
|
||||||
@ -141,6 +143,9 @@ public class CoverFragment extends Fragment {
|
|||||||
.subscribe(media -> {
|
.subscribe(media -> {
|
||||||
this.media = media;
|
this.media = media;
|
||||||
displayMediaInfo(media);
|
displayMediaInfo(media);
|
||||||
|
if (media.getChapters() == null && !includingChapters) {
|
||||||
|
loadMediaInfo(true);
|
||||||
|
}
|
||||||
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
|
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -186,8 +191,14 @@ public class CoverFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateChapterControlVisibility() {
|
private void updateChapterControlVisibility() {
|
||||||
|
boolean chapterControlVisible = false;
|
||||||
if (media.getChapters() != null) {
|
if (media.getChapters() != null) {
|
||||||
boolean chapterControlVisible = media.getChapters().size() > 0;
|
chapterControlVisible = media.getChapters().size() > 0;
|
||||||
|
} else if (media instanceof FeedMedia) {
|
||||||
|
FeedMedia fm = ((FeedMedia) media);
|
||||||
|
// If an item has chapters but they are not loaded yet, still display the button.
|
||||||
|
chapterControlVisible = fm.getItem() != null && fm.getItem().hasChapters();
|
||||||
|
}
|
||||||
int newVisibility = chapterControlVisible ? View.VISIBLE : View.GONE;
|
int newVisibility = chapterControlVisible ? View.VISIBLE : View.GONE;
|
||||||
if (chapterControl.getVisibility() != newVisibility) {
|
if (chapterControl.getVisibility() != newVisibility) {
|
||||||
chapterControl.setVisibility(newVisibility);
|
chapterControl.setVisibility(newVisibility);
|
||||||
@ -198,7 +209,6 @@ public class CoverFragment extends Fragment {
|
|||||||
.start();
|
.start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshChapterData(int chapterIndex) {
|
private void refreshChapterData(int chapterIndex) {
|
||||||
if (chapterIndex > -1) {
|
if (chapterIndex > -1) {
|
||||||
@ -262,11 +272,11 @@ public class CoverFragment extends Fragment {
|
|||||||
controller = new PlaybackController(getActivity()) {
|
controller = new PlaybackController(getActivity()) {
|
||||||
@Override
|
@Override
|
||||||
public void loadMediaInfo() {
|
public void loadMediaInfo() {
|
||||||
CoverFragment.this.loadMediaInfo();
|
CoverFragment.this.loadMediaInfo(false);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
controller.init();
|
controller.init();
|
||||||
loadMediaInfo();
|
loadMediaInfo(false);
|
||||||
EventBus.getDefault().register(this);
|
EventBus.getDefault().register(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,6 +62,7 @@ public class ChapterSeekBar extends androidx.appcompat.widget.AppCompatSeekBar {
|
|||||||
} else {
|
} else {
|
||||||
this.dividerPos = null;
|
this.dividerPos = null;
|
||||||
}
|
}
|
||||||
|
invalidate();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void highlightCurrentChapter() {
|
public void highlightCurrentChapter() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user