Когда обнаружение лица включено, оно обнаруживает только один раз, затем массив лиц становится пустым при следующем обратном вызове. Если я отодвину телефон, а затем вернусь к лице, устройство снова обнаруживает лицо, только один раз. устанавливается в CONTROL_SCENE_MODE_DISALBABT. CONTROL_AE_MODE_ON. < /P>
Устройство управляет Android 14.
У меня проблемы с несколькими устройствами этой модели, с различными версиями программного обеспечения. < /P>
Есть ли что -нибудь, что я могу попробовать, или это проблема в самом модуле камеры? Само приложение, поскольку оно также имеет эффект боке, который не доступен для меня через камеру2. < /p>
Вот мой capturecallback: < /p>
CameraCaptureSession.CaptureCallback captureCallback = new CameraCaptureSession.CaptureCallback() {
private void processCapture(CaptureResult result) {
Rectangle faceRect = new Rectangle();
if(result != null) {
if(mode == CameraRequestMode.FACE) {
if(faceDetection && detectFace) {
Face[] faces = result.get(CaptureResult.STATISTICS_FACES);
Point cameraCenter = new Point(mMaxCameraSize.width / 2, mMaxCameraSize.height / 2);
if(faces != null) {
int i = 0;
for(Face face : faces) {
log(String.format(Locale.US, "Face found %d %d", i++, System.currentTimeMillis()));
Rectangle faceRect1 = new Rectangle(face.getBounds());
if(faceRect1.center().distanceToPoint(cameraCenter) < faceRect.center().distanceToPoint(cameraCenter)) {
faceRect = faceRect1;
}
}
}
if(faceRect.surface() == 0) {
if(detectedFace == null || detectedFace.surface() == 0 || faceRetries++ >= 5) {
detectedFace = new Rectangle();
faceRetries = 0;
}
} else {
faceRetries = 0;
detectedFace = faceRect;
log(String.format(Locale.US, "%d %d", (int) detectedFace.position.x, (int) detectedFace.position.y));
}
Rectangle r = detectedFace.translateFromFaceToScreen(mMaxCameraSize, mScreenSize);
VOverlay.setRectangle(r.enlarge(faceZoom), true);
} else if(captureRectangle) {
setOverlayDefaultCapture();
} else {
detectedFace = new Rectangle();
VOverlay.setRectangle(null, false);
}
VOverlay.redraw();
}
}
}
@Override
public void onCaptureProgressed(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull CaptureResult partialResult) {
//processCapture(partialResult);
}
@Override
public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull CaptureRequest request, @NonNull TotalCaptureResult result) {
processCapture(result);
}
};
< /code>
Есть ошибки в logcat: < /p>
2025-02-24 14:18:04.637 1147-1799 CamX ven...amera.provider@4.0-service_64 E [ERROR][STATS_AEC] caecxbankmanager.h:237: GetDataSceneAnalyzer GetDataSceneAnalyzer Invalid data ID -1
2025-02-24 14:18:04.637 1147-1799 CamX ven...amera.provider@4.0-service_64 E [ERROR][STATS_AEC] caecxbankmanager.cpp
2025-02-24 14:18:04.639 1147-1799 CamX ven...amera.provider@4.0-service_64 E [ERROR][META ] camxmetadatapool.cpp:1272 SetMetadataByTagInternal() Invalid size for tag 0 type 0 maxSize 1 unitsize 1 count 2 pool 3 tagName MainColorCorrectionMode client RealTimeFeatureZSLPreviewRaw_Stats0 pipeline RealTimeFeatureZSLPreviewRaw_0 cameraId -1
2025-02-24 14:18:04.644 1147-20994 CHIUSECASE ven...amera.provider@4.0-service_64 E [ERROR ] chxadvancedcamerausecase.cpp:6617 SetPriorityMetadata() [3rd party DBG][ISO] ERROR, Check, please(20)
Подробнее здесь: https://stackoverflow.com/questions/794 ... rs-a-scene
Мобильная версия