问题一:onActivityResult方法中的data返回为空。

问题原因:使用Intent调用手机内相机程序时,如果我们设置了照片的存储路径时,有数据表明,93%的机型的data将会是Null,所以如果我们指定了路径,就不要使用data来获取照片,起码在使用前要做空判断。

解决方案:使用onActivityResult中的intent(data)前要做空判断。

问题二:照片无法存储。

问题原因:如果自定义存储路径是/mnt/sdcard/pictures/,而手机SD卡下在拍照前没有名为pictures的文件夹,那么部分手机拍照后图片不会保存,导致我们无法获得照片,大多数手机的相机遇到文件夹不存在的情况都会自己创建出不存在的文件夹,而个别手机却不会创建。

解决方案:在指定存储路径前先判断路径中的文件夹是否都存在,不存在先创建再调用相机。

问题三:照片可以存储,但是名字不对。

问题原因:file:///mnt/sdcard/123 1.jpg,由于URI的fromFile方法会将路径中的空格用“%20”取代。

其实对于大多数的手机这都不算事,手机在解析存储路径的时候都会将“%20”替换为空格,这样实际上最终的照片名字还是我们当初指定的名字:123 1.jpg,遗憾的是个别手机(如酷派7260)系统自带的相机没有将“%20”读成空格,拍照后的照片的名字是123%201.jpg,我们用路径“file:///mnt/sdcard/123 1.jpg”能找到照片才怪!

解决方案:指定拍照存储路径时,照片的命名中不要包含空格等特殊符号。

问题四:Camera拍摄,用setPreviewFormat设置成YV12,预览会变成绿屏,实际用getPreviewFormat显示是支持YV12的

机型:魅族MX3

解决方案:没办法只能设置成NV21了。

其代表机型为:三星I8258、华为H30-T00、红米等。

问题五:在获取系统相机拍照然后保存在本地有时候会保存不上,获取不到地址。

机型:酷派8720L

问题原因:通过调试发现当拍完照返回的时候自己设的成员变量值会被回收,估计就是内存不足的原因。重启机器后就好了。

解决方案:无方案。

问题六:三星手机调用系统拍照返回后崩溃

(1) 摄像头拍照后图片数据不一定能返回 ; onActivityResult的data为空

(2) 三星的camera强制切换到横屏 导致Activity重启生命周期 (但是部分机型 配置 android:configChanges 也不能阻止横竖屏切换);

(3) APP Activity A调用系统拍照 –> 拍照 –> 在拍好照片的界面做几次横竖屏转换 –> 返回APP界面Activity A ,A 被销毁。

解决方案:如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 onSaveInstanceState 保存图片的路径

当activity重新创建的时候 会将 onSaveInstanceState 保存的文件传递给onCreate()当中

在onCreate当中 检查照片的地址是否存在文件 以此来判定拍照是否成功

问题七:在三星系列手机上调用系统相机可能会拿不到返回值的相关问题:

调用系统相机:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

mPicUri = "";

intent.putExtra(MediaStore.EXTRA_OUTPUT, mPicUri);

startActivityForResult(intent, requestCode);

结果拍照回来mPicUri这个没有值,但是本地是有图片的…这个问题主要是三星拍照返回后屏幕方向转换并重新创建了单前的Activity,导致在OnActivityResult中不能拿到值。

首先第一可以先试着给activity节点加上些常数,告诉手机这个页面重新创建的时候参数给我留着:

android:configChanges="keyboardHidden|orientation|screenSize"

android:screenOrientation="portrait"

如果这个还不行,那么久采用跳转一个透明的activity方式来传递数据,也就是

CurrentActivity——>没有布局的Activity——>调用拍照三星

没有布局的Activity作为一个中间层,可以在onSaveInstanceState方法中保存好值【outState.putString(“tag”,uri)】,当被系统重新创建这个Activity时取出保存的数据【oncreate 中 savedInstanceState.getString(“tag”)】,然后返回给CurrentActivity这个页面即可(这样有个好处,用户不会感觉到重新创建屏幕旋转)!

问题八:调用系统相机进行拍照时,点击拍照完成,手机又反回了拍照页面

最近使用测试机(华为,4.4系统)调用系统相机进行拍照时,点击拍照完成,手机又反回了拍照页面,此时应该setResult上一个页面,但是上一个页面的onActivityResult没有被调用,大概有些小米手机也会这样。

问题原因:

原先是在A页面的onCreate方法中启动了调用系统相机:这时启动了系统相机界面B,拍照完成后setResult返回无法调用onActivityResult,还有一个Error,忘记是啥了,大概意思是说在这个界面onresume的时候出现的问题。

解决方案:

把启动系统相机的代码放在A页面的onresume方法中即可解决。

ps:千万别在oncreate方法中启动。

问题九:Android4.4以上版本从图库选择图片返回的路径不正确

详见参考链接1

问题十:Android 7.0调用系统相机崩溃

详见参考链接2

问题十一: Android 6.0 以上SecurityException

由于Android 6.0 以上的权限变成了运行时权限,也就是说在需要使用某个权限的时候必须动态去申请使用,直接访问直接导致App崩溃。

解决方案:见参考链接3

参考:

android 4.4拍照问题,Android拍照与相机适配问题汇总相关推荐

  1. android 三星调用拍照,Android拍照与相机适配问题汇总

    问题一:onActivityResult方法中的data返回为空. 问题原因:使用Intent调用手机内相机程序时,如果我们设置了照片的存储路径时,有数据表明,93%的机型的data将会是Null,所 ...

  2. android 后台服务拍照,Android实现后台开启服务默默拍照功能

    本文实例为大家分享了Android后台开启服务默默拍照的具体代码,供大家参考,具体内容如下 最近项目原因,需要编写一后台运行的程序,在给定时间间隔下进行拍照,关键技术主要是:1.开启服务:2.在不不预 ...

  3. Android CameraSurfaceView在SurfaceView上实现拍照,视频录像

    实现拍照录像功能我们选择SurfaceView,利用android原生API进行拍,录像.满足简单的功能需求.无需继承第三方类库. import android.content.Context; im ...

  4. android编程 自动裁剪图片,Android编程实现调用相册、相机及拍照后直接裁剪的方法...

    本文实例讲述了Android编程实现调用相册.相机及拍照后直接裁剪的方法.分享给大家供大家参考,具体如下: package com.cvte.health.phone; import java.io. ...

  5. android android 修改 jpg exif 属性,Android开发之使用ExifInterface获取拍照后的图片属性...

    本文实例讲述了Android开发之使用ExifInterface获取拍照后的图片属性.分享给大家供大家参考,具体如下: ExifInterface exif = new ExifInterface(f ...

  6. Android多媒体应用开发-控制摄像头拍照

    现在的手机的功能可谓是五花八门,手机照相功能就是特别突出的一点,现在的手机照相机甚至成了专业数码照相机,可以拍摄出清晰的照片和录制高分辨率的视频.Android操作系统呢,提供了相应的功能来控制拍照: ...

  7. takephoto 框架_GitHub - Smecking/TakePhoto: 一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库...

    TakePhoto是一款用于在Android设备上获取照片(拍照或从相册.文件中选择).裁剪图片.压缩图片的开源工具库,目前最新版本4.0.2. 3.0以下版本及API说明,详见TakePhoto2. ...

  8. JCameraView 仿微信拍照Android控件(点击拍照,长按录小视频)

    使用方法 Gradle依赖: compile 'cjt.library.wheel:camera :1.1.9' 引用源码 :  clone源码后 引入lib -> camera 尝试运行 : ...

  9. Android静默拍照(无感知拍照)

    在安卓系统下,实现拍照主要有两种方式:第一种就是直接调用系统的相机实现拍照,简单快捷.但是弊端就是不能自定义拍照界面.第二种就是根据Android系统提供的相关API进行自定义拍照,这样就是可以根据具 ...

最新文章

  1. php钩子原理和实现
  2. channelsftp的put_java实现sftp客户端上传文件以及文件夹的功能代码
  3. {ACL2020}In Layman’s Terms: Semi-Open Relation Extraction from Scientific Texts(关系抽取,半开放关系抽取)
  4. mysql 导入 mssql_MySQL(csv,text)导入mssql使用方法
  5. ubuntu自带截图工具--方便好用
  6. python标准库之urllib, httplib, urllib2
  7. java swing 字体设置_java如何改变Swing应用程序的默认字体/字号
  8. 最新Vue2.0+组件开源项目库集合
  9. win10去除桌面快捷方式图标(亲测可用)
  10. JavaFx界面设计【SceneBuilder版】适合初学者
  11. 【Android】自定义View和控件时出现Binary XML file line #报错行数: Binary XML file line #9: Error inflating class 类路径
  12. 怎么用计算机画爱心,怎么用cad画爱心
  13. 重构家用电器产业价值,S2B2C供应链系统模式助力企业拓展市场新空间
  14. dll.a和lib 引用MinGW生成的dll.a后出现的问题
  15. 怎么利用计算机制作分形图片,一个能徒手绘制分形图的人 天才之击
  16. 世界杯来了!谁能夺冠?让我们用数据说话
  17. 全球及中国空心杯电机行业销售现状及盈利趋势预测报告2022-2027年
  18. Codeforces Round #682 (Div. 2)
  19. vue显示农历_ElementUI显示农历的日历
  20. 分享一个基于QT的自定义串口助手

热门文章

  1. filters全局注册
  2. Android获取公网IP地址
  3. 正则表达式 验证邮箱、身份证、手机号等
  4. 正则表达式验证手机号码
  5. 一键式统计5.0待完善
  6. 微信公众号分享开发过程中报错com.foxinmy.weixin4j.exception.WeixinException: 40164 invalid ip 120.79.217.10 (记录)
  7. 请问专利申请的流程和费用在哪儿可以找到?
  8. presto使用初探
  9. HTML DOM树知识梳理
  10. DailyTopic_4/30: 特斯拉要杀死国产电动车?