छोड़ दिया गया है, मैं नए एंड्रॉइड कैमरा 2 एपीआई के साथ परीक्षण कर रहा हूं और मैं कैमरे से प्रत्येक फ्रेम को नियंत्रित करना चाहता हूं। इसके लिए मैं क्या करता हूं ImageReader और संकल्प और छवि प्रारूप सेट अप करें।एंड्रॉइड कैमरा 2 एपीआई बफरक्यूयू को
ImageReader imageReader = ImageReader.newInstance(1280,720,ImageFormat.YUV_420_888,1);
imageReader.setOnImageAvailableListener(new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
Log.i(MainActivity.LOG_TAG,"imageReader: "+System.currentTimeMillis());
image.close();
}
},null);
उसके बाद मैं नए पैरामीटर TEMPLATE_PREVIEW साथ CaptureRequest बना सकते हैं और उसे imageReader
को लक्ष्य जोड़ें। cameraCaptureSession के लिए मैं इस अनुरोध
try {
final CaptureRequest.Builder builder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
builder.addTarget(imageReader.getSurface());
mCameraDevice.createCaptureSession(
Arrays.asList(imageReader.getSurface()),
new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession session) {
mSession = session;
try {
mSession.setRepeatingRequest(builder.build(),null,null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(CameraCaptureSession session) {
}
},
null
);
} catch (CameraAccessException e) {
e.printStackTrace();
}
के साथ नए setRepeatingRequest बनाने जब मैं कैमरे खोला और दृश्य क्या मैं पूर्वावलोकन के साथ है मैं अपवाद मिल शुरू करते हैं। लेकिन अपवाद से पहले मुझे कुछ पूर्वावलोकन छवि मिली और उसके बाद मुझे अपवाद
10-30 16:00:32.850 1390-1894/.camera2tutorial E/BufferQueueProducer﹕ [unnamed-1390-1] dequeueBuffer: BufferQueue has been abandoned
10-30 16:00:32.850 1390-1894/.camera2tutorial E/Legacy-CameraDevice-JNI﹕ LegacyCameraDevice_nativeProduceFrame: Error while producing frame No such device (-19).
10-30 16:00:32.850 1390-1894/.camera2tutorial W/SurfaceTextureRenderer﹕ Surface abandoned, dropping frame.
android.hardware.camera2.legacy.LegacyExceptionUtils$BufferQueueAbandonedException
at android.hardware.camera2.legacy.LegacyExceptionUtils.throwOnError(LegacyExceptionUtils.java:64)
at android.hardware.camera2.legacy.LegacyCameraDevice.produceFrame(LegacyCameraDevice.java:516)
at android.hardware.camera2.legacy.SurfaceTextureRenderer.drawIntoSurfaces(SurfaceTextureRenderer.java:699)
at android.hardware.camera2.legacy.GLThreadManager$1.handleMessage(GLThreadManager.java:103)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:145)
at android.os.HandlerThread.run(HandlerThread.java:61)
मैं इसे कैसे ठीक कर सकता हूं ??
मैं एक Samsung Galaxy S5 और एंड्रॉयड एपीआई 21
मैंने विधि से स्थानीय चर को हटा दिया और अपवाद के साथ समस्या हल हो गई। धन्यवाद! –
@ mr.leo इस उत्तर को स्वीकृत के रूप में चिह्नित करने पर विचार करें। इस समाधान ने मेरे मामले में भी मदद की। मजेदार बात यह है कि यह मंच विशिष्ट है - यह नेक्सस और एंड्रॉइड 6 चलाने वाले अन्य उपकरणों पर मेरे लिए ठीक काम किया, लेकिन एंड्रॉइड 5 चलाने वाले एचटीसी वन के साथ असफल रहा। एंड्रॉइड विखंडन की सुंदरता। – stoiczek
@stoiczek आपने ImageReader का संदर्भ कैसे रखा? (इसके अलावा: "captureRequest.addTarget (imageReader.getSurface())") – Denis