点击事件
@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"); }