2014-08-28 39 views
1

我正在制作一个相当专业的相机应用程序,这个应用程序实际上总是以横向方式进行。部分规范是它必须能够以纵向预览和拍照 - 请参阅下图。设备处于横向拍摄时拍摄人像的任何问题?

我遇到了运行时异常“setParameters failed”的问题(作为对camera.setParameters()调用的回应),我只想在这里检查是否存在一些基本问题,您认为我可能会遇到。例如,照相机背面的光线传感器可能是一个矩形,物理上无法实现 - 或者是其他一些不可避免的问题。 (顺便说一下,我已经知道,光传感器应该安排在一个正方形,所以这个问题不会发生 - 但我的来源可能会错误)。也许这是硬件依赖的?

enter image description here

编辑: FYI我崩溃日志低于:

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 
+0

也添加你的“例外”。 – RobinHood 2014-08-28 13:11:09

+0

请参阅编辑至OP。 – Mick 2014-08-28 13:16:24

回答

2

我刚才做了一个小相机测试应用程序。这是没有问题的,以纵向模式显示相机预览,而设备处于横向模式。以相对角度旋转相机图像非常棘手(因为此旋转角度取决于设备/相机)。然而,一个问题是,这个观点与当时的观点不符:对象似乎变得更胖或者拉长了。但要找出重算算法不应该占用太多时间在Stackoverflow上。

所以关于

我只是想在这里检查是否有一些根本的问题 你认为我可能会起来反对。

实际上这不能实现 - 或者可能是其他一些不可避免的问题。

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

+0

我不太确定,看到这个:http://stackoverflow.com/questions/25568421/how-to-take-a-portrait-photo-when-device-is-in-landscape – Mick 2014-08-29 13:59:39