当我向后滑动时,ViewPager2 中的 Fragment only sound 和 TextView 中没有视频

问题描述 投票:0回答:1

我正在使用 ViewPager2 在来自摄像机的 MediaPlayer (libVLC) 视频流中播放。当我向前滑动时,一切正常。但是当我向后滑动时,Fragment only 声音和 TextView 中没有视频。

这是Fragment的代码

`public class PageFragment extends Fragment{
@Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
        mediaPlayer = new MediaPlayer[3];
        pageNumber = getArguments() != null ? getArguments().getInt("num") : 1;
        libVlc = new LibVLC(getActivity());

        mediaPlayer[pageNumber] = new MediaPlayer(libVlc);
        urls = getResources().getStringArray(R.array.urls);
    }

    @Override
    public void onResume() {
        super.onResume();
        if  (!mediaPlayer[pageNumber].isPlaying()) {
            mediaPlayer[pageNumber].play();
            int st=mediaPlayer[pageNumber].getPlayerState();
            Log.i("Play"+pageNumber, String.valueOf(st));
        }
    }
    @Override
    public void onPause() {
        super.onPause();
        if  (mediaPlayer[pageNumber]!=null && mediaPlayer[pageNumber].isPlaying()) {
            mediaPlayer[pageNumber].pause();
            int st=mediaPlayer[pageNumber].getPlayerState();
            Log.i("Pause"+pageNumber, String.valueOf(st));
        }
    }

  public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View result=inflater.inflate(R.layout.fragment_page, container, false);
     
        TextView pageHeader = result.findViewById(R.id.displayText);
        String header = "Camera " + (pageNumber+1);
        pageHeader.setText(header);

        
            videoLayout = result.findViewById(R.id.videoLayout);
            mediaPlayer[pageNumber].attachViews(videoLayout, null, false, false);

            Media media = new Media(libVlc, Uri.parse(urls[pageNumber]));
            media.setHWDecoderEnabled(true, false);
            media.addOption(":network-caching=600");

            mediaPlayer[pageNumber].setMedia(media);
            media.release();
            mediaPlayer[pageNumber].play();
        

        return result;
    }
.....
}

这里是 Fragment 的布局

<TextView
    android:id="@+id/displayText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="500dp"
    android:textSize="22sp"
    app:layout_constraintLeft_toLeftOf="parent"
   app:layout_constraintRight_toRightOf="parent"/>

<org.videolan.libvlc.util.VLCVideoLayout
    android:id="@+id/videoLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:layout_constraintTop_toBottomOf="@id/displayText"
    android:layout_marginTop="50dp"/>

当 MainActivity 进入暂停状态然后返回前台时,也会发生同样的情况。

知道一些人如何解决这个麻烦吗? 谢谢你。

android libvlc
1个回答
0
投票

在这些情况下LibVLC会被丢弃,您需要更新libvlc对象。

© www.soinside.com 2019 - 2024. All rights reserved.