【发布时间】:2020-10-05 08:51:24
【问题描述】:
如果没有检测到人脸,我需要隐藏相机拍摄按钮。 我已经尝试了三天。当检测到人脸时,我找不到采取行动的方法。
注意:这段代码工作得很好我只需要添加面部检测器如何以及在哪里?然后使用这个人脸检测器对相机拍摄按钮进行操作
btn_shot.setVisibility(view.GONE)
这里是创建相机预览:
private void creatCameraPreview() throws CameraAccessException {
SurfaceTexture texture = textureView.getSurfaceTexture();
texture.setDefaultBufferSize(imageDimensions.getWidth(),
imageDimensions.getHeight());
Surface surface = new Surface(texture);
captureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
captureRequestBuilder.addTarget(surface);
cameraDevice.createCaptureSession(Arrays.asList(surface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
if (cameraDevice == null)
return;
cameraCaptureSession = session;
try {
updatePreview();
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession session) {
Toast.makeText(CameraTaken.this, "Configuration Changed", Toast.LENGTH_SHORT).show();
}
}, null);
}
这里正在打开相机:
private void openCamera() throws CameraAccessException {
CameraManager manager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
assert manager != null;
cameraId = manager.getCameraIdList()[0]; //[0] for the back facing camera [1] for the front facing camera
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
StreamConfigurationMap map = characteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
assert map != null;
imageDimensions = map.getOutputSizes(SurfaceTexture.class)[0];
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.INTERNET) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(CameraTaken.this, new String[]{
Manifest.permission.CAMERA,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.INTERNET}, 101);
return;
}
manager.openCamera(cameraId, stateCallBack, null);
}
【问题讨论】:
-
不清楚您的问题出在哪里。您是否尝试过修改官方示例应用程序而不是从头开始构建它? github.com/android/camera-samples/tree/master/Camera2Basic
-
我对当前代码没有问题(上面提到过)。我正在尝试添加人脸检测器,如果没有检测到人脸,我需要将按钮可见性设置为 GONE