في تطبيقنا ، ندعم كلاً من واجهات برمجة التطبيقات والكاميرا والكاميرا 2 لالتقاط الصور. ما لاحظته هو أننا نحصل على أعماق تكبير مختلفة عبر كل من واجهات برمجة التطبيقات.
باستخدام Camera1 API ، يكون تعيين مستوى التكبير أمرًا بسيطًا:
Camera.Paramenters params = mCamera.getParameters();
params.setZoom(zoomLevel);
mCamera.setParameters(params);
باستخدام Camera2 API ، يتم تعيين مستوى التكبير / التصغير كما يلي (الكود المستخدم لتطبيق نموذج Camera2 القياسي):
final int zoomScale = 200;
captureBuilder.set(CaptureRequest.SCALER_CROP_REGION, new
Rect(zoomScale * mZoomLevel, zoomScale * mZoomLevel, mStartBounds.right
- (zoomScale * mZoomLevel), mStartBounds.bottom - (zoomScale * mZoomLevel)));
يحتوي جهاز Android الذي أستخدمه على قيمة تكبير قصوى تبلغ 4. في مستوى التكبير / التصغير 4 ، يبدو أن الكاميرا 1 تقوم بالتكبير أكثر بكثير من الكاميرا 2 (بنسبة 10٪ على الأقل).
أتساءل عما إذا كنت قد فقدت شيئًا في حسابي أم أنها الطريقة التي تم بها تصميم Camera2 API. مع تحياتي.