调用系统相机拍照、调用相册、调用系统录像并获取缩略图

来源:互联网 发布:网络胜利组漫画在线 编辑:程序博客网 时间:2024/05/17 06:58

第一次写博客,可能写的不太好,望各位IT人士包涵。
这里介绍了如何调用系统拍照并返回、调用系统相册选取图片并返回、调用系统相机录像并获取缩略图。
注:TAKE_PICTURE、CHOOSE_PICTURE、TAKE_VEDIO均为自定义的常量,用于拍照成功、选取图片成功、录像成功返回标识
1、调用系统拍照

//调用系统相机拍照Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); //指定照片保存路径(SD卡),image.jpg为一个临时文件,每次拍照后这个图片都会被替换File file=new File("mnt/sdcard/image.png");                Uri imageUri = Uri.fromFile(file);                    //这句代码是保存到此路径      openCameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);              startActivityForResult(openCameraIntent, TAKE_PICTURE);

2、调用系统相册

//调用系统相册Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT);//设置type为image类型的(png、jpg等所有图片格式都支持,如果*改为png的话,则只会显示png格式的图片)                openAlbumIntent.setType("image/*");startActivityForResult(openAlbumIntent,CHOOSE_PICTURE);

3、调用系统相机录像并返回

Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);//设置视频的品质为高 intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1);File file2 = new File("/mnt/sdcard/123.mp4");        if (file.exists()) {            file.delete();        }        Uri uri = Uri.fromFile(file);        //保存到file文件        intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);        startActivityForResult(intent, TAKE_VEDIO);

4、成功后的处理

@Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if (resultCode == getActivity().RESULT_OK) {            ImageView imageView = new ImageView(getActivity());            switch (requestCode) {            //拍照成功            case TAKE_PICTURE:     Bitmap bitmap =BitmapFactory.decodeFile(Environment                .getExternalStorageDirectory() + "/image.jpg");        imageView.setImageBitmap(bitmap);                break;                //调用系统相册成功        case CHOOSE_PICTURE:                        ContentResolver resolver = activity.getContentResolver();        // 照片的原始资源地址        Uri originalUri = data.getData();            // 使用ContentProvider通过URI获取原始图片            Bitmap photo = MediaStore.Images.Media.getBitmap(resolver,                    originalUri);                    imageView.setImageBitmap(bitmap);                break;                //录像成功            case TakeCapture.TAKE_VEDIO:                 File file2 = new File("/mnt/sdcard/123.mp4");                 //ThumbnailUtil.getVideoThumbnail()方法介绍往下看                 Bitmap bitmap2 = ThumbnailUtil.getVideoThumbnail(file2.getAbsolutePath(), width,height,MediaStore.Images.Thumbnails.MICRO_KIND);imageView.setImageBitmap(bitmap2);                break;            default:                break;            }        }    }
5、获取视频的缩略图 
/**       * 获取视频的缩略图       * 先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图。       * 如果想要的缩略图的宽和高都小于MICRO_KIND,则类型要使用MICRO_KIND作为kind的值,这样会节省内存。       * @param videoPath 视频的路径       * @param width 指定输出视频缩略图的宽度       * @param height 指定输出视频缩略图的高度度       * @param kind 参照MediaStore.Images.Thumbnails类中的常量MINI_KIND和MICRO_KIND。       *            其中,MINI_KIND: 512 x 384,MICRO_KIND: 96 x 96       * @return 指定大小的视频缩略图       */       public static Bitmap getVideoThumbnail(String videoPath, int width, int height,         int kind) {        Bitmap bitmap = null;        // 获取视频的缩略图        bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);        bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,          ThumbnailUtils.OPTIONS_RECYCLE_INPUT);        return bitmap;       }  
 写的比较乱,望大家包涵
1 0
原创粉丝点击