700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android11调用相机保存并显示图片到imageview

Android11调用相机保存并显示图片到imageview

时间:2018-08-25 01:52:20

相关推荐

Android11调用相机保存并显示图片到imageview

1请求以下权限

Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA,

manifest中注册

app动态请求两步都需要

2调起相机

Intent takePictureIntent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//确保有相机来处理Intentif(takePictureIntent.resolveActivity(getPackageManager())!=null){File photoFile=saveFileName();tempFile=photoFile;if(photoFile!=null){Uri photoURI=FileProvider.getUriForFile(getApplicationContext(),"com.Cingke.cameraMake.fileprovider",photoFile);takePictureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoURI);startActivityForResult(takePictureIntent,0);}}

FileProvider的com.Cingke.cameraMake部分需要跟包名一样

在清单以及xml的配置

清单

<providerandroid:authorities="com.Cingke.cameraMake.fileprovider"android:name="androidx.core.content.FileProvider"android:exported="false"android:grantUriPermissions="true"><meta-dataandroid:name="android.support.FILE_PROVIDER_PATHS"android:resource="@xml/file_paths"></meta-data></provider>

res/xml

暴露部分根据实际情况配置

<?xml version="1.0" encoding="utf-8"?><paths xmlns:android="/apk/res/android"><external-path name="external_files" path="." /></paths>

3保存位置

String currentPath=null;private File saveFileName(){//File newFolder = this.getExternalFilesDir(Environment.DIRECTORY_PICTURES);SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date(System.currentTimeMillis());String name =format.format(date)+".jpg" ;filename=name;File ji=null;try {ji=new File(newFolder+"/"+name);ji.createNewFile();currentPath=ji.getAbsolutePath();} catch (Exception e) {e.printStackTrace();}return ji;}

4返回结果处理

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubsuper.onActivityResult(requestCode, resultCode, data);if (requestCode == 0) {FileOutputStream o=null;Bitmap bitmap=BitmapFactory.decodeFile(currentPath);//显示image.setImageBitmap(bitmap);//图片在文件管理器打不开,需要移出应用私有目录才可查看}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。