展锐Camera open failure log解析程序

56 篇文章 0 订阅
2 篇文章 0 订阅

出发点

在展锐平台开发Camera的时候有时候会遇到报错的情况,log如下:

1-05 13:26:12.429   722 29945 E Camera3-Device: Camera 0: sendRequestsBatch: RequestThread: Unable to submit capture request 8115 to HAL device: Function not implemented (-38)
01-05 13:26:12.430 29604 29766 E CAM2PORT_AndCam2AgntImp: Camera device '0' encountered error code '4'
01-05 13:26:12.431 29604 29604 W CAM_CameraActivity Drea: Camera open failure: HIST_ID0_-1_1_803_711_204_711_101_102_204_204_204_204_204_204_461_462_204_502_802_204_204_302_305_802_204_204_204_HEND
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: Handling Camera Open Failure:
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: java.lang.Exception
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at com.android.camera.FatalErrorHandlerImpl.onCameraOpenFailure(FatalErrorHandlerImpl.java:49)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at com.android.camera.CameraActivity$8.run(CameraActivity.java:717)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at android.os.Handler.handleCallback(Handler.java:938)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at android.os.Looper.loop(Looper.java:223)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at android.app.ActivityThread.main(ActivityThread.java:7938)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at java.lang.reflect.Method.invoke(Native Method)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:603)
01-05 13:26:12.432 29604 29604 E CAM_FatalErrorHandler: 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
01-05 13:26:12.433 29604 29604 E CAM_CameraUtil: Show fatal error dialog

在log中会出现HIST_ID0_-1_1_803_711_204_711_101_102_204_204_204_204_204_204_461_462_204_502_802_204_204_302_305_802_204_204_204_HEND 这样的一段包含很多数字的信息,这些数字是有含义的,代表报错之前执行的一些Action,有时候可以帮助我们分析错误的原因。

这些数字主要定义在
vendor/sprd/platform/packages/apps/DreamCamera2/portability/src/com/android/ex/camera2/portability/SprdCameraActions.java

public static final int CAPTURE_BURST_PHOTO = 602;
public static final int CANCEL_CAPTURE_BURST_PHOTO = 603;
/* @} */
public static final int SET_SENSOR_SELF_SHOT_LISTENER = 711;

public static final int SET_PREVIEW_TEXTURE_ASYNC_WITHOUT_OPTIMIZE = 109;
public static final int SET_PREVIEW_DISPLAY_ASYNC_WITHOUT_OPTIMIZE = 110;
public static final int STOP_PREVIEW_WITHOUT_FLUSH = 111;
// SPRD:add for saving normal pic for HDR
public static final int CAPTURE_HDR_PHOTO = 701;

public static final int CAPTURE_PHOTO_WITH_THUMB = 702;

// SPRD: add for thumb resolution, release surface and flush preview buffer.
public static final int RELEASE_FOR_THUMB = 801;
public static final int SET_HDR_SCENE_LISTENER = 802;
public static final int START_VIDEO_RECORDER = 901;
public static final int CAPTURE_PHOTO_WITH_SNAP = 902;
public static final int SET_AI_SCENE_LISTENER = 803;
public static final int SET_AUTO3DNR_SCENE_LISTENER = 805;

public static final int SET_AUTO_CHASING_LISTENER = 804;

vendor/sprd/platform/packages/apps/DreamCamera2/portability/src/com/android/ex/camera2/portability/CameraActions.java

// Camera initialization/finalization
public static final int OPEN_CAMERA = 1;
public static final int RELEASE =     2;
public static final int RECONNECT =   3;
public static final int UNLOCK =      4;
public static final int LOCK =        5;
// Preview
public static final int SET_PREVIEW_TEXTURE_ASYNC =        101;
public static final int START_PREVIEW_ASYNC =              102;
public static final int STOP_PREVIEW =                     103;
public static final int SET_PREVIEW_CALLBACK_WITH_BUFFER = 104;
public static final int ADD_CALLBACK_BUFFER =              105;
public static final int SET_PREVIEW_DISPLAY_ASYNC =        106;
public static final int SET_PREVIEW_CALLBACK =             107;
public static final int SET_ONE_SHOT_PREVIEW_CALLBACK =    108;
// Parameters
public static final int SET_PARAMETERS =     201;
public static final int GET_PARAMETERS =     202;
public static final int REFRESH_PARAMETERS = 203;
public static final int APPLY_SETTINGS =     204;
// Focus, Zoom
public static final int AUTO_FOCUS =                   301;
public static final int CANCEL_AUTO_FOCUS =            302;
public static final int SET_AUTO_FOCUS_MOVE_CALLBACK = 303;
public static final int SET_ZOOM_CHANGE_LISTENER =     304;
public static final int CANCEL_AUTO_FOCUS_FINISH =     305;
// Face detection
public static final int SET_FACE_DETECTION_LISTENER = 461;
public static final int START_FACE_DETECTION =        462;
public static final int STOP_FACE_DETECTION =         463;
// Presentation
public static final int ENABLE_SHUTTER_SOUND =    501;
public static final int SET_DISPLAY_ORIENTATION = 502;
public static final int SET_JPEG_ORIENTATION = 503;
// Capture
public static final int CAPTURE_PHOTO = 601;

// Light portrait
public static final int SET_LIGHT_PORTRAIT_CALLBACK = 510;

每次手动去查太麻烦,于是写了一个Java程序用来解析

源码

public class Main{
    public static void main(String[] args){
        if (args.length <= 0) {
            System.out.println("args length is 0");
            return;
        }
        String arg = args[0];
        String[] actions = arg.split("_");
        StringBuilder builder = new StringBuilder();
        for (String action : actions) {
            switch (action) {
                case "1":
                    builder.append("OPEN_CAMERA");
                    break;
                case "2":
                    builder.append("RELEASE");
                    break;
                case "3":
                    builder.append("RECONNECT");
                    break;
                case "4":
                    builder.append("UNLOCK");
                    break;
                case "5":
                    builder.append("LOCK");
                    break;
                case "101":
                    builder.append("SET_PREVIEW_TEXTURE_ASYNC");
                    break;
                case "102":
                    builder.append("START_PREVIEW_ASYNC");
                    break;
                case "103":
                    builder.append("STOP_PREVIEW");
                    break;
                case "104":
                    builder.append("SET_PREVIEW_CALLBACK_WITH_BUFFER");
                    break;
                case "105":
                    builder.append("ADD_CALLBACK_BUFFER");
                    break;
                case "106":
                    builder.append("SET_PREVIEW_DISPLAY_ASYNC");
                    break;
                case "107":
                    builder.append("SET_PREVIEW_CALLBACK");
                    break;
                case "108":
                    builder.append("SET_ONE_SHOT_PREVIEW_CALLBACK");
                    break;
                case "109":
                    builder.append("SET_PREVIEW_TEXTURE_ASYNC_WITHOUT_OPTIMIZE");
                    break;
                case "110":
                    builder.append("SET_PREVIEW_DISPLAY_ASYNC_WITHOUT_OPTIMIZE");
                    break;
                case "111":
                    builder.append("STOP_PREVIEW_WITHOUT_FLUSH");
                    break;
                case "201":
                    builder.append("SET_PARAMETERS");
                    break;
                case "202":
                    builder.append("GET_PARAMETERS");
                    break;
                case "203":
                    builder.append("REFRESH_PARAMETERS");
                    break;
                case "204":
                    builder.append("APPLY_SETTINGS");
                    break;
                case "301":
                    builder.append("AUTO_FOCUS");
                    break;
                case "302":
                    builder.append("CANCEL_AUTO_FOCUS");
                    break;
                case "303":
                    builder.append("SET_AUTO_FOCUS_MOVE_CALLBACK");
                    break;
                case "304":
                    builder.append("SET_ZOOM_CHANGE_LISTENER");
                    break;
                case "305":
                    builder.append("CANCEL_AUTO_FOCUS_FINISH");
                    break;
                case "461":
                    builder.append("SET_FACE_DETECTION_LISTENER");
                    break;
                case "462":
                    builder.append("START_FACE_DETECTION");
                    break;
                case "463":
                    builder.append("STOP_FACE_DETECTION");
                    break;
                case "501":
                    builder.append("ENABLE_SHUTTER_SOUND");
                    break;
                case "502":
                    builder.append("SET_DISPLAY_ORIENTATION");
                    break;
                case "503":
                    builder.append("SET_JPEG_ORIENTATION");
                    break;
                case "510":
                    builder.append("SET_LIGHT_PORTRAIT_CALLBACK");
                    break;
                case "601":
                    builder.append("CAPTURE_PHOTO");
                    break;
                case "602":
                    builder.append("CAPTURE_BURST_PHOTO");
                    break;
                case "603":
                    builder.append("CANCEL_CAPTURE_BURST_PHOTO");
                    break;
                case "701":
                    builder.append("CAPTURE_HDR_PHOTO");
                    break;
                case "702":
                    builder.append("CAPTURE_PHOTO_WITH_THUMB");
                    break;
                case "711":
                    builder.append("SET_SENSOR_SELF_SHOT_LISTENER");
                    break;
                case "801":
                    builder.append("RELEASE_FOR_THUMB");
                    break;
                case "802":
                    builder.append("SET_HDR_SCENE_LISTENER");
                    break;
                case "803":
                    builder.append("SET_AI_SCENE_LISTENER");
                    break;
                case "804":
                    builder.append("SET_AUTO_CHASING_LISTENER");
                    break;
                case "805":
                    builder.append("SET_AUTO3DNR_SCENE_LISTENER");
                    break;
                case "901":
                    builder.append("START_VIDEO_RECORDER");
                    break;
                case "902":
                    builder.append("CAPTURE_PHOTO_WITH_SNAP");
                    break;
                default:
                    builder.append(action);
                    break;
            }
            builder.append("\n");
        }
        System.out.println("builder:" + builder.toString());
    }
}

使用方法

javac Main.java && java Main HIST_ID38_-1_1_803_302_305_802_711_711_204_101_102_204_204_204_204_204_204_461_462_204_502_303_204_111_711_302_305_803_802_303_461_463_2_1_HEND
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值