android.widget.VideoView

Here are the examples of the java api android.widget.VideoView taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.

121 Examples 7

19 Source : Activity_VideoSurveillance.java
with Apache License 2.0
from yangxch

public clreplaced Activity_VideoSurveillance extends BaseActivity {

    private VideoView videoViewVideo;

    private ProgressDialog pg;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_surveillance);
        initView();
    }

    private void initView() {
        pg = new ProgressDialog(Activity_VideoSurveillance.this);
        pg.setMessage("缓冲中...");
        pg.show();
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        toolbar.setreplacedle("");
        TextView toolbarText = (TextView) findViewById(R.id.toolbar_text);
        toolbarText.setText("视频监控");
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }
        if (!Util.checkNetwork(this)) {
            return;
        }
        videoViewVideo = (VideoView) findViewById(R.id.videoViewVideo);
        try {
            // 设置视频控制器
            MediaController mediacontroller = new MediaController(Activity_VideoSurveillance.this);
            mediacontroller.setAnchorView(videoViewVideo);
            videoViewVideo.setMediaController(mediacontroller);
            // 视频来源
            videoViewVideo.setVideoURI(Uri.parse("http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4"));
        } catch (Exception e) {
            e.printStackTrace();
            pg.dismiss();
        }
        videoViewVideo.requestFocus();
        videoViewVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            // Close the progress bar and play the video
            public void onPrepared(MediaPlayer mp) {
                pg.dismiss();
                // 开始播放视频
                videoViewVideo.start();
            }
        });
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch(item.gereplacedemId()) {
            case android.R.id.home:
                finish();
                break;
            default:
                break;
        }
        return true;
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
}

19 Source : VideoViewSeekBar.java
with Apache License 2.0
from yangwencan2002

/**
 * 视频进度和拖拽条
 *
 * @author vincanyang
 */
public clreplaced VideoViewSeekBar extends android.support.v7.widget.AppCompatSeekBar {

    private VideoView mVideoView;

    private final VideoProgressUpdateHandler mVideoProgressUpdateHandler = new VideoProgressUpdateHandler();

    private int mVideoCurrentPosition;

    public VideoViewSeekBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        setMax(100);
        setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
                if (mVideoView != null) {
                    int offset = mVideoView.getDuration() * getProgress() / getMax();
                    mVideoView.seekTo(offset);
                }
            }
        });
    }

    public void setVideoView(VideoView videoView) {
        mVideoView = videoView;
    }

    public void start() {
        mVideoView.seekTo(mVideoCurrentPosition);
        mVideoView.start();
        mVideoProgressUpdateHandler.start();
    }

    public void stop() {
        mVideoCurrentPosition = mVideoView.getCurrentPosition();
        mVideoView.pause();
        mVideoProgressUpdateHandler.stop();
    }

    private final clreplaced VideoProgressUpdateHandler extends Handler {

        private int WHAT = 0;

        public void start() {
            sendEmptyMessage(WHAT);
        }

        public void stop() {
            removeMessages(WHAT);
        }

        @Override
        public void handleMessage(Message msg) {
            if (mVideoView != null) {
                int playProgress = mVideoView.getCurrentPosition() * getMax() / mVideoView.getDuration();
                setProgress(playProgress);
                sendEmptyMessageDelayed(0, 500);
            }
        }
    }
}

19 Source : VideoViewSeekBar.java
with Apache License 2.0
from yangwencan2002

public void setVideoView(VideoView videoView) {
    mVideoView = videoView;
}

19 Source : GPVideoPlayerActivity.java
with Apache License 2.0
from yangchaojiang

public clreplaced GPVideoPlayerActivity extends Activity {

    VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gpvideoplayer);
        videoView = findViewById(R.id.gpVideo);
        videoView.setVideoPath(getIntent().getStringExtra("url"));
        videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Toast.makeText(GPVideoPlayerActivity.this, R.string.Playback_failed, Toast.LENGTH_SHORT).show();
                return false;
            }
        });
        videoView.start();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (!videoView.isPlaying()) {
            videoView.start();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        videoView.pause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        videoView.stopPlayback();
    }

    /**
     * 启动播放视频
     * @param   context context
     * @param  url url
     * **
     */
    public static void startActivity(Context context, String url) {
        Intent intent = new Intent(context, GPVideoPlayerActivity.clreplaced);
        intent.putExtra("url", url);
        context.startActivity(intent);
    }
}

19 Source : VideoPlayerActivity.java
with Apache License 2.0
from xuexiangjys

/**
 * 视频播放界面
 *
 * @author xuexiang
 * @since 2018/12/5 上午11:49
 */
public clreplaced VideoPlayerActivity extends AppCompatActivity {

    public static final String KEY_URL = "com.xuexiang.xui.widget.preview.KEY_URL";

    private VideoView mVideoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.preview_activity_video_player);
        mVideoView = findViewById(R.id.video);
        String videoPath = getIntent().getStringExtra(KEY_URL);
        if (TextUtils.isEmpty(videoPath)) {
            Toast.makeText(VideoPlayerActivity.this, R.string.xui_preview_video_path_error, Toast.LENGTH_SHORT).show();
            finish();
            return;
        }
        mVideoView.setVideoPath(videoPath);
        mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                Toast.makeText(VideoPlayerActivity.this, R.string.xui_preview_play_failed, Toast.LENGTH_SHORT).show();
                return false;
            }
        });
        mVideoView.start();
        findViewById(R.id.rl_root).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
                recycle();
            }
        });
    }

    private void recycle() {
        if (mVideoView != null) {
            mVideoView.stopPlayback();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (mVideoView != null && !mVideoView.isPlaying()) {
            mVideoView.start();
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (mVideoView != null) {
            mVideoView.pause();
        }
    }

    @Override
    protected void onStop() {
        if (isFinishing()) {
            recycle();
        }
        super.onStop();
    }

    /**
     * 启动播放视频
     * @param fragment context
     * @param url url
     */
    public static void start(Fragment fragment, String url) {
        Intent intent = new Intent(fragment.getContext(), VideoPlayerActivity.clreplaced);
        intent.putExtra(KEY_URL, url);
        fragment.startActivity(intent);
    }
}

19 Source : RTSPlayerActivity.java
with MIT License
from wossoneri

public clreplaced RTSPlayerActivity extends AppCompatActivity {

    @BindView(R.id.videoView)
    VideoView mVideoView;

    private String mURL = "rtsp://118.25.39.144/sample_h264_1mbit.mp4";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_rtsplayer);
        ButterKnife.bind(this);
        mVideoView.setVideoPath(mURL);
        mVideoView.requestFocus();
        mVideoView.start();
    }
}

19 Source : AboutActivity.java
with GNU General Public License v3.0
from victordiaz

public clreplaced AboutActivity extends BaseActivity {

    private static final String TAG = AboutActivity.clreplaced.getSimpleName();

    private VideoView videoView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.about_activity);
        setupActivity();
        ImageButton btnPatreon = findViewById(R.id.btnPatreon);
        ImageButton btnBuyMeACoffee = findViewById(R.id.btnBuyMeACoffee);
        btnPatreon.setOnClickListener(view -> openLink("https://www.patreon.com/victornomad"));
        btnBuyMeACoffee.setOnClickListener(view -> openLink("https://www.buymeacoffee.com/victordiaz"));
        TextView phonkVersionName = findViewById(R.id.versionName);
        phonkVersionName.setText(BuildConfig.VERSION_NAME);
        videoView = findViewById(R.id.videoView);
        String videoURI = "android.resource://" + getPackageName() + "/" + R.raw.phonk;
        videoView.setVideoURI(Uri.parse(videoURI));
        // videoView.setBackgroundColor(Color.WHITE);
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                mediaPlayer.setLooping(true);
                videoView.setBackgroundColor(Color.TRANSPARENT);
            // videoView.setZOrderOnTop(true);
            }
        });
        videoView.start();
    }

    private void openLink(String url) {
        Intent i = new Intent(Intent.ACTION_VIEW);
        i.setData(Uri.parse(url));
        startActivity(i);
    }

    @Override
    protected void setupActivity() {
        super.setupActivity();
        enableBackOnToolbar();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.start();
    }
}

19 Source : VideoActivity.java
with Apache License 2.0
from tangpeng

public clreplaced VideoActivity extends AppCompatActivity {

    private VideoView vvVideo;

    String geturl = "";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        vvVideo = (VideoView) findViewById(R.id.vvVideo);
        geturl = getIntent().getStringExtra("vvVideo");
        vvVideo.setVideoPath(geturl);
        vvVideo.start();
    }
}

19 Source : PhotoVideoRedirectActivity.java
with MIT License
from spaceoamit

/**
 * Created by sotsys016-2 on 13/8/16 in com.cnc3camera.
 */
public clreplaced PhotoVideoRedirectActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_photovideo_redirect);
        init();
    }

    VideoView videoView;

    private void init() {
        ImageView imgShow = (ImageView) findViewById(R.id.imgShow);
        videoView = (VideoView) findViewById(R.id.vidShow);
        if (getIntent().getStringExtra("WHO").equalsIgnoreCase("Image")) {
            imgShow.setVisibility(View.VISIBLE);
            Glide.with(PhotoVideoRedirectActivity.this).load(getIntent().getStringExtra("PATH")).listener(new RequestListener<String, GlideDrawable>() {

                @Override
                public boolean onException(Exception e, String model, Target<GlideDrawable> target, boolean isFirstResource) {
                    return false;
                }

                @Override
                public boolean onResourceReady(GlideDrawable resource, String model, Target<GlideDrawable> target, boolean isFromMemoryCache, boolean isFirstResource) {
                    return false;
                }
            }).placeholder(R.drawable.ic_photo_cont).into(imgShow);
        } else {
            videoView.setVisibility(View.VISIBLE);
            try {
                videoView.setMediaController(null);
                videoView.setVideoURI(Uri.parse(getIntent().getStringExtra("PATH")));
            } catch (Exception e) {
                e.printStackTrace();
            }
            videoView.requestFocus();
            // videoView.setZOrderOnTop(true);
            videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

                public void onPrepared(MediaPlayer mp) {
                    videoView.start();
                }
            });
            videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

                @Override
                public void onCompletion(MediaPlayer mp) {
                    videoView.start();
                }
            });
        }
    }

    @Override
    public void onBackPressed() {
        if (videoView.isPlaying()) {
            videoView.pause();
        }
        super.onBackPressed();
    }
}

19 Source : PageVideoViewer.java
with Apache License 2.0
from MobClub

/**
 * 打开视频文件
 */
public clreplaced PageVideoViewer extends PageAttachmentViewer {

    private VideoView videoView;

    protected View initViewerContentView(Context context) {
        RelativeLayout rl = new RelativeLayout(context);
        videoView = new VideoView(context);
        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        rlp.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
        rl.addView(videoView, rlp);
        return rl;
    }

    protected void loadContent(String filePath, String extension, LoadContentListener loadContentListener) {
        // 显示使用其它应用打开的入口,并使用videoView打开
        try {
            Uri uri = Uri.fromFile(new File(filePath));
            videoView.setMediaController(new MediaController(getContext()));
            videoView.setVideoURI(uri);
            videoView.requestFocus();
            loadContentListener.onLoadFinished(true);
        } catch (Throwable t) {
            loadContentListener.onLoadFinished(false);
        }
    }

    public void onResume() {
        super.onResume();
    }

    public void onPause() {
        try {
            if (videoView != null && videoView.isPlaying()) {
                videoView.pause();
            }
        } catch (Throwable t) {
            t.printStackTrace();
        }
        super.onPause();
    }

    public void onDestroy() {
        if (videoView != null) {
            try {
                videoView.stopPlayback();
            } catch (Throwable t) {
                t.printStackTrace();
            }
            videoView = null;
        }
        super.onDestroy();
    }
}

19 Source : VideoActivity.java
with MIT License
from maxiaozhou1234

/**
 * Created by ZhOu on 2018/4/18.
 */
public clreplaced VideoActivity extends BaseActivity {

    private VideoView videoView;

    private boolean stop = false;

    @Override
    protected void setContentView() {
        setContentView(R.layout.activity_video);
    }

    @Override
    protected void init() {
        videoView = (VideoView) findViewById(R.id.videoView);
        String path = Environment.getExternalStorageDirectory() + "/Pictures/test.mp4";
        File file = new File(path);
        if (!file.exists()) {
            path = "android.resource://" + getPackageName() + "/" + R.raw.test_2;
        }
        videoView.setVideoURI(Uri.parse(path));
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setVolume(0f, 0f);
            }
        });
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                if (stop)
                    return;
                videoView.start();
            }
        });
        videoView.start();
    }

    @Override
    protected void addListener() {
    }

    @Override
    public void back() {
        if (videoView != null) {
            stop = true;
            try {
                videoView.stopPlayback();
                videoView = null;
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        super.back();
    }
}

19 Source : JavaVideoActivity.java
with MIT License
from LeslieCorrea

public clreplaced JavaVideoActivity extends AppCompatActivity {

    VideoView mVideoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_java_video);
        mVideoView = (VideoView) this.findViewById(R.id.SampleVideoView);
        MediaController mediaController = new MediaController(this);
        mVideoView.setMediaController(mediaController);
        mVideoView.setVideoPath("content://com.example.lesliecorrea.videoapp/big_buck_bunny.mp4");
        mVideoView.start();
    }
}

19 Source : VideoActivity.java
with MIT License
from jpush

public clreplaced VideoActivity extends Activity {

    public static final String VIDEO_PATH = "VIDEO_PATH";

    private VideoView mVideoView;

    private int mSavedCurrentPosition;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        String videoPath = getIntent().getStringExtra(VIDEO_PATH);
        mVideoView = (VideoView) findViewById(R.id.videoview_video);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(mVideoView);
        mVideoView.setMediaController(mediaController);
        mVideoView.setVideoPath(videoPath);
        mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mVideoView.requestLayout();
                if (mSavedCurrentPosition != 0) {
                    mVideoView.seekTo(mSavedCurrentPosition);
                    mSavedCurrentPosition = 0;
                } else {
                    play();
                }
            }
        });
        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                mVideoView.setKeepScreenOn(false);
            }
        });
    }

    @Override
    protected void onResume() {
        super.onResume();
        mVideoView.resume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mSavedCurrentPosition = mVideoView.getCurrentPosition();
        mVideoView.pause();
    }

    @Override
    protected void onStop() {
        super.onStop();
        pause();
    }

    private void play() {
        mVideoView.start();
        mVideoView.setKeepScreenOn(true);
    }

    private void pause() {
        mVideoView.pause();
        mVideoView.setKeepScreenOn(false);
    }
}

19 Source : PlayerActivity.java
with Apache License 2.0
from jmrobles

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 */
public clreplaced PlayerActivity extends AppCompatActivity {

    private String url;

    private String label;

    private VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_player);
        videoView = (VideoView) findViewById(R.id.videoView);
        Intent i = getIntent();
        Bundle extras = i.getExtras();
        if (extras.getString(Constants.LABEL) != null && extras.getString(Constants.URL) != null) {
            url = extras.getString(Constants.URL);
            label = extras.getString(Constants.LABEL);
            play(label, url);
        }
    }

    private void play(String label, String url) {
        setreplacedle(label);
        videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mediaPlayer, int what, int extra) {
                Toast.makeText(PlayerActivity.this, "Error: " + what + " - extra: " + extra, Toast.LENGTH_LONG).show();
                return false;
            }
        });
        // MediaController mc = new MediaController(this);
        videoView.setVideoURI(Uri.parse(url));
        // videoView.setMediaController(mc);
        videoView.requestFocus();
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                mediaPlayer.start();
            }
        });
    // videoView.start();
    }
}

19 Source : VideoViewDemo.java
with Apache License 2.0
from jiyouliang

public clreplaced VideoViewDemo extends Activity {

    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.videoview);
        mVideoView = (VideoView) findViewById(R.id.surface_view);
        initPlayer(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videoviewdemo));
        mVideoView.setOnDragListener(mDragListener);
    }

    private void initPlayer(Uri uri) {
        mVideoView.setVideoURI(uri);
        mVideoView.setMediaController(new MediaController(this));
        mVideoView.requestFocus();
    }

    private View.OnDragListener mDragListener = new View.OnDragListener() {

        @Override
        public boolean onDrag(View v, DragEvent event) {
            if (event.getAction() != DragEvent.ACTION_DROP) {
                return true;
            }
            ClipData clipData = event.getClipData();
            if (clipData.gereplacedemCount() != 1) {
                return false;
            }
            ClipData.Item item = clipData.gereplacedemAt(0);
            Uri uri = item.getUri();
            if (uri == null) {
                return false;
            }
            if (requestDragAndDropPermissions(event) == null) {
                return false;
            }
            initPlayer(uri);
            mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

                public void onPrepared(MediaPlayer mediaPlayer) {
                    mVideoView.start();
                }
            });
            return true;
        }
    };
}

19 Source : PageTrim.java
with Apache License 2.0
from JessYanCoding

public void playVideo(boolean isPlay, VideoView videoView) {
    if (mContainer != null) {
        mContainer.playVideo(isPlay, videoView);
    }
}

19 Source : VideoPlayerActivity.java
with GNU General Public License v3.0
from bidmachine

public clreplaced VideoPlayerActivity extends Activity implements MediaPlayer.OnCompletionListener, MediaPlayer.OnErrorListener, MediaPlayer.OnPreparedListener {

    private final static String FILE_URI = "io.bidmachine.fileUri";

    private final static String SEEK_TO = "io.bidmachine.seekTo";

    private int seekTo;

    private VideoView videoView;

    private VideoPlayerActivityListener listener;

    interface VideoPlayerActivityListener {

        void videoPlayerActivityClosed(int position, boolean finished);
    }

    public static Intent getIntent(Context packageContext, String fileUri, int seekTo) {
        Intent intent = new Intent(packageContext, VideoPlayerActivity.clreplaced);
        intent.putExtra(FILE_URI, fileUri);
        intent.putExtra(SEEK_TO, seekTo);
        return intent;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        Intent intent = getIntent();
        String fileUri = intent.getStringExtra(FILE_URI);
        seekTo = intent.getIntExtra(SEEK_TO, 0);
        Logger.log(String.format("VideoPlayerActivity started, position: %s", seekTo));
        if (fileUri == null) {
            return;
        }
        listener = MediaView.listener;
        RelativeLayout rootLayout = new RelativeLayout(this);
        RelativeLayout.LayoutParams rootViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        rootLayout.setLayoutParams(rootViewParams);
        videoView = new VideoView(this);
        RelativeLayout.LayoutParams videoViewParams = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        videoViewParams.addRule(RelativeLayout.CENTER_IN_PARENT);
        videoView.setLayoutParams(videoViewParams);
        videoView.setOnCompletionListener(this);
        videoView.setOnPreparedListener(this);
        videoView.setVideoPath(fileUri);
        rootLayout.addView(videoView);
        CircleCountdownView closeButton = new CircleCountdownView(this, replacedets.mainreplacedetsColor, replacedets.backgroundColor);
        int closeButtonSize = Math.round(50 * getScreenDensity(this));
        RelativeLayout.LayoutParams closeButtonParams = new RelativeLayout.LayoutParams(closeButtonSize, closeButtonSize);
        closeButtonParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE);
        closeButtonParams.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE);
        closeButton.setImage(replacedets.getBitmapFromBase64(replacedets.close));
        closeButton.setLayoutParams(closeButtonParams);
        closeButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                closeClicked();
            }
        });
        rootLayout.addView(closeButton);
        setContentView(rootLayout);
    }

    private void finishActivity() {
        runOnUiThread(new Runnable() {

            public void run() {
                try {
                    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                } catch (Exception e) {
                    Logger.log(e);
                }
            }
        });
        finish();
    }

    @Override
    public void onCompletion(MediaPlayer mp) {
        if (listener != null) {
            listener.videoPlayerActivityClosed(0, true);
        }
        this.finishActivity();
    }

    @Override
    public boolean onError(MediaPlayer mp, int what, int extra) {
        this.finishActivity();
        return false;
    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        if (videoView != null && videoView.canSeekForward()) {
            videoView.seekTo(seekTo);
            videoView.start();
        }
    }

    @Override
    public void onBackPressed() {
        closeClicked();
    }

    private void closeClicked() {
        if (listener != null) {
            int currentPosition = 0;
            if (videoView.isPlaying()) {
                currentPosition = videoView.getCurrentPosition();
            }
            listener.videoPlayerActivityClosed(currentPosition, false);
        }
        finishActivity();
    }
}

19 Source : VideoActivity.java
with MIT License
from AnyPeer

public clreplaced VideoActivity extends AppCompatActivity {

    public static final String PATH = "path";

    private VideoView videoView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video);
        findViewById(R.id.icon_back).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }
        });
        videoView = findViewById(R.id.video);
        videoView.setVideoURI(Uri.parse(getIntent().getStringExtra(PATH)));
        videoView.start();
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                videoView.start();
            }
        });
    }
}

18 Source : VideoViewContainerHelper.java
with Apache License 2.0
from zhouhuandev

/**
 * Time: 2019/9/30 9:45
 * Author:ypx
 * Description: 视频播放
 */
public clreplaced VideoViewContainerHelper {

    private VideoView videoView;

    private ImageView previewImg;

    private ImageView pauseImg;

    public void loadVideoView(ViewGroup parent, ImageItem imageItem, IPickerPresenter presenter, PickerUiConfig uiConfig) {
        Context context = parent.getContext();
        if (videoView == null) {
            videoView = new VideoView(context);
            videoView.setBackgroundColor(Color.TRANSPARENT);
            FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            params.gravity = Gravity.CENTER;
            videoView.setLayoutParams(params);
            previewImg = new ImageView(context);
            previewImg.setLayoutParams(params);
            previewImg.setScaleType(ImageView.ScaleType.FIT_CENTER);
            pauseImg = new ImageView(context);
            pauseImg.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
            pauseImg.setImageDrawable(context.getResources().getDrawable(uiConfig.getVideoPauseIconID()));
            FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            params2.gravity = Gravity.CENTER;
            pauseImg.setLayoutParams(params2);
        }
        pauseImg.setVisibility(View.GONE);
        parent.removeAllViews();
        parent.addView(videoView);
        parent.addView(previewImg);
        parent.addView(pauseImg);
        previewImg.setVisibility(View.VISIBLE);
        presenter.displayImage(previewImg, imageItem, 0, false);
        videoView.setVideoPath(imageItem.path);
        videoView.start();
        // 监听视频播放完的代码
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mPlayer) {
                mPlayer.start();
                mPlayer.setLooping(true);
            }
        });
        videoView.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (videoView.isPlaying()) {
                    onPause();
                } else {
                    onResume();
                }
            }
        });
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {

                    @Override
                    public void onSeekComplete(MediaPlayer mp) {
                        videoView.start();
                    }
                });
                mp.setOnInfoListener(new MediaPlayer.OnInfoListener() {

                    @Override
                    public boolean onInfo(MediaPlayer mp, int what, int extra) {
                        if (what == MediaPlayer.MEDIA_INFO_VIDEO_RENDERING_START) {
                            // video 视屏播放的时候把背景设置为透明
                            videoView.setBackgroundColor(Color.TRANSPARENT);
                            previewImg.setVisibility(View.GONE);
                            return true;
                        }
                        return false;
                    }
                });
            }
        });
    }

    public void onResume() {
        if (videoView != null && pauseImg != null) {
            videoView.start();
            videoView.seekTo(videoView.getCurrentPosition());
            pauseImg.setVisibility(View.GONE);
        }
    }

    public void onPause() {
        if (videoView != null && pauseImg != null) {
            videoView.pause();
            pauseImg.setVisibility(View.VISIBLE);
        }
    }

    public void onDestroy() {
        if (videoView != null) {
            // 将VideoView所占用的资源释放掉
            videoView.suspend();
        }
    }
}

18 Source : PreviewActivity.java
with Apache License 2.0
from yellowcath

/**
 * Created by Bhuvnesh on 08-03-2017.
 */
public clreplaced PreviewActivity extends AppCompatActivity {

    private VideoView videoView;

    private SeekBar seekBar;

    private int stopPosition;

    static final String KEY_URI = "uri";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preview);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        videoView = (VideoView) findViewById(R.id.videoView);
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
        Uri uri = getIntent().getParcelableExtra(KEY_URI);
        String videoInfo = "";
        try {
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            retriever.setDataSource(this, uri);
            int bitrate = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
            retriever.release();
            MediaExtractor extractor = new MediaExtractor();
            extractor.setDataSource(this, uri, null);
            MediaFormat format = extractor.getTrackFormat(VideoUtil.selectTrack(extractor, false));
            int frameRate = format.containsKey(MediaFormat.KEY_FRAME_RATE) ? format.getInteger(MediaFormat.KEY_FRAME_RATE) : -1;
            float aveFrameRate = VideoUtil.getAveFrameRate(new VideoProcessor.MediaSource(this, uri));
            int width = format.getInteger(MediaFormat.KEY_WIDTH);
            int height = format.getInteger(MediaFormat.KEY_HEIGHT);
            int rotation = format.containsKey(MediaFormat.KEY_ROTATION) ? format.getInteger(MediaFormat.KEY_ROTATION) : -1;
            long duration = format.containsKey(MediaFormat.KEY_DURATION) ? format.getLong(MediaFormat.KEY_DURATION) : -1;
            videoInfo = String.format(Locale.ENGLISH, "size:%dX%d,framerate:%d,aveFrameRate:%f,rotation:%d,bitrate:%d,duration:%.1fs", width, height, frameRate, aveFrameRate, rotation, bitrate, duration / 1000f / 1000f);
            extractor.release();
        } catch (Exception e) {
            e.printStackTrace();
        }
        tvInstruction.setText(String.format(Locale.ENGLISH, "Video stored at \nUri %s\nPath:%s\n%s", uri, PathUtil.getPath(this, uri), videoInfo));
        videoView.setVideoURI(uri);
        videoView.start();
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);
                seekBar.setMax(videoView.getDuration());
                seekBar.postDelayed(onEverySecond, 1000);
            }
        });
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser) {
                    // this is when actually seekbar has been seeked to a new position
                    videoView.seekTo(progress);
                }
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        // stopPosition is an int
        stopPosition = videoView.getCurrentPosition();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.seekTo(stopPosition);
        videoView.start();
    }

    private Runnable onEverySecond = new Runnable() {

        @Override
        public void run() {
            if (seekBar != null) {
                seekBar.setProgress(videoView.getCurrentPosition());
            }
            if (videoView.isPlaying()) {
                seekBar.postDelayed(onEverySecond, 1000);
            }
        }
    };

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.gereplacedemId() == android.R.id.home) {
            // close this activity and return to preview activity (if there is any)
            finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

18 Source : VideoPagerFragment.java
with Apache License 2.0
from yangwencan2002

/**
 * 用于ViewPager的VideoFragment
 *
 * @author vincanyang
 */
public clreplaced VideoPagerFragment extends Fragment implements DownloadListener {

    private static final String TAG = VideoPagerFragment.clreplaced.getSimpleName();

    private static final String BUNDLE_KEY_URL = "url";

    private VideoView mVideoView;

    private VideoViewSeekBar mVideoViewSeekBar;

    private String mUrl;

    private boolean mIsVisibleForUser;

    private MediaLoader mMediaLoader;

    public static Fragment getInstance(String url) {
        VideoPagerFragment fragment = new VideoPagerFragment();
        Bundle args = new Bundle();
        args.putString(BUNDLE_KEY_URL, url);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_media, container, false);
        mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
        mVideoViewSeekBar = (VideoViewSeekBar) rootView.findViewById(R.id.mediaSeekBar);
        mVideoViewSeekBar.setVideoView(mVideoView);
        mUrl = getArguments().getString(BUNDLE_KEY_URL);
        mMediaLoader = MediaLoader.getInstance(getContext());
        mMediaLoader.addDownloadListener(mUrl, this);
        boolean isCached = mMediaLoader.isCached(mUrl);
        if (isCached) {
            mVideoViewSeekBar.setSecondaryProgress(mVideoViewSeekBar.getMax());
        }
        mVideoView.setVideoPath(mMediaLoader.getProxyUrl(mUrl));
        return rootView;
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        mIsVisibleForUser = isVisibleToUser;
        if (mIsVisibleForUser) {
            if (mVideoViewSeekBar != null) {
                mVideoViewSeekBar.start();
            }
        } else {
            if (mVideoViewSeekBar != null) {
                mVideoViewSeekBar.stop();
            }
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mVideoViewSeekBar != null) {
            if (mIsVisibleForUser) {
                mVideoViewSeekBar.start();
            }
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mVideoViewSeekBar != null) {
            mVideoViewSeekBar.stop();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mVideoView.stopPlayback();
        mMediaLoader.removeDownloadListener(mUrl, this);
    }

    @Override
    public void onProgress(String url, File file, int progress) {
        mVideoViewSeekBar.setSecondaryProgress(progress);
        Log.e(TAG, "Url " + url + " download progress:" + progress);
    }

    @Override
    public void onError(Throwable e) {
    }
}

18 Source : VideoLazyLoadFragment.java
with Apache License 2.0
from yangwencan2002

/**
 * 播放音视频的懒加载Fragment
 *
 * @author vincanyang
 */
public clreplaced VideoLazyLoadFragment extends BaseLazyLoadFragment implements DownloadListener {

    private static final String TAG = VideoLazyLoadFragment.clreplaced.getSimpleName();

    private static final String BUNDLE_KEY_URL = "url";

    private VideoView mVideoView;

    private VideoViewSeekBar mVideoViewSeekBar;

    private MediaLoader mMediaLoader;

    private String mUrl;

    private boolean mIsVideoPathSet;

    public static Fragment getInstance(String url) {
        VideoLazyLoadFragment fragment = new VideoLazyLoadFragment();
        Bundle args = new Bundle();
        args.putString(BUNDLE_KEY_URL, url);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_media, container, false);
        mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
        mVideoViewSeekBar = (VideoViewSeekBar) rootView.findViewById(R.id.mediaSeekBar);
        mVideoViewSeekBar.setVideoView(mVideoView);
        mUrl = getArguments().getString(BUNDLE_KEY_URL);
        mMediaLoader = MediaLoader.getInstance(getContext());
        mMediaLoader.addDownloadListener(mUrl, this);
        boolean isCached = mMediaLoader.isCached(mUrl);
        if (isCached) {
            mVideoViewSeekBar.setSecondaryProgress(mVideoViewSeekBar.getMax());
        }
        return rootView;
    }

    @Override
    protected void onFragmentVisible() {
        super.onFragmentVisible();
        if (!mIsVideoPathSet) {
            String proxyUrl = mMediaLoader.getProxyUrl(mUrl);
            Log.e(TAG, "Use new proxy mUrl " + proxyUrl + " instead of old mUrl " + mUrl);
            // 该方法调用后会发起视频下载请求
            mVideoView.setVideoPath(proxyUrl);
            mIsVideoPathSet = true;
        }
        if (mVideoViewSeekBar != null) {
            mVideoViewSeekBar.start();
        }
    }

    @Override
    protected void onFragmentInVisible() {
        super.onFragmentInVisible();
        if (mVideoViewSeekBar != null) {
            mVideoViewSeekBar.stop();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mVideoView.stopPlayback();
        mMediaLoader.removeDownloadListener(mUrl, this);
    }

    @Override
    public void onProgress(String url, File file, int progress) {
        mVideoViewSeekBar.setSecondaryProgress(progress);
        Log.e(TAG, "Url " + url + " download progress:" + progress);
    }

    @Override
    public void onError(Throwable e) {
    }
}

18 Source : MediaFragment.java
with Apache License 2.0
from yangwencan2002

/**
 * 播放音视频的Fragment,带有进度条
 *
 * @author vincanyang
 */
public clreplaced MediaFragment extends Fragment implements DownloadListener {

    private static final String TAG = MediaFragment.clreplaced.getSimpleName();

    private static final String BUNDLE_KEY_URL = "url";

    private VideoView mVideoView;

    private VideoViewSeekBar mVideoViewSeekBar;

    private String mUrl;

    private MediaLoader mMediaLoader;

    public static Fragment getInstance(String url) {
        MediaFragment fragment = new MediaFragment();
        Bundle args = new Bundle();
        args.putString(BUNDLE_KEY_URL, url);
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_media, container, false);
        mVideoView = (VideoView) rootView.findViewById(R.id.videoView);
        mVideoViewSeekBar = (VideoViewSeekBar) rootView.findViewById(R.id.mediaSeekBar);
        mVideoViewSeekBar.setVideoView(mVideoView);
        mUrl = getArguments().getString(BUNDLE_KEY_URL);
        mMediaLoader = MediaLoader.getInstance(getContext());
        mMediaLoader.addDownloadListener(mUrl, this);
        boolean isCached = mMediaLoader.isCached(mUrl);
        if (isCached) {
            mVideoViewSeekBar.setSecondaryProgress(mVideoViewSeekBar.getMax());
        }
        mVideoView.setVideoPath(mMediaLoader.getProxyUrl(mUrl));
        mVideoViewSeekBar.start();
        return rootView;
    }

    @Override
    public void onResume() {
        super.onResume();
        if (mVideoViewSeekBar != null) {
            mVideoViewSeekBar.start();
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mVideoViewSeekBar != null) {
            mVideoViewSeekBar.stop();
        }
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mVideoView.stopPlayback();
        mMediaLoader.removeDownloadListener(mUrl, this);
    }

    @Override
    public void onProgress(String url, File file, int progress) {
        mVideoViewSeekBar.setSecondaryProgress(progress);
        Log.e(TAG, "Url " + url + " download progress:" + progress);
    }

    @Override
    public void onError(Throwable e) {
    }
}

18 Source : VideoPlayActivity.java
with Apache License 2.0
from SingleShu

public clreplaced VideoPlayActivity extends AppCompatActivity {

    TextView libPlayVideo_tv_replacedle;

    VideoView videoView;

    private boolean isFirst = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);
        libPlayVideo_tv_replacedle = (TextView) findViewById(R.id.libPlayVideo_tv_replacedle);
        libPlayVideo_tv_replacedle.setText("视频播放");
        videoView = (VideoView) findViewById(R.id.libPlayVideo_videoView);
        videoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                if (isFirst) {
                    isFirst = false;
                    Toast.makeText(VideoPlayActivity.this, "播放该视频异常", Toast.LENGTH_SHORT).show();
                }
                return true;
            }
        });
        String mVideoPath = getIntent().getStringExtra(VedioRecordActivity.kVideoSavePath);
        File file = new File(mVideoPath);
        if (file.exists()) {
            videoView.setVideoPath(file.getAbsolutePath());
            videoView.start();
            setLoop(file.getAbsolutePath());
        } else {
            Log.e("tag", "not found video " + mVideoPath);
        }
    }

    public void setLoop(final String videoPath) {
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.start();
                mp.setLooping(true);
            }
        });
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                videoView.setVideoPath(videoPath);
                videoView.start();
            }
        });
    }

    public void videoPlayClick(View view) {
        switch(view.getId()) {
            case R.id.libPlayVideo_tv_cancel:
                finish();
                break;
            case R.id.libPlayVideo_tv_more:
                Toast.makeText(this, "更多", Toast.LENGTH_SHORT).show();
                break;
        }
    }
}

18 Source : VideoPlayActivity.java
with Apache License 2.0
from shensky711

public clreplaced VideoPlayActivity extends AppCompatActivity {

    private static final String KEY_replacedLE = "KEY_replacedLE";

    private static final String KEY_PATH = "KEY_PATH";

    private static final String KEY_URL = "KEY_URL";

    public static void playLocal(Context context, String replacedle, String path) {
        Intent intent = new Intent(context, VideoPlayActivity.clreplaced);
        intent.putExtra(KEY_PATH, path);
        intent.putExtra(KEY_replacedLE, replacedle);
        context.startActivity(intent);
    }

    public static void playNetwork(Context context, String replacedle, String url) {
        Intent intent = new Intent(context, VideoPlayActivity.clreplaced);
        intent.putExtra(KEY_URL, url);
        intent.putExtra(KEY_replacedLE, replacedle);
        context.startActivity(intent);
    }

    private VideoView mVideoView;

    private ProgressBar mProgressBar;

    private ActionbarMediaController mMediaController;

    private String mreplacedle;

    private String mPath;

    private String mUrl;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);
        extraBundle();
        initViews();
    }

    private void extraBundle() {
        Bundle bundle = getIntent().getExtras();
        if (bundle == null || (TextUtils.isEmpty(mUrl = bundle.getString(KEY_URL)) && TextUtils.isEmpty(mPath = bundle.getString(KEY_PATH)))) {
            throw new IllegalArgumentException("bundle must contain url or path");
        }
        mreplacedle = bundle.getString(KEY_replacedLE);
    }

    private void initViews() {
        mProgressBar = (ProgressBar) findViewById(R.id.activity_video_play_loading);
        mVideoView = (VideoView) findViewById(R.id.activity_video_play_video);
        mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mProgressBar.setVisibility(View.GONE);
                mp.start();
                mMediaController.show(3000);
            }
        });
        mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                mProgressBar.setVisibility(View.GONE);
                mMediaController.show(0);
                return false;
            }
        });
        if (!TextUtils.isEmpty(mPath)) {
            mVideoView.setVideoPath(mPath);
        } else {
            mVideoView.setVideoURI(Uri.parse(mUrl));
        }
        Toolbar toolbar = (Toolbar) findViewById(R.id.activity_video_play_toolbar);
        if (!TextUtils.isEmpty(mreplacedle)) {
            toolbar.setreplacedle(mreplacedle);
        }
        setSupportActionBar(toolbar);
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                finish();
            }
        });
        if (getSupportActionBar() != null) {
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        }
        mMediaController = new ActionbarMediaController(this);
        mMediaController.setSupportActionBar(getSupportActionBar());
        mVideoView.setMediaController(mMediaController);
        mMediaController.setMediaPlayer(mVideoView);
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (mVideoView != null) {
            mVideoView.pause();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mVideoView != null) {
            mVideoView.stopPlayback();
        }
    }

    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {
        // TODO:横屏
        } else if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
        // TODO:竖屏
        }
    }
}

18 Source : CustomMediacontrol.java
with Apache License 2.0
from RockTeach

public void setVideoView(VideoView videoView) {
    mVideoView = videoView;
    mVideoView.setKeepScreenOn(true);
    ViewGroup parent = (ViewGroup) mVideoView.getParent();
    parent.addView(this);
}

18 Source : VideoPlayer.java
with MIT License
from praharshjain

public clreplaced VideoPlayer extends Activity {

    private VideoView vw;

    private ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        hideStatusBar();
        setContentView(R.layout.video_player);
        vw = findViewById(R.id.videoView);
        vw.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {

            @Override
            public void onSystemUiVisibilityChange(int i) {
                hideStatusBar();
            }
        });
        progressDialog = new ProgressDialog(this);
        showProgressBar();
        MediaController mc = new MediaController(this);
        mc.setAnchorView(vw);
        mc.setMediaPlayer(vw);
        Uri video = null;
        try {
            video = Uri.parse(getIntent().getStringExtra("file"));
        } catch (Exception e) {
            finish();
        }
        vw.setVideoURI(video);
        vw.setMediaController(mc);
        vw.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                progressDialog.dismiss();
            }
        });
        vw.requestFocus();
        vw.start();
    }

    @Override
    protected void onStop() {
        if (vw != null)
            vw.stopPlayback();
        super.onStop();
    }

    @Override
    protected void onDestroy() {
        if (vw != null)
            vw.stopPlayback();
        super.onDestroy();
    }

    protected void hideStatusBar() {
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
    }

    protected void showProgressBar() {
        progressDialog.setMessage("Loading...");
        progressDialog.setCancelable(false);
        progressDialog.show();
    }
}

18 Source : MainActivity.java
with MIT License
from Pradyuman7

public clreplaced MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

    VideoView videoView;

    EditText textView;

    // For looking logs
    ArrayAdapter adapter;

    ArrayList<String> list = new ArrayList<>();

    CameraSource cameraSource;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.CAMERA }, 1);
            Toast.makeText(this, "Grant Permission and restart app", Toast.LENGTH_SHORT).show();
        } else {
            videoView = findViewById(R.id.videoView);
            textView = findViewById(R.id.textView);
            adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, list);
            videoView.setVideoURI(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.videoplayback));
            videoView.start();
            createCameraSource();
        }
    }

    // This clreplaced will use google vision api to detect eyes
    private clreplaced EyesTracker extends Tracker<Face> {

        private final float THRESHOLD = 0.75f;

        private EyesTracker() {
        }

        @Override
        public void onUpdate(Detector.Detections<Face> detections, Face face) {
            if (face.getIsLeftEyeOpenProbability() > THRESHOLD || face.getIsRightEyeOpenProbability() > THRESHOLD) {
                Log.i(TAG, "onUpdate: Eyes Detected");
                showStatus("Eyes Detected and open, so video continues");
                if (!videoView.isPlaying())
                    videoView.start();
            } else {
                if (videoView.isPlaying())
                    videoView.pause();
                showStatus("Eyes Detected and closed, so video paused");
            }
        }

        @Override
        public void onMissing(Detector.Detections<Face> detections) {
            super.onMissing(detections);
            showStatus("Face Not Detected yet!");
        }

        @Override
        public void onDone() {
            super.onDone();
        }
    }

    private clreplaced FaceTrackerFactory implements MultiProcessor.Factory<Face> {

        private FaceTrackerFactory() {
        }

        @Override
        public Tracker<Face> create(Face face) {
            return new EyesTracker();
        }
    }

    public void createCameraSource() {
        FaceDetector detector = new FaceDetector.Builder(this).setTrackingEnabled(true).setClreplacedificationType(FaceDetector.ALL_CLreplacedIFICATIONS).setMode(FaceDetector.FAST_MODE).build();
        detector.setProcessor(new MultiProcessor.Builder(new FaceTrackerFactory()).build());
        cameraSource = new CameraSource.Builder(this, detector).setRequestedPreviewSize(1024, 768).setFacing(CameraSource.CAMERA_FACING_FRONT).setRequestedFps(30.0f).build();
        try {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                // TODO: Consider calling
                // ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                // public void onRequestPermissionsResult(int requestCode, String[] permissions,
                // int[] grantResults)
                // to handle the case where the user grants the permission. See the doreplacedentation
                // for ActivityCompat#requestPermissions for more details.
                return;
            }
            cameraSource.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (cameraSource != null) {
            try {
                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                    // TODO: Consider calling
                    // ActivityCompat#requestPermissions
                    // here to request the missing permissions, and then overriding
                    // public void onRequestPermissionsResult(int requestCode, String[] permissions,
                    // int[] grantResults)
                    // to handle the case where the user grants the permission. See the doreplacedentation
                    // for ActivityCompat#requestPermissions for more details.
                    return;
                }
                cameraSource.start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (cameraSource != null) {
            cameraSource.stop();
        }
        if (videoView.isPlaying()) {
            videoView.pause();
        }
    }

    public void showStatus(final String message) {
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                textView.setText(message);
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (cameraSource != null) {
            cameraSource.release();
        }
    }
}

18 Source : PreviewActivity.java
with GNU General Public License v3.0
from PowerExplorer

/**
 * Created by Bhuvnesh on 08-03-2017.
 */
public clreplaced PreviewActivity extends AppCompatActivity {

    private VideoView videoView;

    private SeekBar seekBar;

    private int stopPosition;

    private static final String POSITION = "position";

    private static final String FILEPATH = "filepath";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preview);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        videoView = (VideoView) findViewById(R.id.videoView);
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
        String filePath = getIntent().getStringExtra(FILEPATH);
        tvInstruction.setText("Video stored at path " + filePath);
        videoView.setVideoURI(Uri.parse(filePath));
        videoView.start();
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);
                seekBar.setMax(videoView.getDuration());
                seekBar.postDelayed(onEverySecond, 1000);
            }
        });
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser) {
                    // this is when actually seekbar has been seeked to a new position
                    videoView.seekTo(progress);
                }
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        // stopPosition is an int
        stopPosition = videoView.getCurrentPosition();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.seekTo(stopPosition);
        videoView.start();
    }

    private Runnable onEverySecond = new Runnable() {

        @Override
        public void run() {
            if (seekBar != null) {
                seekBar.setProgress(videoView.getCurrentPosition());
            }
            if (videoView.isPlaying()) {
                seekBar.postDelayed(onEverySecond, 1000);
            }
        }
    };

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.gereplacedemId() == android.R.id.home) {
            // close this activity and return to preview activity (if there is any)
            finish();
        }
        return super.onOptionsItemSelected(item);
    }
}

18 Source : VideoViewSubject.java
with Apache License 2.0
from pkware

/**
 * Propositions for {@link VideoView} subjects.
 */
public clreplaced VideoViewSubject extends AbstractViewSubject<VideoView> {

    @Nullable
    private final VideoView actual;

    public VideoViewSubject(@Nonnull FailureMetadata failureMetadata, @Nullable VideoView actual) {
        super(failureMetadata, actual);
        this.actual = actual;
    }

    public void isPausable() {
        check("canPause()").that(actual.canPause()).isTrue();
    }

    public void isNotPausable() {
        check("canPause()").that(actual.canPause()).isFalse();
    }

    public void isSeekableBackward() {
        check("canSeekBackward()").that(actual.canSeekBackward()).isTrue();
    }

    public void isNotSeekableBackward() {
        check("canSeekBackward()").that(actual.canSeekBackward()).isFalse();
    }

    public void isSeekableForward() {
        check("canSeekForward()").that(actual.canSeekForward()).isTrue();
    }

    public void isNotSeekableForward() {
        check("canSeekForward()").that(actual.canSeekForward()).isFalse();
    }

    @TargetApi(JELLY_BEAN_MR2)
    public void hasAudioSessionId(int id) {
        check("getAudioSessionId()").that(actual.getAudioSessionId()).isEqualTo(id);
    }

    public void hasBufferPercentage(int percentage) {
        check("getBufferPercentage()").that(actual.getBufferPercentage()).isEqualTo(percentage);
    }

    public void hasCurrentPosition(int position) {
        check("getCurrentPosition()").that(actual.getCurrentPosition()).isEqualTo(position);
    }

    public void hasDuration(int duration) {
        check("getDuration()").that(actual.getDuration()).isEqualTo(duration);
    }

    public void isPlaying() {
        check("isPlaying()").that(actual.isPlaying()).isTrue();
    }

    public void isNotPlaying() {
        check("isPlaying()").that(actual.isPlaying()).isFalse();
    }
}

18 Source : PlaybackOverlayActivity.java
with MIT License
from PacktPublishing

/**
 * PlaybackOverlayActivity for video playback that loads PlaybackOverlayFragment
 */
public clreplaced PlaybackOverlayActivity extends Activity implements PlaybackOverlayFragment.OnPlayPauseClickedListener {

    private static final String TAG = "PlaybackOverlayActivity";

    private VideoView mVideoView;

    private LeanbackPlaybackState mPlaybackState = LeanbackPlaybackState.IDLE;

    private MediaSession mSession;

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.playback_controls);
        loadViews();
        setupCallbacks();
        mSession = new MediaSession(this, "LeanbackSampleApp");
        mSession.setCallback(new MediaSessionCallback());
        mSession.setFlags(MediaSession.FLAG_HANDLES_MEDIA_BUTTONS | MediaSession.FLAG_HANDLES_TRANSPORT_CONTROLS);
        mSession.setActive(true);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mVideoView.suspend();
    }

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event) {
        PlaybackOverlayFragment playbackOverlayFragment = (PlaybackOverlayFragment) getFragmentManager().findFragmentById(R.id.playback_controls_fragment);
        switch(keyCode) {
            case KeyEvent.KEYCODE_MEDIA_PLAY:
                playbackOverlayFragment.togglePlayback(false);
                return true;
            case KeyEvent.KEYCODE_MEDIA_PAUSE:
                playbackOverlayFragment.togglePlayback(false);
                return true;
            case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
                if (mPlaybackState == LeanbackPlaybackState.PLAYING) {
                    playbackOverlayFragment.togglePlayback(false);
                } else {
                    playbackOverlayFragment.togglePlayback(true);
                }
                return true;
            default:
                return super.onKeyUp(keyCode, event);
        }
    }

    /**
     * Implementation of OnPlayPauseClickedListener
     */
    public void onFragmentPlayPause(Movie movie, int position, Boolean playPause) {
        mVideoView.setVideoPath(movie.getVideoUrl());
        if (position == 0 || mPlaybackState == LeanbackPlaybackState.IDLE) {
            setupCallbacks();
            mPlaybackState = LeanbackPlaybackState.IDLE;
        }
        if (playPause && mPlaybackState != LeanbackPlaybackState.PLAYING) {
            mPlaybackState = LeanbackPlaybackState.PLAYING;
            if (position > 0) {
                mVideoView.seekTo(position);
                mVideoView.start();
            }
        } else {
            mPlaybackState = LeanbackPlaybackState.PAUSED;
            mVideoView.pause();
        }
        updatePlaybackState(position);
        updateMetadata(movie);
    }

    private void updatePlaybackState(int position) {
        PlaybackState.Builder stateBuilder = new PlaybackState.Builder().setActions(getAvailableActions());
        int state = PlaybackState.STATE_PLAYING;
        if (mPlaybackState == LeanbackPlaybackState.PAUSED) {
            state = PlaybackState.STATE_PAUSED;
        }
        stateBuilder.setState(state, position, 1.0f);
        mSession.setPlaybackState(stateBuilder.build());
    }

    private long getAvailableActions() {
        long actions = PlaybackState.ACTION_PLAY | PlaybackState.ACTION_PLAY_FROM_MEDIA_ID | PlaybackState.ACTION_PLAY_FROM_SEARCH;
        if (mPlaybackState == LeanbackPlaybackState.PLAYING) {
            actions |= PlaybackState.ACTION_PAUSE;
        }
        return actions;
    }

    private void updateMetadata(final Movie movie) {
        final MediaMetadata.Builder metadataBuilder = new MediaMetadata.Builder();
        String replacedle = movie.getreplacedle().replace("_", " -");
        metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_replacedLE, replacedle);
        metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_SUBreplacedLE, movie.getDescription());
        metadataBuilder.putString(MediaMetadata.METADATA_KEY_DISPLAY_ICON_URI, movie.getCardImageUrl());
        // And at minimum the replacedle and artist for legacy support
        metadataBuilder.putString(MediaMetadata.METADATA_KEY_replacedLE, replacedle);
        metadataBuilder.putString(MediaMetadata.METADATA_KEY_ARTIST, movie.getStudio());
        Glide.with(this).load(Uri.parse(movie.getCardImageUrl())).asBitmap().into(new SimpleTarget<Bitmap>(500, 500) {

            @Override
            public void onResourceReady(Bitmap bitmap, GlideAnimation anim) {
                metadataBuilder.putBitmap(MediaMetadata.METADATA_KEY_ART, bitmap);
                mSession.setMetadata(metadataBuilder.build());
            }
        });
    }

    private void loadViews() {
        mVideoView = (VideoView) findViewById(R.id.videoView);
        mVideoView.setFocusable(false);
        mVideoView.setFocusableInTouchMode(false);
    }

    private void setupCallbacks() {
        mVideoView.setOnErrorListener(new MediaPlayer.OnErrorListener() {

            @Override
            public boolean onError(MediaPlayer mp, int what, int extra) {
                String msg = "";
                if (extra == MediaPlayer.MEDIA_ERROR_TIMED_OUT) {
                    msg = getString(R.string.video_error_media_load_timeout);
                } else if (what == MediaPlayer.MEDIA_ERROR_SERVER_DIED) {
                    msg = getString(R.string.video_error_server_inaccessible);
                } else {
                    msg = getString(R.string.video_error_unknown_error);
                }
                mVideoView.stopPlayback();
                mPlaybackState = LeanbackPlaybackState.IDLE;
                return false;
            }
        });
        mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                if (mPlaybackState == LeanbackPlaybackState.PLAYING) {
                    mVideoView.start();
                }
            }
        });
        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                mPlaybackState = LeanbackPlaybackState.IDLE;
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        mSession.setActive(true);
    }

    @Override
    public void onPause() {
        super.onPause();
        if (mVideoView.isPlaying()) {
            if (!requestVisibleBehind(true)) {
                // Try to play behind launcher, but if it fails, stop playback.
                stopPlayback();
            }
        } else {
            requestVisibleBehind(false);
        }
    }

    @Override
    protected void onStop() {
        super.onStop();
        mSession.release();
    }

    @Override
    public void onVisibleBehindCanceled() {
        super.onVisibleBehindCanceled();
    }

    private void stopPlayback() {
        if (mVideoView != null) {
            mVideoView.stopPlayback();
        }
    }

    /*
     * List of various states that we can be in
     */
    public static enum LeanbackPlaybackState {

        PLAYING, PAUSED, BUFFERING, IDLE
    }

    private clreplaced MediaSessionCallback extends MediaSession.Callback {
    }
}

18 Source : MainActivity.java
with Apache License 2.0
from nasa

public clreplaced MainActivity extends Activity {

    public final static String ACTION_STOP = "gov.nasa.arc.astrobee.signal_intention_state.ACTION_STOP";

    private static final int UPDATE_STATE_QUEUED = 2;

    private static final int UPDATE_STATE_CHANGED = 1;

    private static final int UPDATE_STATE_ERROR = 0;

    private static final int UPDATE_STATE_IGNORED = 3;

    BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            finish();
        }
    };

    private boolean isFullScreen;

    private VideoView videoView;

    private AppCustomConfig config = null;

    private VideoStateConfig currentStateVideo = null;

    private int videoSavedPosition = 0;

    public static boolean isActivityRunning(Context ctx) {
        ActivityManager activityManager = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.AppTask> tasks = activityManager.getAppTasks();
        for (ActivityManager.AppTask task : tasks) {
            if (task.getTaskInfo().baseActivity == null) {
                continue;
            }
            if (ctx.getPackageName().equalsIgnoreCase(task.getTaskInfo().baseActivity.getPackageName()))
                return true;
        }
        return false;
    }

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // Broadcast to be called from ADB control script or any other activity
        IntentFilter filter = new IntentFilter();
        filter.addAction(ACTION_STOP);
        registerReceiver(receiver, filter);
        // Load configuration
        config = new AppCustomConfig(this);
        config.loadConfig();
        // Keep screen always on
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
        // Event to capture the state of the system bars during user interaction
        View decorView = getWindow().getDecorView();
        decorView.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {

            @Override
            public void onSystemUiVisibilityChange(int visibility) {
                // Note that system bars will only be "visible" if none of the
                // LOW_PROFILE, HIDE_NAVIGATION, or FULLSCREEN flags are set.
                if ((visibility & View.SYSTEM_UI_FLAG_FULLSCREEN) == 0) {
                    // The system bars are visible.
                    isFullScreen = false;
                } else {
                    // The system bars are NOT visible.
                    isFullScreen = true;
                }
            }
        });
        // VideoView to show animations
        videoView = (VideoView) findViewById(R.id.videoView);
        // TODO Move to performClick
        // Event to hide system bars (or not), when user touches the screen
        videoView.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (!isFullScreen) {
                    hideSystemUI();
                }
                return false;
            }
        });
        // To be run when a video is done playing
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mediaPlayer) {
                handleVideoCompletion();
            }
        });
        // To be executed when video is ready to be played.
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() {

                    @Override
                    public void onSeekComplete(MediaPlayer mp) {
                        if (!videoView.isPlaying()) {
                            videoView.start();
                        }
                    }
                });
            }
        });
        // Uncomment if you want to start playing the default animation
        // playVideoSignal(config.getRunnerState().getNextDefaultState());
        hideSystemUI();
        // Run RosService
        Intent serviceIntent = new Intent(this, SignalStateService.clreplaced);
        startService(serviceIntent);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // Unregister EventBus and broadcast receiver
        if (EventBus.getDefault().isRegistered(this)) {
            EventBus.getDefault().unregister(this);
        }
        unregisterReceiver(receiver);
    }

    @Override
    public void onStart() {
        super.onStart();
        EventBus.getDefault().register(this);
    }

    @Override
    public void onStop() {
        EventBus.getDefault().unregister(this);
        super.onStop();
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        videoView.resume();
        videoView.seekTo(videoSavedPosition);
    }

    @Override
    protected void onPause() {
        videoView.pause();
        videoSavedPosition = videoView.getCurrentPosition();
        super.onPause();
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus) {
            hideSystemUI();
        }
    }

    /**
     * This callback receives any messages forwarded from the ROS node
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(SignalState event) {
        // Get signal name from id
        String state = Utils.getStateNameFromId(event.getState());
        // Convert state string received into a recognizable state
        VideoStateConfig stateConfig = config.getStateConfig(state);
        // Handle signal
        handleSignalState(stateConfig);
    }

    private boolean handleSignalState(VideoStateConfig stateConfig) {
        // Slightly validation for JSON on execution time
        if (stateConfig == null) {
            // Ignore null states
            Toast.makeText(this, "NULL STATE", Toast.LENGTH_LONG).show();
            return false;
        } else if (!stateConfig.isValid()) {
            // Bad state.
            Toast.makeText(this, "INVALID STATE", Toast.LENGTH_LONG).show();
            return false;
        }
        switch(stateConfig.getType()) {
            case VideoStateConfig.TYPE_RUNNER:
                // Ignore runner state. Activity should be launch from service
                Toast.makeText(this, "ALREADY RUNNING ACTIVITY", Toast.LENGTH_LONG).show();
                // Move forward to next state
                String nextState = stateConfig.getNextDefaultState();
                if (nextState != null && !nextState.equals(stateConfig.getRosState())) {
                    // State has next state and it is different from itself
                    VideoStateConfig newState = config.getStateConfig(nextState);
                    // Recursive call
                    if (handleSignalState(newState)) {
                        return true;
                    }
                }
                // If no next state, or it fails to be applied, keep runner state
                updateState(stateConfig);
                break;
            case VideoStateConfig.TYPE_IDLE:
                videoView.stopPlayback();
                videoView.setVisibility(View.GONE);
                videoView.setVisibility(View.VISIBLE);
                updateState(stateConfig);
                break;
            case VideoStateConfig.TYPE_LOOP:
            case VideoStateConfig.TYPE_SEQUENTIAL:
                int updateResult = updateState(stateConfig);
                switch(updateResult) {
                    case UPDATE_STATE_CHANGED:
                        playVideo(stateConfig.getLocalVideoName());
                        break;
                    case UPDATE_STATE_QUEUED:
                        Toast.makeText(this, "STATE WAS QUEUED", Toast.LENGTH_LONG).show();
                        break;
                    case UPDATE_STATE_IGNORED:
                        Toast.makeText(this, "STATE WAS IGNORED", Toast.LENGTH_LONG).show();
                        break;
                    case UPDATE_STATE_ERROR:
                        Toast.makeText(this, "STATE ERROR", Toast.LENGTH_LONG).show();
                        break;
                }
                break;
            default:
                Toast.makeText(this, "STATE " + stateConfig.getRosState() + " is a valid ROS state but it was not recognized for the app. " + "Check config file", Toast.LENGTH_LONG).show();
                return false;
        }
        return true;
    }

    private void handleVideoCompletion() {
        // Do we want the video to keep running until a new command is received?
        if (currentStateVideo.getType().equals(VideoStateConfig.TYPE_LOOP)) {
            videoView.start();
        } else if (currentStateVideo.getType().equals(VideoStateConfig.TYPE_SEQUENTIAL) && currentStateVideo.getNextDefaultState() != null) {
            // Get next default state to be played next
            VideoStateConfig newState = config.getStateConfig(currentStateVideo.getNextDefaultState());
            handleSignalState(newState);
        }
    }

    private int updateState(VideoStateConfig state) {
        if (state == null) {
            // State not yet supported.
            Toast.makeText(this, "NOT SUPPORTED STATE", Toast.LENGTH_LONG).show();
            return UPDATE_STATE_ERROR;
        }
        if (currentStateVideo == null) {
            // If first execution
            currentStateVideo = new VideoStateConfig();
        }
        if (state.getRosState().equals(currentStateVideo.getRosState())) {
            // We received the same state again. Put it in queue if it is sequential
            if (currentStateVideo.getType().equals(VideoStateConfig.TYPE_SEQUENTIAL)) {
                currentStateVideo.setNextDefaultState(state.getRosState());
                return UPDATE_STATE_QUEUED;
            } else {
                // Ignore otherwise: Recurrent states will be ignored if loop, idle or runner.
                return UPDATE_STATE_IGNORED;
            }
        } else {
            // We received a different state. Let's change it
            currentStateVideo = state;
        }
        return UPDATE_STATE_CHANGED;
    }

    private void playVideo(String videoName) {
        int videoID = getResources().getIdentifier(videoName, "raw", this.getPackageName());
        Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + videoID);
        if (videoView.isPlaying()) {
            videoView.stopPlayback();
        }
        videoView.setVideoURI(uri);
        videoView.start();
    }

    /**
     * This callback receives any messages forwarded from the RosMasterMonitor
     *
     * @param event
     */
    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onMessageEvent(MessageEvent event) {
        int eventId = event.getMessage();
        if (eventId == MessageEvent.ROS_MASTER_SHOW_UP) {
        } else if (eventId == MessageEvent.ROS_MASTER_WENT_AWAY) {
            // TODO Handle unexpected configuration of sleep state
            if (!currentStateVideo.getType().equals(VideoStateConfig.TYPE_IDLE) && !currentStateVideo.getRosState().equals("SLEEP")) {
                VideoStateConfig newState = config.getStateConfig("SLEEP");
                handleSignalState(newState);
            }
        }
    }

    private void hideSystemUI() {
        // Enables regular immersive mode.
        // For "lean back" mode, remove SYSTEM_UI_FLAG_IMMERSIVE.
        // Or for "sticky immersive," replace it with SYSTEM_UI_FLAG_IMMERSIVE
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(// View.SYSTEM_UI_FLAG_IMMERSIVE
        // Set the content to appear under the system bars so that the
        // content doesn't resize when the system bars hide and show.
        // View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        // | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
        // | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        // Hide the nav bar and status bar
        View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        // | View.SYSTEM_UI_FLAG_FULLSCREEN);
        isFullScreen = true;
    }

    // Shows the system bars by removing all the flags
    // except for the ones that make the content appear under the system bars.
    private void showSystemUI() {
        View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
    }
}

18 Source : VideoFragment.java
with Apache License 2.0
from Kerr1Gan

/**
 * Created by Ethan_Xiang on 2017/10/10.
 */
public clreplaced VideoFragment extends Fragment {

    private String mVideoUrl = "http://sp.9ky.cc/vlook.php?id=YklkPTQ5NDcyMjY=";

    private MediaController mMediaController;

    private VideoView mVideoView;

    private int mLastPosition = 0;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.cc_fragment_video, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        mMediaController = new MediaController(getContext());
        mVideoView = (VideoView) view.findViewById(R.id.video);
        mVideoView.setVideoPath(mVideoUrl);
        mVideoView.setMediaController(mMediaController);
        mVideoView.requestFocus();
    }

    @Override
    public void onResume() {
        super.onResume();
        mVideoView.start();
        mVideoView.seekTo(mLastPosition);
    }

    @Override
    public void onPause() {
        super.onPause();
        mVideoView.pause();
        mLastPosition = mVideoView.getCurrentPosition();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mVideoView.stopPlayback();
    }
}

18 Source : GalleryItemFragment.java
with Apache License 2.0
from googlesamples

/**
 * Displays selected gallery item on the full screen.
 */
public clreplaced GalleryItemFragment extends Fragment implements OnGestureListener {

    /**
     * Request code for starting the {@link MenuActivity}.
     */
    public static final int MENU_REQUEST_CODE = 205;

    private static final String NAME_KEY = "name";

    private static final String PATH_KEY = "path";

    private static final String TYPE_KEY = "type";

    private ImageView imageView;

    private ImageView playButtonVideoImageView;

    private VideoView videoView;

    private String filePath;

    private GalleryItem.Type galleryItemType;

    private OnGalleryItemDeletedListener onGalleryItemDeletedListener;

    /**
     * Creates new instance of the {@link GalleryItemFragment}, preplaceding selected {@link GalleryItem}
     * object to it.
     */
    public static GalleryItemFragment newInstance(GalleryItem galleryItem) {
        final GalleryItemFragment galleryItemFragment = new GalleryItemFragment();
        galleryItemFragment.setArguments(GalleryItemFragment.createArguments(galleryItem.getName(), galleryItem.getPath(), galleryItem.getType().ordinal()));
        return galleryItemFragment;
    }

    /**
     * Returns {@link Bundle} with preplaceded item name, path and type.
     */
    private static Bundle createArguments(String name, String path, int type) {
        final Bundle bundle = new Bundle();
        bundle.putString(NAME_KEY, name);
        bundle.putString(PATH_KEY, path);
        bundle.putInt(TYPE_KEY, type);
        return bundle;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        galleryItemType = GalleryItem.Type.fromId(getArguments().getInt(TYPE_KEY));
    }

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        switch(galleryItemType) {
            case VIDEO:
                return inflater.inflate(R.layout.gallery_item_video, container, false);
            default:
                return inflater.inflate(R.layout.gallery_item_picture, container, false);
        }
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        switch(galleryItemType) {
            case VIDEO:
                playButtonVideoImageView = view.findViewById(R.id.playButtonVideoImageView);
                filePath = getArguments().getString(PATH_KEY);
                videoView = view.findViewById(R.id.videoView);
                videoView.setVideoURI(Uri.fromFile(new File(filePath)));
                videoView.start();
                videoView.setOnCompletionListener(new OnCompletionListener() {

                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        playButtonVideoImageView.setVisibility(View.VISIBLE);
                    }
                });
                break;
            default:
                imageView = view.findViewById(R.id.galleryItemImageView);
                filePath = getArguments().getString(PATH_KEY);
                final Drawable drawable = Drawable.createFromPath(filePath);
                imageView.setImageDrawable(drawable);
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        ((BaseActivity) requireActivity()).setOnGestureListener(this);
    }

    @Override
    public boolean onGesture(Gesture glreplacedGesture) {
        switch(glreplacedGesture) {
            case TAP:
                switch(GalleryItem.Type.fromId(getArguments().getInt(TYPE_KEY))) {
                    case IMAGE:
                        startActivityForResult(getMenuIntent(R.menu.photo_menu), MENU_REQUEST_CODE);
                        break;
                    case VIDEO:
                        startActivityForResult(getMenuIntent(R.menu.video_menu), MENU_REQUEST_CODE);
                }
                return true;
            case SWIPE_DOWN:
                ((BaseActivity) requireActivity()).popBackStack();
                return true;
            default:
                return false;
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == MENU_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
            final int id = data.getIntExtra(MenuActivity.EXTRA_MENU_ITEM_ID_KEY, MenuActivity.EXTRA_MENU_ITEM_DEFAULT_VALUE);
            switch(id) {
                case R.id.play_video:
                    playButtonVideoImageView.setVisibility(View.GONE);
                    videoView.start();
                    break;
                case R.id.delete:
                    GalleryItemsProvider.deleteGalleryItem(getContext(), filePath);
                    onGalleryItemDeletedListener.onGalleryItemDeleted(filePath);
                    break;
            }
        }
    }

    /**
     * Sets the {@link OnGalleryItemDeletedListener} listener for this fragment.
     */
    public void setOnGalleryItemDeletedListener(OnGalleryItemDeletedListener listener) {
        this.onGalleryItemDeletedListener = listener;
    }

    private Intent getMenuIntent(int menu) {
        final Intent intent = new Intent(getContext(), MenuActivity.clreplaced);
        intent.putExtra(MenuActivity.EXTRA_MENU_KEY, menu);
        return intent;
    }

    /**
     * Interface to notify parent that {@link GalleryItem} has been deleted.
     */
    interface OnGalleryItemDeletedListener {

        void onGalleryItemDeleted(String filePath);
    }
}

18 Source : VideoPlayer.java
with Apache License 2.0
from djzhao627

/**
 * Created by djzhao on 17/04/29.
 */
public clreplaced VideoPlayer extends BaseActivity {

    private VideoView videoView;

    private MediaController mediaController;

    @Override
    protected void onCreate(Bundle paramBundle) {
        super.onCreate(paramBundle);
        setContentView(R.layout.activity_test_video_player);
        findViewById();
        initView();
    }

    @Override
    protected void findViewById() {
        this.videoView = $(R.id.player_test_vv);
    }

    @Override
    protected void initView() {
        // String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/movie.mp4";
        String uri = "android.resource://" + getPackageName() + "/" + R.raw.base;
        // 本地视频
        // videoView.setVideoPath(path);
        // 网络视频
        // videoView.setVideoURI(Uri.parse("http://www.runoob.com/try/demo_source/movie.mp4"));
        videoView.setVideoURI(Uri.parse(uri));
        mediaController = new MediaController(this);
        videoView.setMediaController(mediaController);
        mediaController.setMediaPlayer(videoView);
    }
}

18 Source : VideoCheckFragment.java
with Apache License 2.0
from CreateChance

public clreplaced VideoCheckFragment extends Fragment implements View.OnClickListener {

    private static final String TAG = "VideoCheckFragment";

    private Scene mScene;

    private Callback mCallback;

    private VideoView mVideoPlayer;

    public void setScene(Scene scene) {
        this.mScene = scene;
    }

    public void setCallback(Callback callback) {
        this.mCallback = callback;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        View root = inflater.inflate(R.layout.fragment_video_check, container, false);
        root.findViewById(R.id.iv_redo).setOnClickListener(this);
        root.findViewById(R.id.iv_done).setOnClickListener(this);
        mVideoPlayer = root.findViewById(R.id.vw_video_player);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    @Override
    public void onStart() {
        super.onStart();
        // PlayRequest request = new PlayRequest.Builder()
        // .loop(true)
        // .source(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "videoeditor/input.mp4")))
        // .build();
        // mVideoPlayer.start(request);
        mVideoPlayer.setVideoURI(Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "videoeditor/input.mp4")));
        mVideoPlayer.start();
    }

    @Override
    public void onStop() {
        super.onStop();
        mVideoPlayer.stopPlayback();
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.iv_redo:
                if (mCallback != null) {
                    mCallback.onRedo();
                }
                break;
            case R.id.iv_done:
                if (mCallback != null) {
                    mCallback.onDone();
                }
                break;
            default:
                break;
        }
    }

    interface Callback {

        void onRedo();

        void onDone();
    }
}

18 Source : GalleryVideoFragment.java
with Apache License 2.0
from blueflychief

public clreplaced GalleryVideoFragment extends Fragment implements CacheListener {

    String url;

    int position;

    boolean playerStarted;

    VideoView videoView;

    ProgressBar progressBar;

    private boolean visibleForUser;

    private final VideoProgressUpdater updater = new VideoProgressUpdater();

    public static GalleryVideoFragment newInstance(String url) {
        GalleryVideoFragment fragment = new GalleryVideoFragment();
        Bundle bundle = new Bundle();
        bundle.putString("url", url);
        fragment.setArguments(bundle);
        return fragment;
    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_video, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        progressBar = view.findViewById(R.id.progressBar);
        videoView = view.findViewById(R.id.videoView);
        if (getArguments() != null) {
            url = getArguments().getString("url");
        }
        startProxy();
        if (visibleForUser) {
            startPlayer();
        }
    }

    private void startPlayer() {
        videoView.seekTo(position);
        videoView.start();
        playerStarted = true;
    }

    private void startProxy() {
        HttpProxyCacheServer proxy = App.getProxy(getActivity());
        proxy.registerCacheListener(this, url);
        videoView.setVideoPath(proxy.getProxyUrl(url));
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        visibleForUser = isVisibleToUser;
        if (videoView != null) {
            if (visibleForUser) {
                startPlayer();
            } else if (playerStarted) {
                position = videoView.getCurrentPosition();
                videoView.pause();
            }
        }
    }

    @Override
    public void onResume() {
        super.onResume();
        updater.start();
    }

    @Override
    public void onPause() {
        super.onPause();
        updater.stop();
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        videoView.stopPlayback();
        App.getProxy(getActivity()).unregisterCacheListener(this);
    }

    @Override
    public void onCacheAvailable(File file, String url, int percentsAvailable) {
        progressBar.setSecondaryProgress(percentsAvailable);
    }

    private void updateVideoProgress() {
        int videoProgress = videoView.getCurrentPosition() * 100 / videoView.getDuration();
        progressBar.setProgress(videoProgress);
    }

    // @SeekBarTouchStop(R.id.progressBar)
    // void seekVideo() {
    // int videoPosition = videoView.getDuration() * progressBar.getProgress() / 100;
    // videoView.seekTo(videoPosition);
    // }
    private final clreplaced VideoProgressUpdater extends Handler {

        public void start() {
            sendEmptyMessage(0);
        }

        public void stop() {
            removeMessages(0);
        }

        @Override
        public void handleMessage(Message msg) {
            updateVideoProgress();
            sendEmptyMessageDelayed(0, 500);
        }
    }
}

18 Source : MainActivity.java
with MIT License
from a914-gowtham

public clreplaced MainActivity extends AppCompatActivity implements View.OnClickListener {

    private static final int REQUEST_TAKE_VIDEO = 552;

    private VideoView videoView;

    private MediaController mediaController;

    private EditText edtFixedGap, edtMinGap, edtMinFrom, edtMAxTo;

    private int trimType;

    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        videoView = findViewById(R.id.video_view);
        edtFixedGap = findViewById(R.id.edt_fixed_gap);
        edtMinGap = findViewById(R.id.edt_min_gap);
        edtMinFrom = findViewById(R.id.edt_min_from);
        edtMAxTo = findViewById(R.id.edt_max_to);
        mediaController = new MediaController(this);
        findViewById(R.id.btn_default_trim).setOnClickListener(this);
        findViewById(R.id.btn_fixed_gap).setOnClickListener(this);
        findViewById(R.id.btn_min_gap).setOnClickListener(this);
        findViewById(R.id.btn_min_max_gap).setOnClickListener(this);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        try {
            if (requestCode == TrimVideo.VIDEO_TRIMMER_REQ_CODE && data != null) {
                Uri uri = Uri.parse(TrimVideo.getTrimmedVideoPath(data));
                Log.d(TAG, "Trimmed path:: " + uri);
                videoView.setMediaController(mediaController);
                videoView.setVideoURI(uri);
                videoView.requestFocus();
                videoView.start();
                videoView.setOnPreparedListener(mediaPlayer -> {
                    mediaController.setAnchorView(videoView);
                });
                String filepath = String.valueOf(uri);
                File file = new File(filepath);
                long length = file.length();
                Log.d(TAG, "Video size:: " + (length / 1024));
            } else if (requestCode == REQUEST_TAKE_VIDEO && resultCode == RESULT_OK) {
                /*    //check video duration if needed
                if (TrimmerUtils.getVideoDuration(this,data.getData())<=30){
                    Toast.makeText(this,"Video should be larger than 30 sec",Toast.LENGTH_SHORT).show();
                    return;
                }*/
                if (data.getData() != null) {
                    LogMessage.v("Video path:: " + data.getData());
                    openTrimActivity(String.valueOf(data.getData()));
                } else {
                    Toast.makeText(this, "video uri is null", Toast.LENGTH_SHORT).show();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private void openTrimActivity(String data) {
        if (trimType == 0) {
            TrimVideo.activity(data).start(this);
        } else if (trimType == 1) {
            TrimVideo.activity(data).setTrimType(TrimType.FIXED_DURATION).setFixedDuration(getEdtValueLong(edtFixedGap)).start(this);
        } else if (trimType == 2) {
            TrimVideo.activity(data).setTrimType(TrimType.MIN_DURATION).setMinDuration(getEdtValueLong(edtMinGap)).start(this);
        } else {
            TrimVideo.activity(data).setTrimType(TrimType.MIN_MAX_DURATION).setMinToMax(getEdtValueLong(edtMinFrom), getEdtValueLong(edtMAxTo)).start(this);
        }
    }

    @Override
    public void onClick(View v) {
        switch(v.getId()) {
            case R.id.btn_default_trim:
                onDefaultTrimClicked();
                break;
            case R.id.btn_fixed_gap:
                onFixedTrimClicked();
                break;
            case R.id.btn_min_gap:
                onMinGapTrimClicked();
                break;
            case R.id.btn_min_max_gap:
                onMinToMaxTrimClicked();
                break;
        }
    }

    private void onDefaultTrimClicked() {
        trimType = 0;
        if (checkCamStoragePer())
            showVideoOptions();
    }

    private void onFixedTrimClicked() {
        trimType = 1;
        if (isEdtTxtEmpty(edtFixedGap))
            Toast.makeText(this, "Enter fixed gap duration", Toast.LENGTH_SHORT).show();
        else if (checkCamStoragePer())
            showVideoOptions();
    }

    private void onMinGapTrimClicked() {
        trimType = 2;
        if (isEdtTxtEmpty(edtMinGap))
            Toast.makeText(this, "Enter min gap duration", Toast.LENGTH_SHORT).show();
        else if (checkCamStoragePer())
            showVideoOptions();
    }

    private void onMinToMaxTrimClicked() {
        trimType = 3;
        if (isEdtTxtEmpty(edtMinFrom))
            Toast.makeText(this, "Enter min gap duration", Toast.LENGTH_SHORT).show();
        else if (isEdtTxtEmpty(edtMAxTo))
            Toast.makeText(this, "Enter max gap duration", Toast.LENGTH_SHORT).show();
        else if (checkCamStoragePer())
            showVideoOptions();
    }

    public void showVideoOptions() {
        try {
            BottomSheet.Builder builder = getBottomSheet();
            builder.sheet(R.menu.menu_video);
            builder.listener(item -> {
                if (R.id.action_take == item.gereplacedemId())
                    captureVideo();
                else
                    openVideo();
                return false;
            });
            builder.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public BottomSheet.Builder getBottomSheet() {
        return new BottomSheet.Builder(this).replacedle(R.string.txt_option);
    }

    public void captureVideo() {
        try {
            Intent intent = new Intent("android.media.action.VIDEO_CAPTURE");
            intent.putExtra("android.intent.extra.durationLimit", 30);
            startActivityForResult(intent, REQUEST_TAKE_VIDEO);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void openVideo() {
        try {
            Intent intent = new Intent();
            intent.setType("video/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);
            startActivityForResult(Intent.createChooser(intent, "Select Video"), REQUEST_TAKE_VIDEO);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (isPermissionOk(grantResults))
            showVideoOptions();
    }

    private boolean isEdtTxtEmpty(EditText editText) {
        return editText.getText().toString().trim().isEmpty();
    }

    private long getEdtValueLong(EditText editText) {
        return Long.parseLong(editText.getText().toString().trim());
    }

    private boolean checkCamStoragePer() {
        return checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA);
    }

    private boolean checkPermission(String... permissions) {
        boolean allPermitted = false;
        for (String permission : permissions) {
            allPermitted = (ContextCompat.checkSelfPermission(this, permission) == PackageManager.PERMISSION_GRANTED);
            if (!allPermitted)
                break;
        }
        if (allPermitted)
            return true;
        ActivityCompat.requestPermissions(this, permissions, 220);
        return false;
    }

    private boolean isPermissionOk(int... results) {
        boolean isAllGranted = true;
        for (int result : results) {
            if (PackageManager.PERMISSION_GRANTED != result) {
                isAllGranted = false;
                break;
            }
        }
        return isAllGranted;
    }
}

17 Source : PreviewActivity2.java
with Apache License 2.0
from yellowcath

/**
 * Created by Bhuvnesh on 08-03-2017.
 */
@TargetApi(16)
public clreplaced PreviewActivity2 extends AppCompatActivity {

    private VideoView videoView;

    private SeekBar seekBar;

    private int stopPosition;

    private static final String POSITION = "position";

    static final String FILEPATH = "filepath";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preview);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        videoView = (VideoView) findViewById(R.id.videoView);
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        final TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
        TextureRecordActivity.mRecorder.waitRecordSuccess(new OnRecordListener() {

            @Override
            public void onRecordSuccess(VideoInfo videoInfo) {
                videoView.setVideoURI(Uri.parse(videoInfo.getVideoPath()));
                videoView.start();
                String filePath = videoInfo.getVideoPath();
                String videoInfoStr = "";
                try {
                    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
                    retriever.setDataSource(filePath);
                    int bitrate = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
                    retriever.release();
                    int frameRate = videoInfo.getFrameRate();
                    int width = videoInfo.getVideoWidth();
                    int height = videoInfo.getVideoHeight();
                    int rotation = videoInfo.getVideoRotation();
                    long duration = videoInfo.getDuration();
                    videoInfoStr = String.format("size:%dX%d,framerate:%d,rotation:%d,bitrate:%d,duration:%.1fs", width, height, frameRate, rotation, bitrate, duration / 1000f);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                tvInstruction.setText("Video stored at path " + filePath + "\n" + videoInfoStr);
            }

            @Override
            public void onRecordStart() {
            }

            @Override
            public void onRecordFail(Throwable t) {
            }

            @Override
            public void onRecordStop() {
            }

            @Override
            public void onRecordPause() {
            }

            @Override
            public void onRecordResume() {
            }
        });
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);
                seekBar.setMax(videoView.getDuration());
                seekBar.postDelayed(onEverySecond, 1000);
            }
        });
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser) {
                    // this is when actually seekbar has been seeked to a new position
                    videoView.seekTo(progress);
                }
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        // stopPosition is an int
        stopPosition = videoView.getCurrentPosition();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.seekTo(stopPosition);
        videoView.start();
    }

    private Runnable onEverySecond = new Runnable() {

        @Override
        public void run() {
            if (seekBar != null) {
                seekBar.setProgress(videoView.getCurrentPosition());
            }
            if (videoView.isPlaying()) {
                seekBar.postDelayed(onEverySecond, 1000);
            }
        }
    };

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.gereplacedemId() == android.R.id.home) {
            // close this activity and return to preview activity (if there is any)
            finish();
        }
        return super.onOptionsItemSelected(item);
    }

    public static int selectTrack(MediaExtractor extractor, boolean audio) {
        int numTracks = extractor.getTrackCount();
        for (int i = 0; i < numTracks; i++) {
            MediaFormat format = extractor.getTrackFormat(i);
            String mime = format.getString(MediaFormat.KEY_MIME);
            if (audio) {
                if (mime.startsWith("audio/")) {
                    return i;
                }
            } else {
                if (mime.startsWith("video/")) {
                    return i;
                }
            }
        }
        return -5;
    }
}

17 Source : PreviewActivity.java
with Apache License 2.0
from yellowcath

/**
 * Created by Bhuvnesh on 08-03-2017.
 */
@TargetApi(16)
public clreplaced PreviewActivity extends AppCompatActivity {

    private VideoView videoView;

    private SeekBar seekBar;

    private int stopPosition;

    private static final String POSITION = "position";

    static final String FILEPATH = "filepath";

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_preview);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);
        videoView = (VideoView) findViewById(R.id.videoView);
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        TextView tvInstruction = (TextView) findViewById(R.id.tvInstruction);
        String filePath = getIntent().getStringExtra(FILEPATH);
        String videoInfo = "";
        try {
            MediaMetadataRetriever retriever = new MediaMetadataRetriever();
            retriever.setDataSource(filePath);
            int bitrate = Integer.parseInt(retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_BITRATE));
            retriever.release();
            MediaExtractor extractor = new MediaExtractor();
            extractor.setDataSource(filePath);
            MediaFormat format = extractor.getTrackFormat(selectTrack(extractor, false));
            int frameRate = format.containsKey(MediaFormat.KEY_FRAME_RATE) ? format.getInteger(MediaFormat.KEY_FRAME_RATE) : -1;
            int width = format.getInteger(MediaFormat.KEY_WIDTH);
            int height = format.getInteger(MediaFormat.KEY_HEIGHT);
            int rotation = format.containsKey(MediaFormat.KEY_ROTATION) ? format.getInteger(MediaFormat.KEY_ROTATION) : -1;
            long duration = format.containsKey(MediaFormat.KEY_DURATION) ? format.getLong(MediaFormat.KEY_DURATION) : -1;
            videoInfo = String.format("size:%dX%d,framerate:%d,rotation:%d,bitrate:%d,duration:%.1fs", width, height, frameRate, rotation, bitrate, duration / 1000f / 1000f);
            extractor.release();
        } catch (Exception e) {
            e.printStackTrace();
        }
        tvInstruction.setText("Video stored at path " + filePath + "\n" + videoInfo);
        videoView.setVideoURI(Uri.parse(filePath));
        videoView.start();
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                mp.setLooping(true);
                seekBar.setMax(videoView.getDuration());
                seekBar.postDelayed(onEverySecond, 1000);
            }
        });
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }

            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser) {
                    // this is when actually seekbar has been seeked to a new position
                    videoView.seekTo(progress);
                }
            }
        });
    }

    @Override
    protected void onPause() {
        super.onPause();
        // stopPosition is an int
        stopPosition = videoView.getCurrentPosition();
        videoView.pause();
    }

    @Override
    protected void onResume() {
        super.onResume();
        videoView.seekTo(stopPosition);
        videoView.start();
    }

    private Runnable onEverySecond = new Runnable() {

        @Override
        public void run() {
            if (seekBar != null) {
                seekBar.setProgress(videoView.getCurrentPosition());
            }
            if (videoView.isPlaying()) {
                seekBar.postDelayed(onEverySecond, 1000);
            }
        }
    };

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // handle arrow click here
        if (item.gereplacedemId() == android.R.id.home) {
            // close this activity and return to preview activity (if there is any)
            finish();
        }
        return super.onOptionsItemSelected(item);
    }

    public static int selectTrack(MediaExtractor extractor, boolean audio) {
        int numTracks = extractor.getTrackCount();
        for (int i = 0; i < numTracks; i++) {
            MediaFormat format = extractor.getTrackFormat(i);
            String mime = format.getString(MediaFormat.KEY_MIME);
            if (audio) {
                if (mime.startsWith("audio/")) {
                    return i;
                }
            } else {
                if (mime.startsWith("video/")) {
                    return i;
                }
            }
        }
        return -5;
    }
}

17 Source : MediaActivity.java
with Apache License 2.0
from yangchong211

public clreplaced MediaActivity extends AppCompatActivity {

    private VideoView mVideo;

    private Button mBtnStart;

    private Button mBtnPause;

    private MediaController mMediaController;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_media_player);
        initView();
        initListener();
    }

    private void initView() {
        mVideo = findViewById(R.id.video);
        mBtnStart = findViewById(R.id.btn_start);
        mBtnPause = findViewById(R.id.btn_pause);
        Uri uri = Uri.parse(ConstantVideo.VideoPlayerList[2]);
        mVideo.setVideoURI(uri);
        mMediaController = new MediaController(this);
        mVideo.setMediaController(mMediaController);
        mVideo.start();
        mVideo.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mp) {
                // mp.setLooping(true);
                // 播放
                mp.start();
                BaseToast.showRoundRectToast("开始播放!");
            }
        });
        mVideo.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                BaseToast.showRoundRectToast("播放完毕!");
            }
        });
    }

    private void initListener() {
        mBtnStart.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mVideo.start();
            }
        });
        mBtnPause.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                mVideo.pause();
            }
        });
    }
}

17 Source : RecoderPlayerActivity.java
with Apache License 2.0
from tsy12321

/**
 * 视频播放
 */
public clreplaced RecoderPlayerActivity extends BaseActivity {

    private static final String INTENT_VIDEO_PATH = "video_path";

    private String mVideoPath;

    private VideoView mVideoView;

    private CircleProgressBar mCircleProgressBar;

    private MyOkHttp mMyOkHttp;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_recoder_player);
        mMyOkHttp = new MyOkHttp();
        mVideoPath = getIntent().getStringExtra(INTENT_VIDEO_PATH);
        // video view
        mVideoView = (VideoView) findViewById(R.id.video_view);
        mVideoView.setVisibility(View.GONE);
        // loading circle
        mCircleProgressBar = (CircleProgressBar) findViewById(R.id.circleProgressBar);
        mCircleProgressBar.setVisibility(View.GONE);
        mCircleProgressBar.setColorSchemeResources(android.R.color.holo_blue_light);
    }

    @Override
    protected void onStart() {
        super.onStart();
        // 申请权限
        String[] perms = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
        performCodeWithPermission("需要读取本地文件权限", 1, perms, new BaseActivity.PermissionCallback() {

            @Override
            public void hasPermission(List<String> allPerms) {
                if (mVideoPath.contains("http")) {
                    // 网络视频
                    String localFilename = MD5Utils.getMd5(mVideoPath);
                    // 存储路径
                    final String path = Environment.getExternalStorageDirectory() + "/a.com.tsy.videodemo/" + localFilename + ".mp4";
                    // 存储下载路径
                    String tempPath = Environment.getExternalStorageDirectory() + "/a.com.tsy.videodemo/" + localFilename + "_temp.mp4";
                    if (new File(path).exists()) {
                        // 有缓存
                        mVideoPath = path;
                        playLocalVideo();
                    } else {
                        mMyOkHttp.download().url(mVideoPath).filePath(tempPath).tag(this).enqueue(new DownloadResponseHandler() {

                            @Override
                            public void onFinish(File downloadFile) {
                                downloadFile.renameTo(new File(path));
                                mVideoPath = path;
                                playLocalVideo();
                            }

                            @Override
                            public void onProgress(long currentBytes, long totalBytes) {
                                mCircleProgressBar.setProgress((int) ((float) currentBytes * 100 / totalBytes));
                            }

                            @Override
                            public void onStart(long totalBytes) {
                                mCircleProgressBar.setVisibility(View.VISIBLE);
                            }

                            @Override
                            public void onFailure(String error_msg) {
                                Toast.makeText(getApplicationContext(), "视频下载错误", Toast.LENGTH_SHORT).show();
                            }
                        });
                    }
                } else {
                    // 本地视频
                    playLocalVideo();
                }
            }

            @Override
            public void noPermission(List<String> deniedPerms, List<String> grantedPerms, Boolean hasPermanentlyDenied) {
                if (hasPermanentlyDenied) {
                    alertAppSetPermission("前往设置开启权限");
                }
            }
        });
    }

    @Override
    protected void onStop() {
        super.onStop();
        mVideoView.pause();
    }

    // 播放本地视频
    private void playLocalVideo() {
        // 获取屏幕宽度
        DisplayMetrics dm = getResources().getDisplayMetrics();
        // 获取视频宽高
        MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
        mediaMetadataRetriever.setDataSource(mVideoPath);
        float mediaWidth = dm.widthPixels;
        float mediaHeight = dm.heightPixels;
        try {
            int rotation = Integer.parseInt(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_ROTATION));
            if (rotation == 90 || rotation == 270) {
                mediaWidth = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
                mediaHeight = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
            } else {
                mediaWidth = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH));
                mediaHeight = Float.parseFloat(mediaMetadataRetriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT));
            }
        } catch (NullPointerException e) {
            Toast.makeText(getApplicationContext(), "视频播放错误,请重试", Toast.LENGTH_SHORT).show();
            File file = new File(mVideoPath);
            if (file.exists() && file.isFile()) {
                file.delete();
            }
            finish();
        }
        // 根据比例占全屏
        int width = 0;
        int height = 0;
        if (mediaWidth / mediaHeight > dm.widthPixels / dm.heightPixels) {
            width = dm.widthPixels;
            height = (int) (mediaHeight / (mediaWidth / dm.widthPixels));
        } else {
            height = dm.heightPixels;
            width = (int) (mediaWidth / (mediaHeight / dm.heightPixels));
        }
        ViewGroup.LayoutParams layoutParams = mVideoView.getLayoutParams();
        layoutParams.width = width;
        layoutParams.height = height;
        mVideoView.setLayoutParams(layoutParams);
        // 视频路径
        mVideoView.setVideoPath(mVideoPath);
        // 点击退出
        mVideoView.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                switch(event.getAction()) {
                    case MotionEvent.ACTION_UP:
                        finish();
                        break;
                }
                return true;
            }
        });
        // 循环播放
        mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                mVideoView.seekTo(0);
                mVideoView.start();
            }
        });
        mVideoView.setVisibility(View.VISIBLE);
        mVideoView.start();
    }

    /**
     * 打开视频
     * @param context
     * @param videoPath
     * @return
     */
    public static Intent createIntent(Context context, String videoPath) {
        Intent intent = new Intent(context, RecoderPlayerActivity.clreplaced);
        intent.putExtra(INTENT_VIDEO_PATH, videoPath);
        return intent;
    }
}

17 Source : TimelineVideoActivity.java
with GNU General Public License v3.0
from swentel

public clreplaced TimelineVideoActivity extends AppCompatActivity {

    VideoView videoPlayer;

    TextView noVideo;

    MediaController mediaController;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_timeline_video);
        noVideo = findViewById(R.id.timeline_video_not_video_found);
        videoPlayer = findViewById(R.id.timeline_video);
        Bundle extras = getIntent().getExtras();
        if (extras != null) {
            final String videoUrl = extras.getString("video");
            if (videoUrl != null) {
                if (videoUrl.contains("youtube.com")) {
                    hideVideoPlayer(false);
                    TextView youtubeVideo = findViewById(R.id.timeline_video_youtube);
                    youtubeVideo.setVisibility(View.VISIBLE);
                    youtubeVideo.setOnClickListener(new View.OnClickListener() {

                        @Override
                        public void onClick(View v) {
                            Intent i = new Intent(Intent.ACTION_VIEW);
                            i.setData(Uri.parse(videoUrl));
                            startActivity(i);
                        }
                    });
                } else {
                    videoPlayer.setVideoPath(videoUrl);
                    videoPlayer.canPause();
                    mediaController = new MediaController(this);
                    mediaController.setAnchorView(videoPlayer);
                    videoPlayer.setMediaController(mediaController);
                    videoPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

                        @Override
                        public void onPrepared(MediaPlayer mp) {
                            mediaController.show();
                            if (Preferences.getPreference(TimelineVideoActivity.this, "pref_key_video_autoplay", false)) {
                                videoPlayer.start();
                            }
                        }
                    });
                }
            } else {
                hideVideoPlayer(true);
            }
        } else {
            hideVideoPlayer(true);
        }
    }

    public void hideVideoPlayer(boolean showVideoNotFound) {
        videoPlayer.setVisibility(View.GONE);
        if (showVideoNotFound) {
            noVideo.setVisibility(View.VISIBLE);
        }
    }

    @Override
    public void onBackPressed() {
        if (videoPlayer != null) {
            videoPlayer.stopPlayback();
        }
        super.onBackPressed();
    }

    @Override
    public void onDestroy() {
        if (videoPlayer != null) {
            videoPlayer.stopPlayback();
        }
        super.onDestroy();
    }
}

17 Source : VideoCameraActivity.java
with Apache License 2.0
from retomeier

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == RECORD_VIDEO) {
        VideoView videoView = findViewById(R.id.videoView);
        videoView.setVideoURI(data.getData());
        videoView.start();
    }
}

17 Source : NineGridItemDetailActivity.java
with MIT License
from littlecurl

/**
 * 计算图片/视频的宽高
 */
private void computeMediaViewWidthAndHeight(View view) {
    if (view instanceof PhotoView) {
        PhotoView photoView = (PhotoView) view;
        // 获取真实大小
        Drawable drawable = photoView.getDrawable();
        int intrinsicHeight = drawable.getIntrinsicHeight();
        int intrinsicWidth = drawable.getIntrinsicWidth();
        // 计算出与屏幕的比例,用于比较以宽的比例为准还是高的比例为准,因为很多时候不是高度没充满,就是宽度没充满
        float h = screenHeight * 1.0f / intrinsicHeight;
        float w = screenWidth * 1.0f / intrinsicWidth;
        if (h > w)
            h = w;
        else
            w = h;
        // 得出当宽高至少有一个充满的时候图片对应的宽高
        mediaItemViewRealHeight = (int) (intrinsicHeight * h);
        mediaItemViewRealWidth = (int) (intrinsicWidth * w);
    } else if (view instanceof VideoView) {
        VideoView videoView = (VideoView) view;
        int intrinsicHeight = videoView.getHeight();
        int intrinsicWidth = videoView.getHeight();
        // 计算出与屏幕的比例,用于比较以宽的比例为准还是高的比例为准,因为很多时候不是高度没充满,就是宽度没充满
        float h = screenHeight * 1.0f / intrinsicHeight;
        float w = screenWidth * 1.0f / intrinsicWidth;
        if (h > w)
            h = w;
        else
            w = h;
        // 得出当宽高至少有一个充满的时候图片对应的宽高
        mediaItemViewRealHeight = (int) (intrinsicHeight * h);
        mediaItemViewRealWidth = (int) (intrinsicWidth * w);
    }
}

17 Source : TrimContainer.java
with Apache License 2.0
from JessYanCoding

private void changeRange(VideoView videoView, VideoPauseListener videoPauseListener, boolean isPreviewStart) {
    videoPauseListener.onChange();
    mIsPreviewStart = isPreviewStart;
    if (isPreviewStart) {
        videoView.seekTo((int) getStartTime());
    } else {
        videoView.seekTo((int) getEndTime());
    }
    if (videoView.isPlaying()) {
        videoPauseListener.onVideoPause();
    }
    isRangeChange = true;
    mIndicatorPosition = 0;
}

17 Source : PageTrim.java
with Apache License 2.0
from JessYanCoding

/**
 * ================================================
 * Created by JessYan on 2020/4/15 12:02
 * <a href="mailto:[email protected]">Contact me</a>
 * <a href="https://github.com/JessYanCoding">Follow me</a>
 * ================================================
 */
public clreplaced PageTrim implements Page {

    private PictureSelectionConfig mConfig;

    private LocalMedia mMedia;

    private VideoView mVideoView;

    private boolean mIsAspectRatio;

    private TrimContainer.VideoPauseListener mVideoPauseListener;

    private TrimContainer mContainer;

    public PageTrim(PictureSelectionConfig config, LocalMedia media, VideoView videoView, boolean isAspectRatio, TrimContainer.VideoPauseListener videoPauseListener) {
        mConfig = config;
        mMedia = media;
        mVideoView = videoView;
        mIsAspectRatio = isAspectRatio;
        mVideoPauseListener = videoPauseListener;
    }

    @Override
    public View getView(Context context) {
        mContainer = new TrimContainer(context, mConfig, mMedia, mVideoView, mVideoPauseListener);
        return mContainer;
    }

    @Override
    public void refreshData(Context context) {
    }

    @Override
    public void init(int position, ViewGroup parent) {
    }

    @Override
    public String getreplacedle(Context context) {
        return context.getString(R.string.trim);
    }

    @Override
    public Rect disallowInterceptTouchRect() {
        return null;
    }

    public long getStartTime() {
        if (mContainer != null) {
            return mContainer.getStartTime();
        }
        return 0;
    }

    public void resetStartLine() {
        if (mContainer != null) {
            mContainer.resetStartLine();
        }
    }

    public void trimVideo(InstagramMediaProcessActivity activity, CountDownLatch count) {
        if (mContainer != null) {
            // mContainer.trimVideo(activity, count);
            mContainer.cropVideo(activity, mIsAspectRatio);
        }
    }

    public void playVideo(boolean isPlay, VideoView videoView) {
        if (mContainer != null) {
            mContainer.playVideo(isPlay, videoView);
        }
    }

    @Override
    public void onResume() {
        if (mContainer != null) {
            mContainer.onResume();
        }
    }

    @Override
    public void onPause() {
        if (mContainer != null) {
            mContainer.onPause();
        }
    }

    @Override
    public void onDestroy() {
        if (mContainer != null) {
            mContainer.onDestroy();
            mContainer = null;
        }
    }
}

17 Source : MainActivity.java
with MIT License
from HamedTaherpour

public clreplaced MainActivity extends AppCompatActivity implements View.OnClickListener {

    private FloatingLayout floatingLayout;

    private VideoView videoView;

    private FloatingListener floatingListener = new FloatingListener() {

        @Override
        public void onCreateListener(View view) {
            initVideoView(view);
            view.findViewById(R.id.btn_close).setOnClickListener(MainActivity.this);
        }

        @Override
        public void onCloseListener() {
            videoView.stopPlayback();
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.btn_run).setOnClickListener(this);
    }

    private void initVideoView(View view) {
        videoView = view.findViewById(R.id.video_player);
        Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.matrix);
        videoView.setVideoURI(uri);
        videoView.start();
    }

    @Override
    public void onClick(View view) {
        switch(view.getId()) {
            case R.id.btn_run:
                if (!isNeedPermission())
                    showFloating();
                else
                    requestPermission();
                break;
            case R.id.btn_close:
                floatingLayout.destroy();
                break;
        }
    }

    private boolean isNeedPermission() {
        return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && !Settings.canDrawOverlays(this);
    }

    private void requestPermission() {
        Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, Uri.parse("package:" + getPackageName()));
        startActivityForResult(intent, 25);
    }

    private void showFloating() {
        floatingLayout = new FloatingLayout(getApplicationContext(), R.layout.floating_layout);
        floatingLayout.setFloatingListener(floatingListener);
        floatingLayout.create();
    }
}

17 Source : VideoPlayer.java
with Apache License 2.0
from djzhao627

/**
 * Created by djzhao on 17/04/29.
 */
public clreplaced VideoPlayer extends BaseActivity {

    private VideoView videoView;

    private MediaController mediaController;

    private Context mContext;

    private int tag;

    private boolean videoStop;

    private int currentPosition;

    private String duration = "0";

    @Override
    protected void onCreate(Bundle paramBundle) {
        super.onCreate(paramBundle);
        tag = getIntent().getIntExtra("tag", 1);
        setContentView(R.layout.activity_test_video_player);
        findViewById();
        initView();
    }

    @Override
    protected void findViewById() {
        this.videoView = $(R.id.player_test_vv);
    }

    @Override
    protected void initView() {
        mContext = this;
        uiFlusHandler = new MyDialogHandler(mContext, "数据同步中...");
        loadVideo();
    }

    private void loadVideo() {
        // String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/movie.mp4";
        String uri = "android.resource://" + getPackageName() + "/";
        switch(tag) {
            case 1:
                duration = "8";
                uri += R.raw.base;
                break;
            case 2:
                duration = "9";
                uri += R.raw.enhance;
                break;
            case 3:
                duration = "11";
                uri += R.raw.acme;
                break;
        }
        // 本地视频
        // videoView.setVideoPath(path);
        // 网络视频
        // videoView.setVideoURI(Uri.parse("http://www.runoob.com/try/demo_source/movie.mp4"));
        videoView.setVideoURI(Uri.parse(uri));
        mediaController = new MediaController(this);
        videoView.setMediaController(mediaController);
        mediaController.setMediaPlayer(videoView);
        videoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
                videoStop = true;
                saveTrainRecord();
            }
        });
        videoView.start();
    }

    private void saveTrainRecord() {
        uiFlusHandler.sendEmptyMessage(SHOW_LOADING_DIALOG);
        String url = Constants.BASE_URL + "Train?method=addNewTrainRecord";
        OkHttpUtils.post().url(url).id(1).addParams("userId", Constants.USER.getUserId() + "").addParams("duration", duration).build().execute(new MyStringCallback());
    }

    private void showInfo() {
        String message = "";
        switch(tag) {
            case 1:
                message = "“肌撕裂者-初级”";
                break;
            case 2:
                message = "“肌撕裂者-中级”";
                break;
            case 3:
                message = "“肌撕裂者-极致”";
                break;
        }
        SystemClock.sleep(1000);
        AlertDialog.Builder builder = new AlertDialog.Builder(VideoPlayer.this);
        builder.setreplacedle("锻炼结束").setMessage("恭喜你," + message + "锻炼结束!").setPositiveButton("好的", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
                finish();
            }
        }).create().show();
    }

    public clreplaced MyStringCallback extends StringCallback {

        @Override
        public void onResponse(String response, int id) {
            uiFlusHandler.sendEmptyMessage(DISMISS_LOADING_DIALOG);
            switch(id) {
                case 1:
                    if (response.contains("error")) {
                        DisplayToast("锻炼记录同步失败");
                    }
                    showInfo();
                    break;
                default:
                    DisplayToast("what?");
                    break;
            }
        }

        @Override
        public void onError(Call arg0, Exception arg1, int arg2) {
            Toast.makeText(mContext, "网络链接出错!", Toast.LENGTH_SHORT).show();
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (!videoStop) {
                videoView.pause();
                currentPosition = videoView.getCurrentPosition();
                AlertDialog.Builder builder = new AlertDialog.Builder(VideoPlayer.this);
                builder.setreplacedle("猛男").setMessage("你确定要放弃锻炼吗?").setPositiveButton("择日再战", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        finish();
                    }
                }).setNegativeButton("我怎么可能半途而废", new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        videoView.seekTo(currentPosition);
                        videoView.start();
                    }
                }).create().show();
            }
        }
        return super.onKeyDown(keyCode, event);
    }
}

17 Source : VideoPlayerActivity.java
with MIT License
from CommonsLab

public clreplaced VideoPlayerActivity extends AppCompatActivity {

    private VideoView videoView;

    private Contribution contribution;

    private String thumbnailURL;

    private String localVideoURI;

    private FrameLayout loadingScreen;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_player);
        videoView = (VideoView) findViewById(R.id.videoView);
        loadingScreen = (FrameLayout) findViewById(R.id.progressBarContainer);
        videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayer mediaPlayer) {
                loadingScreen.setVisibility(View.GONE);
            }
        });
        this.getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        int playerLocation = -1;
        if (savedInstanceState != null) {
            if (localVideoURI == null) {
                contribution = savedInstanceState.getParcelable("Contribution");
                thumbnailURL = savedInstanceState.getString("ThumbnailURL");
            } else {
                localVideoURI = savedInstanceState.getString("VideoURI");
            }
            playerLocation = savedInstanceState.getInt("Location");
        } else {
            contribution = getIntent().getExtras().getParcelable("Contribution");
            thumbnailURL = getIntent().getExtras().getString("ThumbnailURL");
            localVideoURI = getIntent().getExtras().getString("LocalVideoURI");
        }
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
        if (localVideoURI == null) {
            if (contribution != null) {
                Uri uri = Uri.parse(contribution.getUrl());
                videoView.setMediaController(mediaController);
                videoView.setVideoURI(uri);
                if (playerLocation != -1)
                    videoView.seekTo(playerLocation);
                videoView.start();
            } else
                Toast.makeText(this, R.string.an_error_accourred, Toast.LENGTH_SHORT).show();
        } else {
            // Playing local video
            Uri uri = Uri.parse(localVideoURI);
            videoView.setMediaController(mediaController);
            videoView.setVideoURI(uri);
            if (playerLocation != -1)
                videoView.seekTo(playerLocation);
            videoView.start();
        }
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putInt("Location", videoView.getCurrentPosition());
        if (localVideoURI == null) {
            outState.putParcelable("Contribution", contribution);
            outState.putString("ThumbnailURL", thumbnailURL);
        } else {
            outState.putString("VideoURI", localVideoURI);
        }
    }
    // private void configurationSetup() {
    // RelativeLayout videoPlayer_container = (RelativeLayout) findViewById(R.id.videoPlayer_container);
    // 
    // Configuration newConfig = getResources().getConfiguration();
    // if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
    // Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    // // set background for landscape
    // } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
    // // Calculate ActionBar height
    // TypedValue typedValue = new TypedValue();
    // if (getTheme().resolveAttribute(android.R.attr.actionBarSize, typedValue, true)) {
    // int actionBarHeight = TypedValue.complexToDimensionPixelSize(typedValue.data, getResources().getDisplayMetrics());
    // videoView.setPadding(0, 0, 0, actionBarHeight);
    // }
    // Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    // // set background for portrait
    // }
    // }
}

See More Examples