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中如何调用摄像头拍照”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
推荐阅读
-
我的世界windows版怎么下载手机版
-
android(如何快速开发框架 小米note开发版MIUI,安卓6.0,怎么安装Xposed框架)
稳定版,你必须先根除。你上网搜索安卓可以叫别人s框架,对方可以把框架做成jar包,把这个jar包加载到项目目录的libs文件中使...
-
android(studio 虚拟机启动不了 android studio可以当模拟器用吗)
androidstudio可以当模拟器用吗?AmdCUP引导模拟器有点复杂。雷电模拟器上的抖音怎么登录不上?不是,闪电模拟调用...
-
从实践中学习手机抓包与数据分析(android 手机抓包app)
android手机抓包app?netcapture抓包精灵app(手机抓包工具)又名sslcapture,是什么专业的安卓手机抓...
-
android(studio全局搜索 android studio怎么看app界面)
androidstudio怎么看app界面?在设备桌面点击运用直接进入到App界面,就也可以参与其他你的操作了。android-...
-
怎么把android框架源代码拉到本地(android studio如何运行别人的源代码)
androidstudio如何运行别人的源代码?androidstudio点击刚建在列表中你选择导入module,导入即可在用...
-
android(studio2022年使用教程 怎么安装Android studio详细教程)
怎么安装Androidstudio详细教程?androidstudio中haxm直接安装的方法追加:1、简单的方法打开Andr...
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
怎么使用Android基准配置文件Baseline Profile方案提升启动速度...
-
HTML5如何实现禁止android视频另存为
HTML5如何实现禁止android视频另存为今天小编给大家分享一...
-
学java好还是学php好?