- 相机拍照
private Uri mImageUri;
//假设拍照片保存在DCIM公共目录,为了查看方便,尽可能的将逻辑写在一个方法里
private void takePicture() {
String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath();
String name = System.currentTimeMillis() + ".jpg";
File file = new File(path,name);
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
/**
* 主要适配的点在mImageUri赋值这里
*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// Android Q得用MediaStore先存一下
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME,name);
values.put(MediaStore.Images.Media.RELATIVE_PATH,Environment.DIRECTORY_DCIM);
values.put(MediaStore.Images.Media.MIME_TYPE,"image/jpeg");
mUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,values);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// Android N版本需要用FileProvider
mUri = FileProvider.getUriForFile(this,getPackageName()+ "fileProvider",file);
} else {
// 古老的版本用这个
mUri = Uri.fromFile(file);
}
// 指定图片保存的位置
intent.putExtra(MediaStore.EXTRA_OUTPUT,mUri);
startActivityForResult(intent,REQUEST_CODE_CAMERA);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_CAMERA) {
if (resultCode == RESULT_OK) {
// 这里就不要用data.getData()了,有可能返回空。
// 直接用之前的mUri
// 低版本需要绝对地址的,直接拿方法中的path
Glide.with(this).load(mUri).into(mImageView);
}
}
}
- 拍视频
依葫芦画瓢吧!
网友评论