设备处于横向状态时拍摄肖像照片有什么问题吗?

时间:2014-08-28 13:06:02

标签: android camera

我正在制作一个相当专业的相机应用程序,用于实际上总是以横向方向保持的设备。规范的一部分是它必须能够以纵向方向预览和拍摄照片 - 见下图。

我遇到运行时异常的问题" setParameters失败" (响应对camera.setParameters()的调用)我想在这里查看是否存在您认为我可能会遇到的一些基本问题。例如,相机背面的光传感器可能是一个矩形排列,实际上这是无法实现的 - 或许是其他一些不可避免的问题。 (顺便说一下,我被告知光传感器应该排成一个正方形,所以不会出现这个问题 - 但我的消息来源可能是错误的)。也许这取决于硬件?

enter image description here

编辑:仅供参考我的崩溃日志如下:

D/AndroidRuntime(7210): Shutting down VM
W/dalvikvm(7210): threadid=1: thread exiting with uncaught exception (group=0x415c2d88)
E/AndroidRuntime(7210): FATAL EXCEPTION: main
E/AndroidRuntime(7210): Process: com.rai.motion, PID: 7210
E/AndroidRuntime(7210): java.lang.RuntimeException: Unable to resume activity {com.rai.motion/com.rai.motion.MotionMain}: java.lang.RuntimeException: setParameters failed
E/AndroidRuntime(7210):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2850)
E/AndroidRuntime(7210):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2879)
E/AndroidRuntime(7210):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2303)
E/AndroidRuntime(7210):     at android.app.ActivityThread.access$800(ActivityThread.java:144)
E/AndroidRuntime(7210):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1246)
E/AndroidRuntime(7210):     at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(7210):     at android.os.Looper.loop(Looper.java:212)
E/AndroidRuntime(7210):     at android.app.ActivityThread.main(ActivityThread.java:5151)
E/AndroidRuntime(7210):     at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(7210):     at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime(7210):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
E/AndroidRuntime(7210):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
E/AndroidRuntime(7210):     at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(7210): Caused by: java.lang.RuntimeException: setParameters failed
E/AndroidRuntime(7210):     at android.hardware.Camera.native_setParameters(Native Method)
E/AndroidRuntime(7210):     at android.hardware.Camera.setParameters(Camera.java:1689)
E/AndroidRuntime(7210):     at com.rai.motion.MotionMain.change_java_recording_camera_settings(MotionMain.java:2105)
E/AndroidRuntime(7210):     at com.rai.motion.MotionMain.start_recording_camera(MotionMain.java:2154)
E/AndroidRuntime(7210):     at com.rai.motion.MotionMain.onResume(MotionMain.java:6013)
E/AndroidRuntime(7210):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192)
E/AndroidRuntime(7210):     at android.app.Activity.performResume(Activity.java:5310)
E/AndroidRuntime(7210):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2840)
E/AndroidRuntime(7210):     ... 12 more
I/Process(7210): Sending signal. PID: 7210 SIG: 9

1 个答案:

答案 0 :(得分:2)

我刚才做了一个小型相机测试应用程序。在设备处于横向方向时,以纵向模式显示相机预览是没有问题的。将摄像机图像旋转直角是很棘手的(因为这个旋转角度取决于设备/摄像机)。然而一个问题是,视角不匹配:物体似乎更胖或拉伸。但是要找出重新计算算法不应该花费很多时间在Stackoverflow上。

关于

  

我只想在这里查看是否存在一些基本问题   你认为我可能会反对。

     

[...]并且在物理上无法实现 - 或者可能是其他一些不可避免的问题。

答案是:这是一项可行的任务。你的例外可能有完全不同的原因。