调用系统相机和视频录制

编程入门 行业动态 更新时间:2024-10-24 04:48:59

调用系统<a href=https://www.elefans.com/category/jswz/34/1768004.html style=相机和视频录制"/>

调用系统相机和视频录制

一. 打开相机

protected void startOpenCamera() {Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if (cameraIntent.resolveActivity(getPackageManager()) != null) {Uri imageUri;if (SdkVersionUtils.checkedAndroid_Q()) {imageUri = createImageUri(getApplicationContext());if (imageUri != null) {cameraPath = imageUri.toString();}} else {int chooseMode = config.mimeType == PictureConfig.TYPE_ALL ? PictureConfig.TYPE_IMAGE: config.mimeType;File cameraFile = PictureFileUtils.createCameraFile(getApplicationContext(),chooseMode, outputCameraPath, config.suffixType);cameraPath = cameraFile.getAbsolutePath();imageUri = parUri(cameraFile);}cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);startActivityForResult(cameraIntent, PictureConfig.REQUEST_CAMERA);}}public static Uri createImageUri(final Context context) {final Uri[] imageFilePath = {null};String status = Environment.getExternalStorageState();String time = System.currentTimeMillis() + "";// ContentValues是我们希望这条记录被创建时包含的数据信息ContentValues values = new ContentValues(3);long millis = System.currentTimeMillis();values.put(MediaStore.Images.Media.DISPLAY_NAME, "IMG_" + sf.format(millis));values.put(MediaStore.Images.Media.DATE_TAKEN, time);values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");imageFilePath[0] = context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);return imageFilePath[0];}

二 . 打开视频录制

protected void startOpenCameraVideo() {Intent cameraIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);if (cameraIntent.resolveActivity(getPackageManager()) != null) {Uri imageUri;if (SdkVersionUtils.checkedAndroid_Q()) {imageUri = createVideoUri(getApplicationContext());if (imageUri != null) {cameraPath = imageUri.toString();}} else {File cameraFile = PictureFileUtils.createCameraFile(this, config.mimeType ==PictureConfig.TYPE_ALL ? PictureConfig.TYPE_VIDEO : config.mimeType,outputCameraPath, config.suffixType);cameraPath = cameraFile.getAbsolutePath();imageUri = parUri(cameraFile);}cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);cameraIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, config.recordVideoSecond);cameraIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, config.videoQuality);startActivityForResult(cameraIntent, PictureConfig.REQUEST_CAMERA);}}public static Uri createVideoUri(final Context context) {final Uri[] imageFilePath = {null};String status = Environment.getExternalStorageState();String time = System.currentTimeMillis() + "";long millis = System.currentTimeMillis();ContentValues values = new ContentValues(3);values.put(MediaStore.Video.Media.DISPLAY_NAME, "VID_" + sf.format(millis));values.put(MediaStore.Video.Media.DATE_TAKEN, time);values.put(MediaStore.Video.Media.MIME_TYPE, "video/mp4");imageFilePath[0] = context.getContentResolver().insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, values);return imageFilePath[0];}

三 .获取照片或视频存储路径

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {boolean isAndroidQ = SdkVersionUtils.checkedAndroid_Q();if (config.mimeType == PictureMimeType.ofAudio()) {cameraPath = getAudioPath(data);}String mimeType = null;media = new LocalMedia();// on take photo successif (isAndroidQ) {String path = PictureFileUtils.getPath(getApplicationContext(), Uri.parse(cameraPath));File file = new File(path);mimeType = PictureMimeType.fileToType(file);sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));if (config.mimeType != PictureMimeType.ofAudio()) {int degree = PictureFileUtils.readPictureDegree(file.getAbsolutePath());rotateImage(degree, file);}// 生成新拍照片或视频对象Log.e("PictureSelectorActivity", "path=====" + path);media.setPath(path);} else {final File file = new File(cameraPath);sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));mimeType = PictureMimeType.fileToType(file);if (config.mimeType != PictureMimeType.ofAudio()) {int degree = PictureFileUtils.readPictureDegree(file.getAbsolutePath());rotateImage(degree, file);}// 生成新拍照片或视频对象Log.e("PictureSelectorActivity", "cameraPath=====" + cameraPath);media.setPath(cameraPath);}boolean eqVideo = mimeType.startsWith(PictureConfig.VIDEO);int duration = eqVideo ? PictureMimeType.getLocalVideoDuration(cameraPath) : 0;String pictureType = "";if (config.mimeType == PictureMimeType.ofAudio()) {pictureType = "audio/mpeg";duration = PictureMimeType.getLocalVideoDuration(cameraPath);} else {pictureType = eqVideo ? PictureMimeType.createVideoType(cameraPath): PictureMimeType.createImageType(cameraPath);}media.setPictureType(pictureType);media.setDuration(duration);media.setMimeType(config.mimeType);
}

更多推荐

调用系统相机和视频录制

本文发布于:2023-12-03 09:31:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1653791.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:相机   系统   视频

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!