CTS camera 测试里面有很多操作摄像头的用例, 可以借用来使用

比如: CaptureRequestTest#testFaceDetection

adb shell am instrument -r -e class android.hardware.camera2.cts.CaptureRequestTest#testFaceDetection -w android.camera.cts/androidx.test.runner.AndroidJUnitRunner

    /**     * Test face detection modes and results.     */    @Test    public void testFaceDetection() throws Exception {        for (int i = 0; i < mCameraIds.length; i++) {  循环打开前后摄            try {                if (!mAllStaticInfo.get(mCameraIds[i]).isColorOutputSupported()) {                    Log.i(TAG, "Camera " + mCameraIds[i] +                            " does not support color outputs, skipping");                    continue;                }                openDevice(mCameraIds[i]);  打开摄像头                faceDetectionTestByCamera();            } finally {                closeDevice(); 关闭当前摄像头            }        }    }
    private void faceDetectionTestByCamera() throws Exception {        int[] faceDetectModes = mStaticInfo.getAvailableFaceDetectModesChecked();        SimpleCaptureCallback listener;        CaptureRequest.Builder requestBuilder =                mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);        Size maxPreviewSz = mOrderedPreviewSizes.get(0); // Max preview size.        for (int mode : faceDetectModes) {            设置人脸检测模式            requestBuilder.set(CaptureRequest.STATISTICS_FACE_DETECT_MODE, mode);            if (VERBOSE) {                Log.v(TAG, "Start testing face detection mode " + mode);            }            // Create a new listener for each run to avoid the results from one run spill            // into another run.            listener = new SimpleCaptureCallback();创建简单的capturecallback类型的listener            startPreview(requestBuilder, maxPreviewSz, listener); 开始预览            waitForSettingsApplied(listener, NUM_FRAMES_WAITED_FOR_UNKNOWN_LATENCY);            SystemClock.sleep(10000);睡眠10秒            删除以下这句,仅仅预览            //verifyFaceDetectionResults(listener, NUM_FACE_DETECTION_FRAMES_VERIFIED, mode);        }        stopPreview();关闭当前预览    }
    protected void startPreview(CaptureRequest.Builder request, Size previewSz,            CaptureCallback listener) throws Exception {        // Update preview size.        updatePreviewSurface(previewSz);        if (VERBOSE) {            Log.v(TAG, "start preview with size " + mPreviewSize.toString());        }        configurePreviewOutput(request);配置预览        把request, listener, mHandler 这几个关联起来        mSession.setRepeatingRequest(request.build(), listener, mHandler);    }

 

更多相关文章

  1. android studio release版本下打印输出日志
  2. Android(安卓)获得可用摄像头id
  3. Android(安卓)下保持屏幕常亮
  4. 如何制作Android手电筒程序
  5. android studio release版本下打印输出日志
  6. android 关闭软键盘
  7. 如何关闭android studio3.0的自动保存功能(有效)
  8. android p 4G LTE 默认关闭修改
  9. android 打开软键盘 关闭软键盘

随机推荐

  1. Android未调用Looper.prepare()-Can't cr
  2. android中AudioRecord采集音频的参数说明
  3. android之Dialog的使用
  4. Android Stuido优化速度
  5. Android切换Activity时的淡入动画和缩小
  6. AndroidのViewFlipper和ViewPager
  7. 移动应用界面原型构建工具,交互设计师的利
  8. Android(安卓)requires compiler complia
  9. LinearLayout中添加分割线
  10. Android 中关于PathEffect子类的效果(中级