添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
一、去录像
Intent intent = new Intent(); intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE); intent.addCategory(Intent.CATEGORY_DEFAULT); File file = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis() + ""); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// videoUri = FileProvider.getUriForFile(activity, FP_AUTHORITIES, file); //第二种方式,无需其他操作 ContentValues contentValues = new ContentValues(1); contentValues.put(MediaStore.Images.Media.DATA, file.getAbsolutePath()); videoUri = activity.getApplication().getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);} else { videoUri = Uri.fromFile(file);}intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 10);// 以秒为单位intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024 * 1024);// 以字节为单位intent.putExtra(MediaStore.EXTRA_FULL_SCREEN, true);intent.putExtra(MediaStore.EXTRA_FINISH_ON_COMPLETION, true);// 默认值为true,这意味着自动退出电影播放器活动电影完成后玩。intent.putExtra(MediaStore.EXTRA_OUTPUT, videoUri);if(fragment == null) activity.startActivityForResult(intent, CODE_VIDEO);else fragment.startActivityForResult(intent,CODE_VIDEO);
其中fileprovider参照这个就行 https://blog.youkuaiyun.com/toast_tips/article/details/79804352
二、从录像中获取一张照片
//根据uri获取视频中的一张图片 private Bitmap getBitmapByVideo(Uri videoUri) { if(videoUri == null) return null; MediaMetadataRetriever media = new MediaMetadataRetriever(); media.setDataSource(activity, videoUri); return media.getFrameAtTime(); }
三、播放视频
这里用的是videoview
设置很简单
vv.setVideoURI((Uri) nowVideoIv.getTag()); //添加视频控制器 vv.setMediaController(new MediaController(activity)); vv.start(); vv.requestFocus();
有一点需要注意的是如果在dialog中使用videoview可能会造成视频变暗,可以通过
vv.setZOrderOnTop(true);这个方法解决.但是这样会使视频上面的控件被视频盖住。