作者:某人_Valar
如需转载请保留原文链接
Android打开系统相机拍照并在返回时将照片显示在app界面上。
点击“打开相机”按钮进入拍照界面
image.png
image.png
拍照完成后回到app中,流程大概就是这样,这时图片已经显示在了之前布局的imageview控件中
image.png
代码也比较简单,不过在系统6.0以上版本需要自己设置一下动态权限(Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE)
//获取SD卡的路径
String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/songshucang";
String picPath = sdPath + "/" + "temp.png";
void toOpenCamera(){
Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Uri uri = Uri.fromFile(new File(picPath));
//为拍摄的图片指定一个存储的路径
intent2.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent2, REQUEST_ORIGINAL);
}
重写一下onActivityResult方法
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
CallbackContext.onActivityResult(requestCode,resultCode,data);
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if(requestCode == 2){
/*
* 通过内存卡的路径进行读取图片,得到的图片是拍摄的原图
*/
FileInputStream fis = null;
try {
Log.e("sdPath2",picPath);
//发送系统广播通知系统相册更新
File fileTemp = new File(picPath);
Uri uri = Uri.fromFile(fileTemp);
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(uri);
MainActivity.this.sendBroadcast(intent);
//把图片转化为字节流
fis = new FileInputStream(picPath);
//把流转化图片
Bitmap bitmap = BitmapFactory.decodeStream(fis);
//将bitmap显示在控件中
mImageView.setImageBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
}finally{
try {
fis.close();//关闭流
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}
网友评论