Android 调用系统相机拍照

时间:2021-11-01 20:28:16
    /**
* 调用系统相机
*/

private void takePhoto() {
Uri uri = null;
if (which_image == FRONT_IMAGE) {
frontFile = new File(getSDPath() +"/test/front_" + getDate() + ".jpg");
uri = Uri.fromFile(frontFile);
} else if (which_image == BACK_IMAGE) {
backFile = new File(getSDPath() + "/test/back_" + getDate() + ".jpg");
uri = Uri.fromFile(backFile);
}
Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
captureIntent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);
captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
captureIntent.putExtra("return-data", true);
startActivityForResult(captureIntent, TAKE_PHOTO);
}

/**
* 获取系统时间
*
* @return
*/

public static String getDate() {
Calendar ca = Calendar.getInstance();
int year = ca.get(Calendar.YEAR); // 获取年份
int month = ca.get(Calendar.MONTH); // 获取月份
int day = ca.get(Calendar.DATE); // 获取日
int minute = ca.get(Calendar.MINUTE); // 分
int hour = ca.get(Calendar.HOUR); // 小时
int second = ca.get(Calendar.SECOND); // 秒

String date = "" + year + (month + 1) + day + hour + minute + second;

return date;
}

/**
* 获取SD path
*
* @return
*/

public String getSDPath() {
File sdDir = null;
boolean sdCardExist = Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED); // 判断sd卡是否存在
if (sdCardExist) {
sdDir = Environment.getExternalStorageDirectory();// 获取跟目录
return sdDir.toString();
}

return null;
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == TAKE_PHOTO && resultCode == RESULT_OK) {
// Bundle bundle = data.getExtras();
// Bitmap bitmap = (Bitmap) bundle.get("data");
// if (which_image == FRONT_IMAGE) {
// ivCardFront.setImageBitmap(bitmap);
// } else if (which_image == BACK_IMAGE) {
// ivCardBack.setImageBitmap(bitmap);
// }
try {
if (which_image == FRONT_IMAGE) {

Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), frontFile.getAbsolutePath(), null, null));
ContentResolver contentResolver = this.getContentResolver();
Bitmap bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));
ivCardFront.setImageBitmap(bitmap);
} else if (which_image == BACK_IMAGE) {
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), backFile.getAbsolutePath(), null, null));
ContentResolver contentResolver = this.getContentResolver();
Bitmap bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(uri));
ivCardBack.setImageBitmap(bitmap);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}