您的位置:首页 > 移动开发 > Android开发

Android中如何实现手机拍照,并且展示ImageView控件上

2017-08-24 16:05 573 查看

实现调用Andorid系统的Camera的APP(照相机)

    在我们平时所接触的APP中,有这种情况:点击上传一张图片,展示在Imageview

   上,弹出Menu后,是有拍照,本地照片等按钮,我们今天主要实现了拍照的这项功能:

  
首先搭建好UI界面后,我们获取拍照Button的点击事件

   在点击事件中写逻辑:

   1:创建File文件,两个参数:路径,文件名

   2:判断一下file是否存在,如果存在则实现以下file.delete(),删除---然后if外接着写,创建这个文件

   3:判断sdk的版本,如果是否大于24,用不同的方法拿到uri路径:

   4:然后启动我们的相机:实现拍照,并且把我们的uri传给相机APP

   5:实现跳转回掉方法,判断请求码,通过ContentResolver的openinputstream的方法拿到Inputstreamfile,当然得   
传入我们的uri值

   6:最后将inputstream的图片file通过Bitmap放入ImageView中:

//创建文件file,第一个参数传一个缓存地址,第二个参数传一个照片名
File file = new File(getExternalCacheDir(), "image.jpg");
if (file.exists()) {
//如果存在,删除文件
file.delete();
}
try {
//创建这个
file.createNewFile();
//拿到照片的路径(两种)
if (Build.VERSION.SDK_INT > 24) {
//sdk大于24时,uri被赋值,FileProvider.geturiforfile(上下文,包名,文件);
uriForFile = FileProvider.getUriForFile(this, "com.example.day15_camera", file);

}else{
//uri。fromfile(file)
uriForFile = Uri.fromFile(file);
}
//启动相机
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
intent.putExtra(MediaStore.EXTRA_OUTPUT, uriForFile);
startActivityForResult(intent, 1);
}catch(IOException e){
e.printStackTrace();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 1:
ContentResolver contentResolver = getContentResolver();
try {
InputStream inputStream = contentResolver.openInputStream(uriForFile);
//图片在inputstream里
Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
iv_main.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
break;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息