Camera2 上cameraid问题。

我可以打开默认摄像头,但是打不开其他的摄像头。

private void openCamera(final int width, final int height) {
        setUpCameraOutputs(width, height);
        configureTransform(width, height);

        final CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
        try {
            if (!cameraOpenCloseLock.tryAcquire(2500, TimeUnit.MILLISECONDS)) {
                throw new RuntimeException("Time out waiting to lock camera opening.");
            }
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                Log.w(TAG, "checkSelfPermission CAMERA");
            }else{
//                manager.openCamera(mCameraId, stateCallback, null);
              
                mCameraId= Integer.toString(CameraCharacteristics.LENS_FACING_BACK);

                manager.openCamera(mCameraId, stateCallback, backgroundHandler);

                Log.d(TAG, "open Camera");
            }

        } catch (final CameraAccessException e) {
            Log.e(TAG, "Exception!", e);
        } catch (final InterruptedException e) {
            throw new RuntimeException("Interrupted while trying to lock camera opening.", e);
        }
    }
    

错误日志

 Process: me.immi.mycare, PID: 8487
                                                              java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
                                                                  at java.lang.StringToReal.parseFloat(StringToReal.java:304)
                                                                  at java.lang.Float.parseFloat(Float.java:306)
                                                                  at android.hardware.Camera$Parameters.getFloat(Camera.java:6451)
                                                                  at android.hardware.Camera$Parameters.getExposureCompensationStep(Camera.java:5142)
                                                                  at android.hardware.camera2.legacy.LegacyMetadataMapper.mapControlAe(LegacyMetadataMapper.java:473)
                                                                  at android.hardware.camera2.legacy.LegacyMetadataMapper.mapCharacteristicsFromParameters(LegacyMetadataMapper.java:183)
                                                                  at android.hardware.camera2.legacy.LegacyMetadataMapper.createCharacteristics(LegacyMetadataMapper.java:154)
                                                                  at android.hardware.camera2.CameraManager.getCameraCharacteristics(CameraManager.java:207)
                                                                  at me.immi.mycare.nosleep.Camera2ForNoSleepActivity.setUpCameraOutputs(Camera2ForNoSleepActivity.java:266)
                                                                  at me.immi.mycare.nosleep.Camera2ForNoSleepActivity.openCamera(Camera2ForNoSleepActivity.java:133)
                                                                  at me.immi.mycare.nosleep.Camera2ForNoSleepActivity.access$000(Camera2ForNoSleepActivity.java:60)
                                                                  at me.immi.mycare.nosleep.Camera2ForNoSleepActivity$1.onSurfaceTextureAvailable(Camera2ForNoSleepActivity.java:205)
                                                                  at android.view.TextureView.getHardwareLayer(TextureView.java:370)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14212)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14234)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14234)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14234)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14234)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14234)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14234)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.View.draw(View.java:15057)
                                                                  at android.view.ViewGroup.drawChild(ViewGroup.java:3528)
                                                                  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3322)
                                                                  at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchDraw(PhoneWindow.java:2667)
                                                                  at android.view.View.draw(View.java:15364)
                                                                  at android.widget.FrameLayout.draw(FrameLayout.java:647)
                                                                  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2646)
                                                                  at android.view.View.updateDisplayListIfDirty(View.java:14242)
                                                                  at android.view.View.getDisplayList(View.java:14272)
                                                                  at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:267)
                                                                  at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:273)
                                                                  at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:312)
                                                                  at android.view.ViewRootImpl.draw(ViewRootImpl.java:2852)
                                                                  at android.view.ViewRootImp

为什么会报这个错误啊?cameraid一般默认为0,我写0的时候不会报这个错,其他的我写1和2都会报这个错。

Cameraid是string类型, LENS_FACING_FRONT=0 ,LENS_FACING_BACK=1 ,这些是int类型。

有人遇到过吗

阅读 10.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题