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中如何调用摄像头拍照”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注恰卡编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
Android如何实现多点触控功能
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...