Exoplayer Recyclerview воспроизводит неправильное видео второй раз - PullRequest
0 голосов
/ 09 июля 2020

Я реализовал Exoplayer в режиме ресайклера. Допустим, есть два видео, когда я проигрываю первое видео, оно воспроизводится нормально.

*

Когда я проигрываю второе видео после приостановки первого видео, оно воспроизводится нормально. Но шкала времени на первом видео начинается, и если я приостанавливаю видео из первого просмотра видео, второе видео приостанавливается (может управлять вторым видео с первых видеоконтроллеров)

Теперь, если я приостановлю второе видео и воспроизвести первое видео, он просто воспроизводит второе видео, и я могу управлять этим видео с обоих контроллеров видео.

См. код просмотра ресайклера ниже:

public class ChatsCursorAdapter extends RecyclerView.Adapter<ChatsCursorAdapter.ChatsHolder> {

    public SimpleExoPlayer exoPlayer;
    private Cursor mCursor;
    private Context mContext;

    public ChatsCursorAdapter(Cursor mCursor,
                              Context mContext) {
        this.mCursor = mCursor;
        this.mContext = mContext;
    }

    @NonNull
    @Override
    public ChatsHolder onCreateViewHolder(@NonNull ViewGroup viewGroup,
                                          int i) {

        View V = LayoutInflater.from(viewGroup.getContext())
                               .inflate(R.layout.list_chat_message,
                                        viewGroup,
                                        false);

        // Build The Exoplayer
        exoPlayer = new SimpleExoPlayer.Builder(mContext).build();

        return new ChatsHolder(V);
    }

    @Override
    public void onBindViewHolder(@NonNull final ChatsHolder chatsHolder,
                                 final int i) {

        String url = mCursor.getString(mCursor.getColumnIndex("url"));

        // Play Video When Play Button Clicked
        chatsHolder.ivSharedImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                try {

                    Uri videoUri = Uri.parse(url);

                    chatsHolder.sevSharedVideo.setPlayer(exoPlayer);

                    // Produces DataSource instances through which media data is loaded.
                    DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(mContext,
                                                                                        Util.getUserAgent(mContext,
                                                                                                          "Dackeree"));
                    // This is the MediaSource representing the media to be played.
                    MediaSource videoSource = new ProgressiveMediaSource.Factory(dataSourceFactory).createMediaSource(videoUri);
                    // Prepare the player with the source.

                    exoPlayer.prepare(videoSource);
                    exoPlayer.setPlayWhenReady(true);
                } catch (Exception e) {

                    Toast.makeText(mContext,
                                   "Some Error Occurred...",
                                   Toast.LENGTH_SHORT)
                         .show();
                }
            }
        });
    }

    @Override
    public int getItemCount() {

        return mCursor.getCount();
    }

    public class ChatsHolder extends RecyclerView.ViewHolder {

        final ImageView ivSharedImage;
        final PlayerView sevSharedVideo;

        ChatsHolder(View view) {

            super(view);

            ivSharedImage = view.findViewById(R.id.l_chat_message_iv_shared_image);
            sevSharedVideo = view.findViewById(R.id.l_chat_message_sev_shared_video);
        }
    }
}
* 1009 publi c, чтобы его можно было остановить / освободить от других действий onStop, onPause. Чтобы видео не воспроизводилось после выхода из занятия.

Пожалуйста, помогите мне, чтобы каждое видео воспроизводилось правильно.

1 Ответ

0 голосов
/ 10 июля 2020

Я создал репозиторий в Kotlin с разными функциями, одно из них - Recyclerview видео, которые я разветвил из этого видео: https://www.youtube.com/watch?v=z44CLCafepA

...