Stop exo player video from playing when exit from

2020-07-27 03:55发布

I am using Exo-Player.My video is playing fine but when i press back button and exit from activity my video keeps on playing in background.I don't how to stop it from playing when activity is finished.Please help

This is my code for exo player in recycler view adaptor

 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;
        }
    });

标签: android
3条回答
甜甜的少女心
2楼-- · 2020-07-27 04:17

In your activity, locate onBackPress() method and add player.stop();

        @Override
        public void onClick(View v) {
            onBackPressed(); 

            player.stop();  //stop exoplayer video
        }
查看更多
何必那么认真
3楼-- · 2020-07-27 04:24

in Your adapter - make player a public class member.

in Your activivty onStop() add: yourAdapter.player.stopPlayback();

查看更多
smile是对你的礼貌
4楼-- · 2020-07-27 04:32

Ok Pavel B. gave the right answer but I am elaborating and making it clearer...

Adapter

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();

        }

    }
}
查看更多
登录 后发表回答