调用系统相机相册录像机demo

来源:互联网 发布:网络广告词 编辑:程序博客网 时间:2024/04/28 20:14

点击事件

@Override    public void onClick(View v) {                switch (v.getId()) {                      case R.id.camera_EditQuestionActivity:                //拍照                Intent intentFromCapture = new Intent(                        MediaStore.ACTION_IMAGE_CAPTURE);                String sdState = Environment.getExternalStorageState();                if (!sdState.equals(Environment.MEDIA_MOUNTED)) {                    Toast.makeText(this, "没有安装内存卡,无法存储图片", Toast.LENGTH_LONG).show();                    return;                }                fileUri = FileUtils.getOutputMediaFileUri(MEDIA_TYPE_IMAGE);                intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);                startActivityForResult(intentFromCapture,                        CAMERA_REQUEST_CODE);                break;            case R.id.video_EditQuestionActivity:                Intent intentVideo = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);                //设置视频质量                intentVideo.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0.9);                //限制时长//                intentVideo.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 5);                // 限制大小                intentVideo.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1080 * 720);                startActivityForResult(intentVideo, VIDEO_REQUEST_CODE);                break;            case R.id.voice_EditQuestionActivity:                Intent intentRecord = new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);                startActivityForResult(intentRecord, RECORDER_REQUEST_CODE);                break;            case R.id.photo_EditQuestionActivity:                Intent intentFromGallery = new Intent(                        Intent.ACTION_PICK,                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI);                intentFromGallery.setType("image/*;video/*");                startActivityForResult(intentFromGallery,                        PHOTO_REQUEST_CODE);                break;        }    }
@Override    public void onActivityResult(int requestCode, int resultCode, Intent data) {        //结果码不等于取消时候        if (resultCode != this.RESULT_CANCELED) {            switch (requestCode) {                case PHOTO_REQUEST_CODE:                    Uri photoUri = data.getData();                    String[] proj = {MediaStore.Images.Media.DATA};                    Cursor photoCursor = managedQuery(photoUri, proj, null, null, null);                    Uri fileUri;                    if (photoCursor != null) {                        int actual_image_column_index = photoCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                        photoCursor.moveToFirst();                        String img_path = photoCursor.getString(actual_image_column_index);                        File cameraFile = new File(img_path);                        fileUri = Uri.fromFile(cameraFile);                    } else {                        fileUri = photoUri;                    }                    String fileFormat = fileUri.toString().substring(fileUri.toString().lastIndexOf(".") + 1).toLowerCase();                    Bitmap bitmapPhoto;//                    MyLog.e("kkk", "EditQuestion--DCIM=" + fileUri.toString());                    if ("mp4".equals(fileFormat) | "m4a".equals(fileFormat) | "3gp".equals(fileFormat)) {                        videoPath = fileUri.getPath();                        bitmapVideo = getVideoThumbnail(fileUri.getPath(), 400, 400, 96);                        saveBitmapfile(bitmapVideo);                        video_question_EditQuestionActivity.setImageBitmap(bitmapVideo);                        video_question_EditQuestionActivity.setVisibility(View.VISIBLE);                        play_videoquestion.setVisibility(View.VISIBLE);                    } else if ("jpg".equals(fileFormat) | "png".equals(fileFormat) | "jpeg".equals(fileFormat)) {                        if (list.size() <= 8) {                            bitmapPhoto = createThumbnail(fileUri.getPath(), 500, 500);                            list.add(bitmapPhoto);                            adapter.setData(list);                            bitmapPhoto = null;                        } else {                            //Toast                        }                    }                    break;                case CAMERA_REQUEST_CODE:                    if (list.size() <= 8) {                        mediaFile = getImgFile();                        Uri cameraUri = Uri.fromFile(mediaFile);                        Bitmap bitmapCamera = createThumbnail(cameraUri.getPath(), 500, 500);                        list.add(bitmapCamera);                        adapter.setData(list);                        bitmapCamera = null;                    } else {                        Toast.makeText(this, "最多只能上传9张图片", Toast.LENGTH_SHORT).show();                    }                    break;                case VIDEO_REQUEST_CODE:                    String[] projVideo = {MediaStore.Images.Media.DATA};                    Cursor videoCursor = managedQuery(data.getData(), projVideo, null, null, null);                    Uri videoUri;                    if (videoCursor != null) {                        int actual_image_column_index = videoCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                        videoCursor.moveToFirst();                        String img_path = videoCursor.getString(actual_image_column_index);                        File fileVideo = new File(img_path);                        videoUri = Uri.fromFile(fileVideo);                    } else {                        videoUri = data.getData();                    }                    videoPath = videoUri.getPath();                    bitmapVideo = getVideoThumbnail(videoPath, 400, 400, 96);                    saveBitmapfile(bitmapVideo);                                        bitmapVideo = null;                    break;                case RECORDER_REQUEST_CODE:                    String[] projAudio = {MediaStore.Images.Media.DATA};                    Cursor audioCursor = managedQuery(data.getData(), projAudio, null, null, null);                    Uri audioUri;                    if (audioCursor != null) {                        int actual_image_column_index = audioCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);                        audioCursor.moveToFirst();                        String img_path = audioCursor.getString(actual_image_column_index);                        File fileVideo = new File(img_path);                        audioUri = Uri.fromFile(fileVideo);                    } else {                        audioUri = data.getData();                    }                    audioPath = audioUri.getPath();                    final MediaPlayer mp = MediaPlayer.create(getApplicationContext(), audioUri);                    break;            }        }        super.onActivityResult(requestCode, resultCode, data);    }
public File getImgFile() {    File ret = null;    File mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "YYEKT");    ret = new File(mediaStorageDir.getAbsolutePath() +            "/IMG" +".png");    return ret;}/** * 对图片进行二次采样,生成缩略图。放置加载过大图片出现内存溢出 */private Bitmap createThumbnail(String filePath, int newWidth, int newHeight) {    BitmapFactory.Options options = new BitmapFactory.Options();    options.inJustDecodeBounds = true;    BitmapFactory.decodeFile(filePath, options);    int originalWidth = options.outWidth;    int originalHeight = options.outHeight;    int ratioWidth = originalWidth / newWidth;    int ratioHeight = originalHeight / newHeight;    options.inSampleSize = ratioHeight > ratioWidth ? ratioHeight            : ratioWidth;    options.inJustDecodeBounds = false;    return BitmapFactory.decodeFile(filePath, options);}private 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;}private boolean saveBitmapfile(Bitmap bmp) {    Bitmap.CompressFormat format = Bitmap.CompressFormat.JPEG;    int quality = 100;    OutputStream stream = null;    try {        stream = new FileOutputStream(Environment.getExternalStorageDirectory() +"videoImage.jpg");    } catch (FileNotFoundException e) {        e.printStackTrace();    }    return bmp.compress(format, quality, stream);}private File getBitmapfile(Bitmap bmp) {    Bitmap.CompressFormat format = Bitmap.CompressFormat.JPEG;    int quality = 100;    OutputStream stream = null;    try {     stream=new FileOutputStream(Environment.getExternalStorageDirectory()+ ".jpg");    } catch (FileNotFoundException e) {        e.printStackTrace();    }    bmp.compress(format, quality, stream);    return new File(Environment.getExternalStorageDirectory()+ (num) + ".jpg");}

0 0