这段时间因为项目需求,需要大批量的图片,而且很多内容都是需要图片来突出内容,所以对调用Android的相机和相册做了研究。
在目前百度上所搜索到的解决方法中,都没有一个完整的解决方案,也就产生了自己写一个的想法。下面上传代码,以下代码是对所有机型都适配过的,尤其是三星的手机,因为屏幕的反转导致重新加载activity的问题也做了适配。
首先先给出相机和相机相关的代码
public class CameraUtil {
public static final int TYPE_IMAGE_1 = 1;
public static final int TYPE_IMAGE_2 = 2;
public static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 100;
public static final int PICK_IMAGE_ACTIVITY_REQUEST_CODE = 200;
public static String imageName="cameraImg.jpg";
public static final String SDPATH = Environment.getExternalStorageDirectory()
+ "/junyou_catche/";
/**
* 打开相机
* */
public static void openCamrea(Activity activity){
String sdStatus = Environment.getExternalStorageState();
/* 检测sd是否可用 */
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
Toast.makeText(activity, "SD卡不可用!", Toast.LENGTH_SHORT).show();
return;
}
Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri mUri= Uri.fromFile(new File(SDPATH, imageName));
openCameraIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, mUri);
activity.startActivityForResult(openCameraIntent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
/**
* 得到相机图片存放到SaveImageItemFile.imageitem1中
* */
public static void getCamreaImage(int type,ImageView imageView){
Bitmap cameraBitmap = null;
ImageItem takePhoto = new ImageItem();
cameraBitmap=SaveImageItemFile.getSDPicture(CameraUtil.SDPATH+CameraUtil.imageName);
cameraBitmap=SaveImageItemFile.imageZoom(cameraBitmap);
PictureUtils.addSDPicture(cameraBitmap, CameraUtil.SDPATH+CameraUtil.imageName);
takePhoto.setBitmap(cameraBitmap);
takePhoto.setImagePath(CameraUtil.SDPATH+CameraUtil.imageName);
switch(type){
case TYPE_IMAGE_1:
SaveImageItemFile.imageitem1 = takePhoto;
SaveImageItemFile.type1=1;
if(imageView!=null){
imageView.setImageBitmap(SaveImageItemFile.imageitem1.g