camera-关于竖屏相机调用横版拍照的系统相机问题

问题描述

关于竖屏相机调用横版拍照的系统相机问题

在我的程序里面,有个Activity是锁定竖屏的,点击拍照按钮,将会调用系统的相机进行拍照,现在遇到的问题是:如果这个系统相机是默认横屏拍照的,那么在程序跳转会发生横竖屏切换,在拍照返回结果的时候,我的Activity被重新创建了!

试过这个方法:

下面记录一下开发中遇到的问题,说道这里不得不吐槽一下三星的相机,调用之后系统会调用ondestroy导致activity被销毁重建,原因是系统调用了一次横竖屏切换,解决方法如下

方法一:刚开始调用了onSaveInstanceState(Bundle savedInstanceState)和onRestoreInstanceState(Bundle savedInstanceState)这个方法来实现,虽然方法比较笨,但是可以通过在onSaveInstanceState中保存一些你需要的变量,在onCreate()方法中判断savedInstanceState是否为null,不为null则调用onRestoreInstanceState()方法取出之前存的变量来使用,这相当于重新加载了一边当前activity。

方法二:上面的方法可行,但并不是解决问题的根本办法,后来通过查看发现在调用相机时,activity从竖屏切换到了横屏,在横竖屏切换导致了activity重新装载,找到根本原因后,在activity中通过android:configChanges="orientation|keyboardHidden" 这个属性,可以约束调用相机时,保持当前activity竖屏状态不变,从而解决了activity重新加载的问题。


但是并不起作用。在拍照的时候,还是会出现问题。

另外也试过这个:http://www.zhihu.com/question/21541629(android 调用三星i9300系统相机出现Activity 自动onDestory?)

这个方案能保证Activity不被销毁,但是无法区分是拍照结果是取消还是确定,因为每一次调用返回的都是同一个值

所以想问一下,有没有什么处理方法
(我观察过,QQ也是调用系统相机,但是他不敢是在三星手机还是在其他手机上面,都能够很好的兼容,而58和赶集则是采用自己定义的相机,可能很大的原因就是避开系统相机的兼容性,更何况各种其他第三方相机)
http://ask.csdn.net/#

解决方案

在3.2系统之上要在加一个属性:screenSize。就可以阻止activity不进行横竖屏切换

解决方案二:

建议你直接调用系统相机,就可以避过这个问题了

解决方案三:

相机本身内存占用就多。
不管如何都得考虑打开相机的Activity被finish或者因为内存等原因被kill的情况。所以onSaveInstanceState是必须的。

解决方案四:

在3.2系统之上要在加一个属性:screenSize。就可以阻止activity不进行横竖屏切换

时间: 2024-09-07 08:01:45

camera-关于竖屏相机调用横版拍照的系统相机问题的相关文章

Android4.4.2KK竖屏强制更改为横屏的初步简略方案

解决方案: 当前是根据当前问题场景即竖屏强制更改为横屏的需求而做的改动,基本是hardcode定义的状态,总共修改有效代码行数5行,如果后续有其他需求或者需要更灵活的配置横屏和竖屏,可以采用编译开关生成系统属性的方式来控制,在系统中通过属性来判断当前的屏幕状态以达到灵活目的,可以在本次修改的基础上增加条件判断达到目的,具体修改代码如下图中圈红标识. 一.Android Framework Java层的修改: 1.WindowManagerService的默认Rotation修改: 2.Phone

[Unity+Android]横版扫描二维码

终于解决了一个忧伤好久的问题,严重拖了项目进度,深感惭愧!一直被一系列的问题所困扰,然后又只能自己一个人摸索,也是一段辛酸忧伤史,现在小结一下上个月在做二维码的过程中所碰到的问题以及解决办法,现在庆幸终于解决好了,终于能将这个功能告一段落,一下小结也是分享一下Unity的某些"坑",让同行少走弯路,起码在二维码这方面应该会有所启迪,欣慰的是接下来几天终于可以做自己应该做的事情了! 效果图: 先小结一下碰到的问题: 1.Unity工程屏幕方向与Android的工程屏幕方向要一致的问题 本

Android开源二维码识别项目zxing横屏改为竖屏识别解决方案

在网上找了很多方法,但最后都有问题,自己调试了好几个小时,最后终于完美解决了竖屏识别. 首先你需要有zxing项目的简化版代码. 使用简化版可以免去许多不必要的代码,方便学习研究,更好定位核心功能. 如果你调试成功后,就可以着手修改将其变为竖屏识别了. 第1步: 在AndroidManifest中将CaptureActivity的screenOrientation属性做如下修改: android:screenOrientation="portrait"  第2步: 我们要把摄像头预览景

Android调用系统相机拍照保存以及调用系统相册的方法

系统已经有的东西,如果我们没有新的需求的话,直接调用是最直接的.下面讲讲调用系统相机拍照并保 存图片和如何调用系统相册的方法. 首先看看调用系统相机的核心方法: Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(camera, 100); 相机返回的数据通过下面的回调方法取得,并处理 @Override protected void onActivityResult(int re

酷狗音乐桌面歌词怎么设置竖屏靠边?

  酷狗音乐桌面歌词怎么设置竖屏靠边?        酷狗音乐的桌面歌词默认是横屏,但有些朋友就不喜欢,下面介绍一下怎么把它设置成竖屏. 1.桌面个如果是解锁状态,就可直接编辑.如果是锁着就必须先解锁.把鼠标移动到歌词区域,如图,点击小锁解锁. 2.解锁之后,鼠标再移到歌词区域出现编辑框.点击--竖屏.歌词框变成竖的了. 如果出现歌词框变竖的里,但文字还是横的 1.就多一步设置.如图进行设置(带@符号的是竖字体)

Android--锁定横屏、竖屏、去标题全屏

xml文件中设置: 要实现这个目的,只需要在AndroidManifest.xml里声明Activity的时候加上一个属性:Android:screenOrientation,属性取值landscape为固定横屏.portrait为固定纵屏幕. [html] view plain copy  print? <!-- android:screenOrientation="portrait" 竖屏    android:screenOrientation="landscap

代码-android关于调用系统相机拍照后APP闪退的问题

问题描述 android关于调用系统相机拍照后APP闪退的问题 最近在写一个小APP,就是调用系统相机拍照,然后保存在本地相册,代码没有显示bug,但是在调试时出现了拍照后闪退的问题,我的测试机是小米2S,MIUI 7系统,android5.0.X的,拍照的照片能保存在本地,但是在拍照后点击确定后软件就闪退了,这是我的代码 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState)

【ANDROID游戏开发之九】(细节处理)触屏事件中的BUG解决方案以及禁止横屏和竖屏切换!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/android-game/315.html ----------------------- 『很多童鞋说我的代码运行后,点击home或者back后会程序异常,如果你也这样遇到过,那么你肯定没有仔细读完Himi的博文,第十九篇Himi专门写了关于这些错误的原因和解决方法,这里我在博客都补充说明下,省的童鞋们总疑惑这一块:请点击下面联系进入阅读:

Android Camera开发系列(上)——Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片

Android Camera开发系列(上)--Camera的基本调用与实现拍照功能以及获取拍照图片加载大图片 最近也是在搞个破相机,兼容性那叫一个不忍直视啊,于是自己翻阅了一些基本的资料,自己实现了一个相机,虽然相机这东西,兼容性不敢恭维,但是用到的地方确实很多,所以今天,我们就一起来学习一下吧 参照Google API:http://developer.android.com/guide/topics/media/camera.html 一.Camera的启动方式 1.调用系统方式 2.自定义