Android常用控件之 - Camera

转载请注明出处amoscxy的博客:https://mp.csdn.net/mdeditor/79117522

一 调用系统相机

(1)调用系统相机是用过滤规则匹配的方式,系统相机设置了 规则,因此调用相机秩序action匹配:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivity(intent);

(2)想要获取拍照图片,可以通过startActivityForResult … onActivityResult来实现

public void aCamera(View view) {
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent, REQ_1);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            if (requestCode == REQ_1) {
                if (data != null) {
                    Bundle bundle = data.getExtras();
                    Bitmap bitmap = (Bitmap) bundle.get("data");
                    mImageView.setImageBitmap(bitmap);
                }
            }
        }
    }

需要注意的是,为防止图片太大,导致内存溢出,bundle.get(“data”)返回的图片只是缩略图,质量比较差,要想通过系统相机获得拍照原图,需要通过intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);修改系统相机拍照图片保存的路径,再从路径获取原图。

public void aCamera2(View view) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri photoUri = Uri.fromFile(new File(mFilePath));
    intent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri);
    startActivityForResult(intent, REQ_2);
}

mFIlePath最好是sd卡中的目录,如:mFilePath = Environment.getExternalStorageDirectory().getPath() + "/" + System.currentTimeMillis() + ".png";,要将图片保存到sd卡上需要读写权限

可以通过文件流读写方式获取图片流,并转换成图片:

FileInputStream fis = new FileInput
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值