Camera开发—如何使用系统相机
如何使用系统相机
一、最简单的方法(但是得到的图片分辨率很差)
此方法不需要任何权限,因为调起来的是系统相机
private static int REQ_CODE = 1;mIv = findViewById(R.id.iv);Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, REQ_CODE);
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == RESULT_OK) {if (requestCode == REQ_CODE) {
// 最简单的做法,得到的是分辨率很低的照片Bundle bundle = data.getExtras();Bitmap bitmap = (Bitmap) bundle.get("data");mIv.setImageBitmap(bitmap);}
二、如何得到照片原图
- 加权限
6.0以上的动态权限的代码省略
7.0以上使用内存卡需要使用fileProvider,配置代码省略
- 让系统相机拍照成功后,把照片存在指定文件路径里
// 准备一个文件路径,用于存放拍照后的照片mFilePath = Environment.getExternalStorageDirectory().getPath();mFilePath = mFilePath + "/" + "temp.png";Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);File file = new File(mFilePath);Uri mUri = FileProvider.getUriForFile(MainActivity.this, BuildConfig.APPLICATION_ID + ".fileprovider", file);//更改系统图片保存的路径Uriintent.putExtra(MediaStore.EXTRA_OUTPUT, mUri);startActivityForResult(intent, REQ_CODE);
- 得到照片
@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);if (resultCode == RESULT_OK) {if (requestCode == REQ_CODE) {try {//把图片从文件读取到输入流mFis = new FileInputStream(mFilePath);//通过输入流得到bitmapBitmap bitmap = BitmapFactory.decodeStream(mFis);//现在这个就是拍照的原图mIv.setImageBitmap(bitmap);} catch (FileNotFoundException e) {e.printStackTrace();} finally {try {mFis.close();} catch (IOException e) {e.printStackTrace();}}}}}
如果你的图片被旋转了90度,请看android 部分手机Camera 拍照 图片被旋转90度的解决方法
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
