AG环亚娱乐_AG直营网_环亚娱乐AG最佳线路_搜狐新闻
web技术

热门文章

当前位置:主页 > 热门文章 >

联系我们

CONTACT

地址:
电话:
传真:
邮箱:

调用Camera返回为空的分析及处理方法,camera处理方法

2019-01-31

调用Camera返回为空的分析及处理方法,camera处理方法
前言

大家可能遇到了这样的情况,调用Camera,然后指定自定义的保存路径,结果返回的Intent为空。我们来分析一下原因。


分析

首先看Camera的部分逻辑,在源码中的Camera.java的doAttach()方法里面。

 

// First handle the no crop case -- just return the value.  If the
// caller specifies a "save uri" then write the data to it's
// stream. Otherwise, pass back a scaled down version of the bitmap
// directly in the extras.
if (mSaveUri != null) {
  OutputStream outputStream = null;
  try {
     outputStream = mContentResolver.openOutputStream(mSaveUri);
     outputStream.write(data);
     outputStream.close();
 
     setResult(RESULT_OK);
     finish();
     } catch (IOException ex) {
         // ignore exception
     } finally {
         Util.closeSilently(outputStream);
     }
} else {
  Bitmap bitmap = createCaptureBitmap(data);
  setResult(RESULT_OK,
         new Intent("inline-data").putExtra("data", bitmap));
  finish();
}

注释也有明确解释,假如mSaveUri不为空,则直接返回RESULT_OK,不会回传其他任何东西。假如为空,则会回传一个bitmap。

 

 

再看看我们调用Camera的代码。

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
Date date = new Date();
String photoDCIM = Environment.getExternalStorageDirectory() + File.separator + Environment.DIRECTORY_DCIM; // 默认相册的路径
String path = photoDCIM + File.separator + date.getTime() + ".jpg"; 
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path )));
startActivityForResult(intent, PICTURE_CAMERA);

上面带指定的保存路径path ,就是Camera中的mSaveUri。所以结果就是Camera只会返回RESULT_OK。

 

结论

我们调用Camera可以有2种方式获得拍照的图片:


第1种是指定保存路径。

如上面的示例代码,将path设置为成员变量,在onActivityResult()中,直接读取该值即可。

 

第2种是不指定保存路径。

调用方法如下:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
getActivity().startActivityForResult(intent, PICTURE_CAMERA);

onActivityResult中

Bitmap bitmap= data.getParcelableExtra("data");  

这样就能得到拍照的图片了。

 

总结

在日常使用过程中,推荐使用指定保存路径,这样可以方便获得File,然后做其他的操作。

 

 


函数返回值为空

void fun()
{
}
以上是一个返回值类型为空的函数。
所有子函数在被主函数main调用的时候,都是有返回值的,如果这个返回类型符为 VOID ,则为空。 所以说,被调用的函数返回值为空是返回的,只不过相对于主函数来说,这个函数的返回值为空,对于这个解释,目前大部分教科书给予的解释是“可以理解为无返回值,不返回值”
void 在这里的解释是,使用完这个函数,即可退出,而int fun 意思则是,使用这个函数返回int类型的返回值,这里不许可以去纠结这个细节,使用C++时间长了后,自然会慢慢去理解!
 
excel 第一个if函数返回值为空,第二个IF函数调用第一个返回值错误

空大于0,即"">0
你可以把E5=IF(B5=1,"",3) 改为E5=IF(B5=1,0,3)
许学卿 [权威专家]

http://www.bkjia.com/Androidjc/863529.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/863529.htmlTechArticle调用Camera返回为空的分析及处理方法,camera处理方法 前言 大家可能遇到了这样的情况,调用 Camera ,然后指定自定义的保存路径,结果返回...

本文源自: AG环亚娱乐

Copyright © 2005-2017 http://www.turingvr.com AG环亚娱乐_AG直营网_环亚娱乐AG最佳线路_搜狐新闻版权所有

友情链接: