java - Android:在 HTC One X 上使用 Camera.Parameters.SCENE_MODE_HDR 时出现错误

标签 java android crash camera

我必须在我的应用程序中使用场景 HDR。此选项自 Android 版本 4.2 起可用,因此应该在 HTC One X 上可用。但是,我的应用程序在启动时崩溃了。我尝试了这段代码,它可以在 Android 4.2.1 的 acer 上运行。我使用 SurfaceView 来显示预览。这是我使用的代码:

private void setParameters(){

    Camera.Parameters params = camera.getParameters();
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1)
        params.setSceneMode(Camera.Parameters.SCENE_MODE_HDR );
    camera.setParameters(params);
}
@Override
public void surfaceCreated(SurfaceHolder arg0) {

    camera = Camera.open();  
    try {  
        camera.setPreviewDisplay(holder); 
        setParameters();

    } catch (IOException exception) {  
        camera.release();  
        camera = null;  
    }  
}

这是日志:

10-18 16:11:13.486: E/(24770): file /data/data/com.nvidia.NvCPLSvc/files/driverlist.txt: not found!
10-18 16:11:13.486: I/(24770): Attempting to load EGL implementation /system/lib//egl/libEGL_tegra_impl
10-18 16:11:13.491: I/(24770): Loaded EGL implementation /system/lib//egl/libEGL_tegra_impl
10-18 16:11:13.516: I/(24770): Loading GLESv2 implementation /system/lib//egl/libGLESv2_tegra_impl
10-18 16:11:13.801: W/dalvikvm(24770): threadid=1: thread exiting with uncaught exception (group=0x41f7aa08)
10-18 16:11:13.806: E/AndroidRuntime(24770): FATAL EXCEPTION: main
10-18 16:11:13.806: E/AndroidRuntime(24770): java.lang.RuntimeException: setParameters failed
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.hardware.Camera.native_setParameters(Native Method)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.hardware.Camera.setParameters(Camera.java:1588)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at com.hologram.camerarv.CamerarvSurfaceView.setParameters(CamerarvSurfaceView.java:98)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at com.hologram.camerarv.CamerarvSurfaceView.surfaceCreated(CamerarvSurfaceView.java:183)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.SurfaceView.updateWindow(SurfaceView.java:569)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.SurfaceView.access$000(SurfaceView.java:86)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:174)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:680)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2156)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1190)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4860)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:766)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.Choreographer.doCallbacks(Choreographer.java:575)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.Choreographer.doFrame(Choreographer.java:542)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:751)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.os.Handler.handleCallback(Handler.java:725)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.os.Handler.dispatchMessage(Handler.java:92)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at android.app.ActivityThread.main(ActivityThread.java:5751)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at java.lang.reflect.Method.invokeNative(Native Method)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at java.lang.reflect.Method.invoke(Method.java:511)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
10-18 16:11:13.806: E/AndroidRuntime(24770):    at dalvik.system.NativeStart.main(Native Method)

感谢您的帮助。

最佳答案

来自官方文档:

Different devices may have different camera capabilities, such as picture size or flash modes. The application should query the camera capabilities before setting parameters. For example, the application should call getSupportedColorEffects() before calling setColorEffect(String). If the camera does not support color effects, getSupportedColorEffects() will return null.

首先尝试检查该设备是否支持 HDR 模式。

关于java - Android:在 HTC One X 上使用 Camera.Parameters.SCENE_MODE_HDR 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451914/

相关文章:

java - 如何获取ListView中显示的Spinners的值?

android - 带有适用于AR的Google Play服务更新的初始屏幕后,Unity Android应用程序崩溃(2020年4月11日之后)

eclipse - 为什么我的 Eclipse Indigo 在带有 Oracle JDK 64 位的 Ubuntu 13.04 上崩溃?

java - 使用 Google Drive API HTML+ 图像 + CSS 转 PDF

java - 我可以从 java 程序更改 linux 中的用户密码吗?

java - 将字符串可写数组从 Java 传递到 C(使用 JNA)

java - 你如何制作自定义小部件?

android - 无法在 Qt Creator 中构建 Android APK

java - 如何使用 MySQLContainer 设置全局变量

java - 单击Button时,App崩溃(在两个类之间传递字符串。)