Android中如何调用摄像头拍照

Android中如何调用摄像头拍照

这篇文章主要介绍“Android中如何调用摄像头拍照”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android中如何调用摄像头拍照”文章能帮助大家解决问题。

第一步,获取权限

Android中如何调用摄像头拍照

if(ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){//如果没有权限,动态申请授权ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},2);}

第二步,创建用于保存的文件,并且用intent调用系统摄像头拍照程序

ButtonbtTakePhoto=(Button)findViewById(R.id.btTakePhoto);btTakePhoto.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){try{Filesdcard=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);picFile=newFile(sdcard,System.currentTimeMillis()+".jpg");picFile.createNewFile();Log.e("UseSystemCameraApp",picFile.getName()+"创建成功");}catch(IOExceptione){e.printStackTrace();}Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(picFile));startActivityForResult(intent,1);}});}

第三步,把照片显示出来

protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){if(requestCode==1){ImageViewiv=(ImageView)findViewById(R.id.ivShow);iv.setImageURI(Uri.fromFile(picFile));}super.onActivityResult(requestCode,resultCode,data);}

同样也需要onRequestPermissionsResult

@OverridepublicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions,@NonNullint[]grantResults){super.onRequestPermissionsResult(requestCode,permissions,grantResults);if(requestCode==1){if(!(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED)){Toast.makeText(this,"未获得SD卡访问权限",Toast.LENGTH_LONG).show();finish();}}}

到这里似乎就已经完成要做的步骤了,但其实还有最后一步,因为我们使用的是intent.putExtra,这会导致当前activity的URI会暴露给下一个activity,如果不处理,就会报错。所以在onCreate中要使用StrictMode.VmPolicy.Builder进行监控

StrictMode.VmPolicy.Builderbuilder=newStrictMode.VmPolicy.Builder();StrictMode.setVmPolicy(builder.build());builder.detectFileUriExposure();ButtonbtTakePhoto=(Button)findViewById(R.id.btTakePhoto);

关于“Android中如何调用摄像头拍照”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

发布于 2022-04-11 21:17:16
收藏
分享
海报
0 条评论
27
上一篇:android中的StackView怎么定义和使用 下一篇:Android中的Content Provider有什么用
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码