权限
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.CAMERA"></uses-permission>
跳转到照相机
private void intent_Carmer(){
String state = Environment.getExternalStorageState();
if (state.equals(Environment.MEDIA_MOUNTED)) {
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
}
String fileName = getPhotoFileName() + ".jpg";
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
path_carmer =path + fileName;
Uri uri = Uri.fromFile(new File(path_carmer));
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent,TAKE_PHOTO);
}
getPhotoFileName()返回图片名(这里名字为时间)
private String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd_HHmmss");
return "IMG_" + dateFormat.format(date);
}
path_carmer 全局字符串变量
private String path_carmer;
path 图片保存路径(这里相册会出现DCIM文件夹)
private String path = Environment.getExternalStorageDirectory()
+ File.separator + Environment.DIRECTORY_DCIM + File.separator;
TAKE_PHOTO为请求标识
private static final int TAKE_PHOTO=1222;
完成上述步骤后,面对的就是相机点确定后imageView显示图片
case TAKE_PHOTO:
FileInputStream fis = null;
try {
fis=new FileInputStream(path_carmer);
Bitmap bitmap=BitmapFactory.decodeStream(fis);
img.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
显示图片须在OnActivityResult()方法中,这个方法是重写的,有三个参数
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
case是用我用switch判断requestCode。
注意点:
这里显示图片我是用自己设置的地址,所以data数据是为空
文件操作要捕获异常
如果手机为ANDROID 6.0以上要动态加载权限