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;

	}

ここにはいくつかの定数があり、自分で値を定義すればいいです.