确保视频列表中只播放一个视频

时间:2016-07-05 14:29:14

标签: java android video

我正在使用适配器将所有视频添加到列表中。如何确保一旦启动另一个视频视图,所有其他视频视图就会停止。

我在视频视图中使用了类似动画的flipboard-board,因此在任何给定时间内只能看到列表中的一个视频。

我可以覆盖与媒体播放器关联的触摸侦听器吗?或者我应该尝试将创建的视频视图引用的所有实例添加到静态列表中吗? (虽然,我读到这可能导致内存问题)

具体来说,我正在使用exomedia,但我认为他们会在Media Player中使用类似的方法。

我试图创建某种触摸侦听器,但它有尴尬的行为,因为它检查任何触摸,实际上它应该只停止用户拖动屏幕播放并完全切换到下一个视频。 (我考虑使用拖拽监听器,但我认为它仍然会有尴尬的行为,因为它并没有真正解决问题)。

我也尝试过使用VISIBILITY.VISIBLE,但这似乎不起作用(至少我是如何编码的。)

这是来自适配器(videoList是一个List):

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    View flipView = convertView;

    if (convertView == null) {
        LayoutInflater inflater = ((Activity) mContext).getLayoutInflater();
        flipView = inflater.inflate(layoutResourceId, parent, false);
    }

    final EMVideoView emVideoView = (EMVideoView) flipView.findViewById(R.id.video_view);
    emVideoView.setVideoURI(Uri.parse(videoURL[position]));
    emVideoView.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            if(emVideoView.isPlaying()){
                numOfVidsPlaying++;
            }
            if(!emVideoView.isPlaying()){
                numOfVidsPlaying--;
            }
            if(numOfVidsPlaying>1){
                emVideoView.stopPlayback();
                numOfVidsPlaying--;
            }
            return false;
        }
    });

    return flipView;
}

这是布局:     

<com.devbrackets.android.exomedia.ui.widget.EMVideoView
    android:id="@+id/video_view"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    EMVideoView:useDefaultControls="true" />

</LinearLayout>

这是主要的“活动”(片段):

public VideoViewFragment() {
    super();
}

private FlipViewController flipView;
private String[] videoURL;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int videoCount = getActivity().getIntent().getExtras().getInt("videoCount");
    videoURL = new String[videoCount + 1];
    videoURL[0] = getActivity().getIntent().getExtras().getString("videoURL");  //TODO Make a not found exception error
    int i;
    for (i = 0; i < videoCount; ++i) {
        videoURL[i + 1] = getActivity().getIntent().getExtras().getString(("otherURL" + i));
    }
    for (int k = 0; k < videoURL.length; ++k) {
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    flipView = new FlipViewController(inflater.getContext(), FlipViewController.VERTICAL);
    flipView.setAdapter(new VideoViewAdapter(getActivity(), R.layout.exo_video_view, videoURL));

    return flipView;

}

0 个答案:

没有答案