2015-07-05 6 views
5

मैं https://github.com/googlesamples/android-Camera2Basic का उपयोग करता हूं, लेकिन इसे इस तरह से संशोधित करने का प्रयास करता हूं कि मैं सतह दृश्य पर खींचे जाने से पहले प्रत्येक फ्रेम तक पहुंच प्राप्त कर सकूं। मैं समझ गया, मैं अतिरिक्त सतह (ImageReader.getSurface()) इस कॉलबैक में जोड़ना चाहिए, और फ्रेम पढ़ इसे से:एंड्रॉइड कैमरा 2 प्रत्येक फ्रेम को संसाधित करता है और इसका पूर्वावलोकन प्रदर्शित करता है

private final ImageReader.OnImageAvailableListener mOnImageAvailableListener 
      = new ImageReader.OnImageAvailableListener() { 

     @Override 
     public void onImageAvailable(ImageReader reader) { 

      Log.d("Img", "onImageAvailable"); 
      mBackgroundHandler.post(new ImageSaver(reader.acquireNextImage(), mFile)); 
     } 

    }; 

समस्या कहा जाता हो जाता है केवल जब छवि उपयोगकर्ता द्वारा कब्जा है इस कॉलबैक है और कैमरे से पूर्वावलोकन स्क्रीन पर भेजा गया ईएसीजी फ्रेम पर नहीं।

यहाँ मैं जोड़ने की कोशिश की है:

private void createCameraPreviewSession() { 
     try { 
      SurfaceTexture texture = mTextureView.getSurfaceTexture(); 
      assert texture != null; 

      // We configure the size of default buffer to be the size of camera preview we want. 
      texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight()); 

      // This is the output Surface we need to start preview. 
      Surface surface = new Surface(texture); 

      // We set up a CaptureRequest.Builder with the output Surface. 
      mPreviewRequestBuilder 
        = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW); 
      mPreviewRequestBuilder.addTarget(surface); 

      // Here, we create a CameraCaptureSession for camera preview. 
      mCameraDevice.createCaptureSession(Arrays.asList(surface, mImageReader.getSurface()), 
        new CameraCaptureSession.StateCallback() { 

         @Override 
         public void onConfigured(CameraCaptureSession cameraCaptureSession) { 
          // The camera is already closed 
          if (null == mCameraDevice) { 
           return; 
          } 

          // When the session is ready, we start displaying the preview. 
          mCaptureSession = cameraCaptureSession; 
          try { 
           // Auto focus should be continuous for camera preview. 
           mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_MODE, 
             CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 
           // Flash is automatically enabled when necessary. 
           mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, 
             CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); 

           // Finally, we start displaying the camera preview. 
           mPreviewRequest = mPreviewRequestBuilder.build(); 
           mCaptureSession.setRepeatingRequest(mPreviewRequest, 
             mCaptureCallback, mBackgroundHandler); 
           //mPreviewRequestBuilder.addTarget(mImageReader.getSurface()); 
          } catch (CameraAccessException e) { 
           e.printStackTrace(); 
          } 
         } 

         @Override 
         public void onConfigureFailed(CameraCaptureSession cameraCaptureSession) { 
          showToast("Failed"); 
         } 
        }, null 
      ); 

      /**TODO added for capturing aeach frame*/ 
      // This is the CaptureRequest.Builder that we use to take a picture. 
      final CaptureRequest.Builder captureBuilder = 
        mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); 
      captureBuilder.addTarget(mImageReader.getSurface()); 

      // Use the same AE and AF modes as the preview. 
      captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, 
        CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 
      captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, 
        CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH); 

      /**end added for capture each frame*/ 


     } catch (CameraAccessException e) { 
      e.printStackTrace(); 
     } 
    } 

उत्तर

2

इसके बजाय CaptureRequest.Builder का एक नया उदाहरण बनाने के लिए, बस ImageReader सर्फेस mPreviewRequestBuilder के उत्पादन लक्ष्य को बढ़ाते हैं।

संबंधित मुद्दे