run cts -m CtsCameraTestCases -t android.hardware.cts.CameraTest#testMultipleCameras 测试 fail

测试项: run cts -m CtsCameraTestCases -t android.hardware.cts.CameraTest#testMultipleCameras

报错log: junit.framework.AssertionFailedError: getCameraInfo should not accept bad cameraId (2)

报错原因: 此测试项是 测试 camera_id_list之外的 camera id能不能被 get_cam_info 和 open, 因为之前这个项目是双摄的, 对 cts 包名没有暴露 辅摄, 但是此项测试时 能够被 get_caminfo 和 open, 所以测试fail

fix 方法: 修改 framework/base/core/java/android/hardware/Camera.java , 当cts 包名对 camera id list 之外的camera id进行 get_caminfo 或者 open 操作时, 强制把camera id改为 -1, 这样就会get_caminfo 和open 报错。

代码修改:
//begin added 注释包围部分为新增代码
1.

public static void getCameraInfo(int cameraId, CameraInfo cameraInfo) {
    //begin added on 20190902, fixed cts#testMultipleCameras.
    boolean exposeAuxCamera = false;
    String packageName = ActivityThread.currentOpPackageName();
    /* Force to expose only two cameras
     * if the package name does not falls in this bucket
     */
    String packageList = SystemProperties.get("vendor.camera.aux.packagelist");
    if (packageList.length() > 0) {
        TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
        splitter.setString(packageList);
        for (String str : splitter) {
            if (packageName.equals(str)) {
                exposeAuxCamera = true;
                break;
            }
        }
    }
    if (exposeAuxCamera == false && (cameraId > 1)) {
        cameraId = -1;
    }
    //end added on 20190902, fixed cts#testMultipleCameras.
    _getCameraInfo(cameraId, cameraInfo);
    IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE);
    IAudioService audioService = IAudioService.Stub.asInterface(b);
    try {
        if (audioService.isCameraSoundForced()) {
            // Only set this when sound is forced; otherwise let native code
            // decide.
            cameraInfo.canDisableShutterSound = false;
        }
    } catch (RemoteException e) {
        Log.e(TAG, "Audio service is unavailable for queries");
    }
}
public static Camera open(int cameraId) {

    //begin added on 20190902, fixed cts#testMultipleCameras.
    boolean exposeAuxCamera = false;
    String packageName = ActivityThread.currentOpPackageName();
    /* Force to expose only two cameras
     * if the package name does not falls in this bucket
     */
    String packageList = SystemProperties.get("vendor.camera.aux.packagelist");
    if (packageList.length() > 0) {
        TextUtils.StringSplitter splitter = new TextUtils.SimpleStringSplitter(',');
        splitter.setString(packageList);
        for (String str : splitter) {
            if (packageName.equals(str)) {
                exposeAuxCamera = true;
                break;
            }
        }
    }

    if (exposeAuxCamera == false && (cameraId > 1)) {
        cameraId = -1;
    }
    //end added on 20190902, fixed cts#testMultipleCameras.

    return new Camera(cameraId);
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值