1.调用系统的照相机程序
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- startActivityForResult(intent, TAKE_PHOTO_WITH_DATA);
2.在onActivityResult中处理返回的data
final Bitmap photo = data.getParcelableExtra("data");
如果不需要做剪切处理就可以直接使用图片了,比如输出到ImageView上
p_w_picpathView.setImageBitmap(photo);
如果需要做剪切处理,就继续向下执行
3.做剪切处理
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setType("p_w_picpath/*");
- intent.putExtra("data", data);
- intent.putExtra("crop", "true");
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- intent.putExtra("outputX", 128);
- intent.putExtra("outputY", 128);
- intent.putExtra("return-data", true);
- artActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
4.在onActivityResult中处理
与第二步相同。
完整代码:
- public class SdCardUriTestActivity extends Activity {
- /** Called when the activity is first created. */
- private Button btnTake = null;
- private ImageView lblImage = null;
- private static final int PHOTO_PICKED_WITH_DATA = 3021;
- private static final int CAMERA_WITH_DATA = 3023;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- btnTake = (Button)findViewById(R.id.btnTake);
- lblImage = (ImageView)findViewById(R.id.lblImage);
- btnTake.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- startActivityForResult(intent, CAMERA_WITH_DATA);
- }
- });
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // TODO Auto-generated method stub
- if(resultCode!=RESULT_OK)
- return;
- switch(requestCode){
- case CAMERA_WITH_DATA:
- final Bitmap photo = data.getParcelableExtra("data");
- if(photo!=null){
- doCropPhoto(photo);
- }
- case PHOTO_PICKED_WITH_DATA:
- Bitmap photo1 = data.getParcelableExtra("data");
- if(photo1!=null){
- lblImage.setImageBitmap(photo1);
- }
- }
- }
- protected void doCropPhoto(Bitmap data){
- Intent intent = getCropImageIntent(data);
- startActivityForResult(intent, PHOTO_PICKED_WITH_DATA);
- }
- public static Intent getCropImageIntent(Bitmap data) {
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setType("p_w_picpath/*");
- intent.putExtra("data", data);
- intent.putExtra("crop", "true");
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- intent.putExtra("outputX", 128);
- intent.putExtra("outputY", 128);
- intent.putExtra("return-data", true);
- return intent;
- }
- }
转载于:https://blog.51cto.com/whatandroid/1136712