android - 退出 Activity android时停止播放exo播放器视频

标签 android

我正在使用 Exo-Player。我的视频播放正常,但是当我按下后退按钮并退出 Activity 时,我的视频继续在后台播放。我不知道如何在 Activity 结束后停止播放。请帮忙

这是我在回收器 View 适配器中的 exo 播放器代码

 String my_date = data.get(position).getCreated_at();
    String returneDate = setDateAndTime(my_date);
    String img_url = data.get(position).getUser().getProfileUrl();
    String videoUrl = data.get(position).getFile_url();

    if (videoUrl != null) {
        uri = Uri.parse(videoUrl);
    } else {
        holder.videoFrame.setVisibility(View.GONE);
    }

    holder.userVideoStatus.setText(data.get(position).getText());
    holder.userNameVideoStatus.setText((CharSequence) data.get(position).getUser().getName());
    holder.timeVideoStatus.setText(returneDate);

    BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
    TrackSelector trackSelector = new DefaultTrackSelector(new AdaptiveTrackSelection.Factory(bandwidthMeter));
    player = ExoPlayerFactory.newSimpleInstance(activity, trackSelector);

    DefaultHttpDataSourceFactory defaultHttpDataSourceFactory = new DefaultHttpDataSourceFactory("exo player");
    ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
    final MediaSource mediaSource = new ExtractorMediaSource(uri, defaultHttpDataSourceFactory, extractorsFactory, null, null);


    holder.playVideo.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {

            holder.playVideo.setVisibility(View.GONE);
            holder.userVideoUpdate.setPlayer(player);
            player.prepare(mediaSource);
            player.setPlayWhenReady(true);
            holder.volumeUp.setVisibility(View.VISIBLE);

            return true;
        }
    });

最佳答案

好的 Pavel B. 给出了正确的答案,但我正在详细说明并使其更清楚......

适配器

public class ChatsAdapter extends RecyclerView {

    public SimpleExoPlayer exoPlayer; // Do this at top

}

Activity

public class TestActivity extends AppCompatActivity {

    private ChatsAdapter chatsAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test);

        chatsAdapter = new ChatsAdapter();

    }

    @Override
    protected void onPause() {

        super.onPause();
        pausePlayer(chatsAdapter.exoPlayer);

    }

    @Override
    protected void onStop() {

        super.onStop();
        pausePlayer(chatsAdapter.exoPlayer);

    }

    @Override
    protected void onDestroy() {

        super.onDestroy();
        releaseExoPlayer(chatsAdapter.exoPlayer);
    }

    @Override
    protected void onResume() {

        super.onResume();
        startPlayer(chatsAdapter.exoPlayer);
    }

    public static void startPlayer(SimpleExoPlayer exoPlayer) {

        if (exoPlayer != null) {
            exoPlayer.setPlayWhenReady(true);

        }
    }

    public static void pausePlayer(SimpleExoPlayer exoPlayer) {

        if (exoPlayer != null) {
            exoPlayer.setPlayWhenReady(false);

        }
    }

    public static void releaseExoPlayer(SimpleExoPlayer exoPlayer) {

        if (exoPlayer != null) {
            exoPlayer.release();

        }

    }
}

关于android - 退出 Activity android时停止播放exo播放器视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545997/

相关文章:

android - 为 Gesture.toBitmap() 设置描边宽度

java - 我的启动中的某些内容导致应用程序崩溃。如果有人能提供帮助,我将不胜感激

android - 如何将 Qt 4.8 移植到 Android 平台

Android App Bundles - 是否可以在一个版本中上传多个应用程序包?

android - 在 Android SDK 中找不到 usb_driver 文件夹

android - 使用加速度计移动对象

java - 有没有更快的方法来比较数字是否在范围内?

android - Flutter - 使用带有 android 多种风格的 faSTLane

Android ListView addHeaderView 不适用于简单的 View

Android 网页 View 选择