Android呼び出しシステムカメラ撮影及び切断
2245 ワード
この話題はいつも話していますが、自分が読みやすいように、ここで覚えておいてください.似たような経験があれば、見なくてもいいです.
画像の保存パスを作成するには、次の手順に従います.
システムを呼び出して写真を撮る:
ここにはいくつかの定数があり、自分で値を定義すればいいです.
画像の保存パスを作成するには、次の手順に従います.
private final File PHOTO_DIR = new File(
Environment.getExternalStorageDirectory() + "/DCIM/Camera");
private File mCurrentPhotoFile;//
システムを呼び出して写真を撮る:
PHOTO_DIR.mkdirs();//
mCurrentPhotoFile = new File(PHOTO_DIR,
getPhotoFileName());//
Intent intt = new Intent(
MediaStore.ACTION_IMAGE_CAPTURE,
null);
intt.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(mCurrentPhotoFile));
startActivityForResult(intt,
SlookConstant.CHANGEUSERICON);
/**
*
*
*/
private String getPhotoFileName() {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat dateFormat = new SimpleDateFormat(
"'IMG'_yyyy-MM-dd HH:mm:ss");
return dateFormat.format(date) + ".png";
}
撮影後に返される値を受信します.protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case SlookConstant.CHANGEUSERICON:
Intent intent = getCropImageIntent(Uri.fromFile(mCurrentPhotoFile));
startActivityForResult(intent, ImageHelper.PHOTO_PICKED_WITH_DATA);
break;
case ImageHelper.PHOTO_PICKED_WITH_DATA:
/** gallery activity */
if (null != data) {
Bitmap photo = data.getParcelableExtra("data");
// photo ;
}
break;
}
}
システムカット画像のインタフェースを呼び出す:/**
*
* Constructs an intent for image cropping.
*/
private Intent getCropImageIntent(Uri photoUri) {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(photoUri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 84);
intent.putExtra("outputY", 84);
intent.putExtra("return-data", true);
return intent;
}
ここにはいくつかの定数があり、自分で値を定義すればいいです.