android写真取得


1.写真撮影の経路を取得する
 
カメラActivityから戻るとdataというBitmapオブジェクトが付きます.写真のサムネイルです.
次のコードを加えると、
dataという名前のオブジェクトは返されません.ただし、指定したパスで元の画像が保存されます.
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri 
        .fromFile(new File(Environment 
                .getExternalStorageDirectory(), "camera.jpg")));
2.撮影後のdataオブジェクトを取得する
 Bundle extras = data.getExtras();
Bitmap myBitmap=null;
if(null!=extras){
Log.i("bb","isNull:"+(null==extras));
if(myBitmap!=null){
   myBitmap.recycle();
}
myBitmap = (Bitmap) extras.get("data");
}else{
Uri uri = data.getData();
if (uri != null) { 
myBitmap.recycle();
myBitmap = BitmapFactory.decodeFile(uri.getPath());
}
}
if (myBitmap!=null) {
//ImageView view=new ImageView(mContext);
mImageView.setImageBitmap(myBitmap);
}
3.例
  
private ImageView imageView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// Hide the window title.
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.main);
		imageView = (ImageView) this.findViewById(R.id.preview);
		Button button = (Button) this.findViewById(R.id.cameraButton);
		button.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
				intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri
						.fromFile(new File(Environment
								.getExternalStorageDirectory(), "camera.jpg")));
				intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
				startActivityForResult(intent, 0);
			}
		});
	}
	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		if (requestCode == 0 && resultCode == Activity.RESULT_OK) {
			this.imageView.setImageDrawable(Drawable.createFromPath(new File(
					Environment.getExternalStorageDirectory(), "camera.jpg")
					.getAbsolutePath()));
			// for(String s:bundle.keySet()){
			// Log.v("cam.demo", s);
			// }
			Log.v("cam.demo", "====>" + data);
		}
	}
}