我可以打开默认摄像头,但是打不开其他的摄像头。
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类型。
有人遇到过吗