android 调用摄像头进行拍照,并对照片进行裁剪,然后显示。

在xml中布入2个控件,一个Button,一个ImageView,就不在此赘述了。

在MainActivity中:

onCreate(){

 takephoto=(Button)findViewById(R.id.photo);
    picture=(ImageView)findViewById(R.id.picture);
    takephoto.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            File outputImage=new File(Environment.getExternalStorageDirectory(),
                    "output_image.jpg");//创建File对象,用于存储拍照后的图片,获取sd卡根目录
            try{
                if(outputImage.exists()){
                    outputImage.delete();
                }
                outputImage.createNewFile();
            }catch (IOException e){
                e.printStackTrace();
            }
            imageUri=Uri.fromFile(outputImage);//File对象转化为Uri对象
            Intent intent=new Intent("android.media.action.IMAGE_CAPTURE");
            intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
            startActivityForResult(intent,TAKE_PHOTO); //启动相机程序
        }
    });

}
@Override
protected void onActivityResult(int requestCode,int resultCode,Intent data){
    switch (requestCode){
        case TAKE_PHOTO:
            if(resultCode==RESULT_OK){
                Intent intent=new Intent("com.android.camera.action.CROP");
                intent.setDataAndType(imageUri,"image/*");
                intent.putExtra("scale",true);
                intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
                startActivityForResult(intent,CROP_PHOTO);//启动裁剪程序
            }
            break;
        case CROP_PHOTO:
            if(resultCode==RESULT_OK){
                try {
                    Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                    picture.setImageBitmap(bitmap); //将裁剪的照片显示出来
                }catch (FileNotFoundException e){
                    e.printStackTrace();
                }
            }
            break;
        default:
            break;
    }
}
这个项目涉及到向sd卡中写数据的操作,因此要在AndroidManifest。xml中声明权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值