package com.basic.security.fragment; import android.content.pm.PackageManager; import android.graphics.Outline; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.ViewOutlineProvider; import android.widget.VideoView; import com.basic.security.base.BaseFragment; import com.basic.security.utils.Constants; import com.basic.security.utils.ResolutionAdaptation; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.UiThread; import org.androidannotations.annotations.ViewById; @EFragment public class VideoViewFragment extends BaseFragment { private static final int STORAGE_OK = 1023; @ViewById public VideoView videoView; @ViewById public View overlay; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(ResolutionAdaptation.fragment_video_view(), container, false); } @UiThread public void show() { super.show(); } @UiThread public void hide() { super.hide(); } @UiThread public void showOverlay() { try { if (overlay != null) { overlay.setVisibility(View.VISIBLE); } } catch (Exception e) { e.printStackTrace(); } } @UiThread public void hideOverlay() { try { if (overlay != null) { overlay.setVisibility(View.INVISIBLE); } } catch (Exception e) { e.printStackTrace(); } } @AfterViews public void afterViews() { if (ContextCompat.checkSelfPermission(mainActivity(), android.Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, STORAGE_OK); } else { playVideo(); } } public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case STORAGE_OK: playVideo(); break; default: break; } } private void playVideo() { if (Constants.indoorOutdoorInOne) { return; } if (Constants.stopCameraAndVideo) { return; } videoView.setOnErrorListener((mp, what, extra) -> true); videoView.setOutlineProvider(new ViewOutlineProvider() { public void getOutline(View view, Outline outline) { outline.setRoundRect(0, 0, view.getWidth(), view.getHeight(), getActivity().getResources().getDimension(com.basic.security.utils.RUtils.R_dimen_corner_radius)); } }); videoView.setClipToOutline(true); videoView.setVideoPath("/sdcard/face.mp4"); videoView.setOnCompletionListener(mp -> { // System1.out.println("VideoViewFragment.playVideo 1"); mp.start(); mp.setLooping(true); }); videoView.setOnPreparedListener(mp -> { // System1.out.println("VideoViewFragment.playVideo 2"); mp.start(); mp.setLooping(true); }); } @UiThread public void videoViewStart() { videoView.start(); } }