一、调用相机拍照
1.指定要跳转到相机(图片不保存)
Intent mIntent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivtiyForResult(mIntent,FROM_CAMERA);
2.指定跳转到相机(图片保存到本地)
String imagePath;
在调用相机之前,先检查SD卡是否可用,存在即创建文件夹
String sdCard =Environment.getExternalStorageState();
if(!sdCard.equals(Environment.MEDIA_MOUNTED)){
Toast.makeText(context,”SD卡不可用”,0).show;
}
File file =new File(“/sdcard/ling/”);
file.mkdirs();
String imagePathName = System.currentTimeMillis()+”.jpg”;
imagePath =file+imagePathName;
//API规定传入拍照得到的是图片的存储位置的uri,所以将图片的uri放入intent中,在 onActivtityResult()中即可获得uri。否则,Bitmap将以压缩后返回到当前activity。
File uriFile =new File(file,imagePathName);
try {
if (outputImage.exists()) {
outputImage.delete();
}
outputImage.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
Intent nIntent =new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
nIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.from(uriFile)); //将file对象转为uri,并指定图片输出地址;即可将拍照后的图片保存到传入的uri对应的File下。
startActivityForResult(nIntent,FROM_CAMERA_SAVED);
二、直接调取图库
startActivityForResult(new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI),FROMM_FILE);
三、处理拿到的图片
protected void onActivityForResult(int requestCode,int resultCode,Intent data){
super.onActivityForResult(resquestCode,resultCode,data);
if(resultCode==RESULT_OK){
switch(requestCode){
case:FROM_CAMERA:
Bundle bundle =data.getExtras();
Bitmap bitmap =(Bitmap)bundle.get(“data);
break;
case:FROM_CAMERA_SAVED:
File files =new File(imagePath);
Uri uri =Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver), files.getAbsolutePath(), null, null));
…………..将uri 转为String 路径
Uri uri = data.getData();
String[] proj = {MediaStore.Images.Media.DATA};
Cursor actualimagecursor = managedQuery(uri, proj, null, null, null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String imagePath = actualimagecursor.getString(actual_image_column_index);
//根据路径做自己需要的处理
break;
case:FROM_FILE:
Uri uri =data.getData();
//可直接通过uri将图片放到ImageView上
imageView.setImageUri(uri);
//可将Uri转为String 路径,上传图片到服务器
break;
}
}
}
最后,要记得加权限:
;//给SD卡写入内容的权限
//调用相机权限