diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java index 91c3796af..a060e258a 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -9,14 +9,14 @@ import android.content.pm.PackageManager; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.PixelFormat; -import android.net.Uri; import android.os.Build; import android.os.Bundle; -import android.support.annotation.Nullable; -import android.support.v4.app.ActivityCompat; -import android.support.v4.app.ActivityOptionsCompat; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AlertDialog; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.app.ActivityCompat; +import androidx.core.app.ActivityOptionsCompat; +import androidx.core.content.ContextCompat; +import androidx.appcompat.app.AlertDialog; import android.util.Log; import android.view.Menu; import android.view.MenuInflater; @@ -34,6 +34,7 @@ import com.joanzapata.iconify.IconDrawable; import com.joanzapata.iconify.fonts.FontAwesomeIcons; import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.event.PlaybackPositionEvent; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; import de.danoeh.antennapod.core.feed.MediaType; @@ -63,6 +64,9 @@ import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; /** @@ -73,7 +77,8 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements private static final String TAG = "MediaplayerActivity"; private static final String PREFS = "MediaPlayerActivityPreferences"; private static final String PREF_SHOW_TIME_LEFT = "showTimeLeft"; - private static final int REQUEST_CODE_STORAGE = 42; + private static final int REQUEST_CODE_STORAGE_PLAY_VIDEO = 42; + private static final int REQUEST_CODE_STORAGE_PLAY_AUDIO = 43; PlaybackController controller; @@ -194,6 +199,11 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements }; } + @Subscribe(threadMode = ThreadMode.MAIN) + public void onEventMainThread(PlaybackPositionEvent event) { + onPositionObserverUpdate(); + } + private static TextView getTxtvFFFromActivity(MediaplayerActivity activity) { return activity.txtvFF; } @@ -274,6 +284,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements controller.init(); loadMediaInfo(); onPositionObserverUpdate(); + EventBus.getDefault().register(this); } @Override @@ -286,6 +297,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements if (disposable != null) { disposable.dispose(); } + EventBus.getDefault().unregister(this); super.onStop(); } @@ -845,10 +857,13 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_EXTERNAL_STORAGE)) { Toast.makeText(this, R.string.needs_storage_permission, Toast.LENGTH_LONG).show(); - } else { - ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, - REQUEST_CODE_STORAGE); } + + int code = REQUEST_CODE_STORAGE_PLAY_AUDIO; + if (type == MediaType.VIDEO) { + code = REQUEST_CODE_STORAGE_PLAY_VIDEO; + } + ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, code); return; } @@ -856,6 +871,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements ExternalMedia media = new ExternalMedia(intent.getData().getPath(), type); new PlaybackServiceStarter(this, media) + .callEvenIfRunning(true) .startWhenPrepared(true) .shouldStream(false) .prepareImmediately(true) @@ -863,18 +879,22 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements } @Override - public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - if (requestCode == REQUEST_CODE_STORAGE) { - if (grantResults.length <= 0 || grantResults[0] != PackageManager.PERMISSION_GRANTED) { - Toast.makeText(this, R.string.needs_storage_permission, Toast.LENGTH_LONG).show(); + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, int[] grantResults) { + if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + if (requestCode == REQUEST_CODE_STORAGE_PLAY_AUDIO) { + playExternalMedia(getIntent(), MediaType.AUDIO); + } else if (requestCode == REQUEST_CODE_STORAGE_PLAY_VIDEO) { + playExternalMedia(getIntent(), MediaType.VIDEO); } + } else { + Toast.makeText(this, R.string.needs_storage_permission, Toast.LENGTH_LONG).show(); } } @Nullable private static FeedItem getFeedItem(@Nullable Playable playable) { - if ((playable != null) && (playable instanceof FeedMedia)) { - return ((FeedMedia)playable).getItem(); + if (playable instanceof FeedMedia) { + return ((FeedMedia) playable).getItem(); } else { return null; } |