转处:http://892848153.iteye.com/blog/1851869

好吧,为了这个问题又折腾了一整天。之前在网上找来的方法,如果在onActivityResult中直接用data.getData()的方式来生成bitmap,其实获取的是拍照生成的缩略图!看看尺寸就知道了。如果要获取原图,还需要一番折腾(特别是对于手里这个Samsung i9000)——之前朋友在不同的机型上使用的方法在我这里一直报错,且属于那种uncaught的错误-.- 
话说回来,具体的折腾方法如下(如果不幸你看到了,希望不要“折疼了”): 
在拍照的出发按钮的点击事件中写入如下代码: 
toCam.setOnClickListener(new View.OnClickListener() { 
@Override 
public void onClick(View v) { 
//先验证手机是否有sdcard 
String status=Environment.getExternalStorageState(); 
if(status.equals(Environment.MEDIA_MOUNTED)) 

try { 
File dir=new File(Environment.getExternalStorageDirectory() + "/"+localTempImgDir); 
if(!dir.exists())dir.mkdirs();

Intent intent=new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
File f=new File(dir, localTempImgFileName);//localTempImgDir和localTempImageFileName是自己定义的名字 
Uri u=Uri.fromFile(f); 
intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, u); 
startActivityForResult(intent, GET_IMAGE_VIA_CAMERA); 
} catch (ActivityNotFoundException  e) { 
// TODO Auto-generated catch block 
Toast.makeText(ImpromptuActivity.this, "没有找到储存目录",Toast.LENGTH_LONG).show();  

}else{ 
Toast.makeText(ImpromptuActivity.this, "没有储存卡",Toast.LENGTH_LONG).show(); 

dialog.dismiss(); 

});

在onActivityResult中这样折腾: 
@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if(resultCode==RESULT_OK ) 

switch(requestCode) 

case GET_IMAGE_VIA_CAMERA: 
File f=new File(Environment.getExternalStorageDirectory() 
+"/"+localTempImgDir+"/"+localTempImgFileName); 
try { 
   Uri u = 
   Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), 
   f.getAbsolutePath(), null, null)); 
   //u就是拍摄获得的原始图片的uri,剩下的你想干神马坏事请便…… 
} catch (FileNotFoundException e) { 
   // TODO Auto-generated catch block 
   e.printStackTrace(); 

break; 


super.onActivityResult(requestCode, resultCode, data); 
}

别高兴太早了,还有关键问题: 
上面的代码只要你会用google,一般都能找来拼凑一番。但是,仅仅是这样,你还会得到未知错误……Samsung的系统相机,版式是横板的,如果你的activity恰巧是竖版的,那么获取这个回调uri的时候,很可能为空! 
原因在于,如果你没有设置版式改变的时候,activity不要调用onCreate方法!这就是要命的地方! 
设置方法其实很简单: 
1、在Manfest.xml中,给activity添加一个属性:android:configChanges="orientation|keyboardHidden" 
2、在activity中添加: 
@Override 
    public void onConfigurationChanged(Configuration config) { 
    super.onConfigurationChanged(config); 
    } 
另外还有一个蛋疼的错误容易犯:千万别给这个activity添加单例模式,即:android:launchMode="singleInstance"

好了,完成这些,你就终于可以不“折疼”了! good luck!

照相得到的图片,最好自己指定路径,这样返回数据时,就不用从Intent中获取了,我们知道是什么路径,可以直接去拿。

androig中相机的使用相关推荐

  1. 【转】UNITY中相机空间,投影空间的正向问题

    原文链接1:https://www.cnblogs.com/wantnon/p/4570188.html 原文链接2:https://www.cnblogs.com/hefee/p/3820610.h ...

  2. 结构光相移法中相机投影仪的标定信息如何与相位差联系

    前奏 先解释一下相移法中相机所捕获的条纹图案的数学表达式的含义 这里需要解释的是,表示第n张相移图上(x,y)点处的灰度值,为条纹图背景值,为调制强度函数.与上图中的变量解释不一样,查看了将近十几个人 ...

  3. CorelDRAW X7中相机滤镜呈现出的复古照片效果

    CorelDRAW X7软件中相机效果滤镜较之以前版本又增添了许多功能,模拟各种"相机"镜头产生的效果,包括彩色.相片过滤器.棕褐色色调和时间器效果,可以让照片回到历史,展示过去流 ...

  4. mediarecorder添加时间戳_[Paper] 自动驾驶中相机和激光雷达的时间戳误差标定

    今天介绍一篇2017年发表在IROS的论文 A low-cost system for high-rate, high-accuracy temporal calibration for LIDARs ...

  5. 8.MIL中相机标定(Calibration)

    前面讲了MIL的在线采集,这就引申出了如下的问题: 1.由于镜头畸变.相机内部参数不一致.环境影响等诸多因素的影响,实际相机采集到的图片会产生扭曲.变形等等,其中最常见的就是镜头畸变,这个问题如何解决 ...

  6. SLAM中相机位姿求解(李群李代数)

    前言 slam中一个关键问题之一就是求解相机的位姿,人们找了很多以相机位姿为变量的误差函数,比如光度误差,重投影误差,3D几何误差等等,希望使得误差最小,进而求得比较准确的相机位姿.举一个重投影例子: ...

  7. Part1:使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习——计算机图形学世界中相机的工作原理

    Part1:使用 TensorFlow 和 Keras 的 NeRF计算机图形学和深度学习 1. 效果图 2. 原理 2.0 前向成像模型 2.1 世界坐标系 2.2 相机坐标系 2.3 坐标变换 2 ...

  8. slam十四讲,第五讲中相机坐标系,像素平面坐标系,世界坐标系,归一化坐标系总结

    #笔记,方便日后忘记回看,仅总结,具体推导回看十四讲 先上图: 如图,现实世界中有一个P点和一个相机(光心),描述这个P点的空间坐标首先得有一个坐标系,那么以光心为原点O建一个坐标系,叫相机坐标系. ...

  9. Pylon SDK 中相机配置详解及应用案例(附代码)

    目录 前言 1.相机参数配置 1.1检验可访问性 1.2枚举特征 1.3整数特征 2.应用一:打印相机参数 3.应用二:优化Basler GigE相机性能 前言 关于Pylon SDK的主要流程在上篇 ...

最新文章

  1. webstorm2018修改运行web page端口号,并且让web在本地局域网内用IP访问
  2. 为什么掌握 Linux 对程序员这么重要
  3. 【附赠PPT】 KubeMeet 成都站回顾:让云原生应用交付和管理变得更简单
  4. vue pc端 商品轮播图_轮播图高点击商品图
  5. 技术无“学历” 从大专学校走出来的少年AI狂人
  6. 山大计算机上机复试题目,2010年计算机复试上机 回忆
  7. Dynamic Web Module 3.0 requires Java 1.6 or newer报错
  8. php异步处理下载文件,异步处理Excel文件导入【流程图+PHP示例】
  9. dell服务器r730安装esxi系统,安装Esxi系统重装Esxi系统
  10. *第十三周*数据结构实践项目二【验证Kruskal算法】
  11. java static 执行顺序
  12. php查看php进程
  13. js调用摄像头麦克风,截取摄像头图像 js调用摄像头录像保存本地
  14. 使用Zabbix进行风险管理
  15. IMPALA(Importance Weighted Actor-Learner Architectures)
  16. GST1212M非制冷红外探测器调试成像
  17. 微信小程序轮播图的实现
  18. 10+编程语言实现云笔记
  19. 手机病毒“僵尸网络”进入高发期
  20. 76个常识,你知几个

热门文章

  1. RomUtil【Android判断手机ROM,用于判断手机机型】
  2. A4988驱动步进电机
  3. stm32-A4988驱动步进电机
  4. Arduino 项目笔记 | 基于 Arduino 单片机的 A4988 和 L298N电机驱动模块实验记录
  5. 打造你的专属印章(c语言)
  6. BZOJ1003物流运输
  7. Simulink —— PMSM基础及FOC控制模型
  8. 封神台之萌新也能找CMS漏洞整理记录
  9. 合并 Excel 的多张工作表Sheet报错:无法在此处粘贴此内容
  10. weblogic 安装升级补丁出现内存溢出问题解决