2011-05-04 18 views
15

हाय मैं अपने आवेदन में से किसी एक छवि को कैप्चर करने के लिए कैमरे का उपयोग करने की कोशिश कर रहा हूं। विशेष बात यह है कि मुझे एक स्क्वायर पूर्वावलोकन क्षेत्र (और अंत में चित्र) की आवश्यकता है। मैंने दोनों चित्रों के आकार को परिभाषित करने और 1: 1 पिक्सेल अनुपात का पूर्वावलोकन करने की कोशिश की, लेकिन काम करने के लिए कुछ भी नहीं। कोई फर्क नहीं पड़ता कि मैं क्या करता हूं तस्वीर एक वर्ग पर "squashed" लग रहा है।एंड्रॉइड कैमरा पूर्वावलोकन: 1: 1 पहलू अनुपात, कैसे?

कोई भी जिसके पास इसे हल करने के बारे में कोई जानकारी है?

कोड:

public class AddFromCameraActivity extends Activity implements SurfaceHolder.Callback { 
private Camera mCamera; 
private Parameters mParameters; 
private SurfaceView mCameraPreview; 
private SurfaceHolder mSurfaceHolder; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.addimagefromcameramain); 
    initialise(); 
    //Testing area 
    mCamera = Camera.open(); 
    mParameters = mCamera.getParameters(); 
    mParameters.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO); 
    mParameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); 
    mParameters.setJpegQuality(50); 
    mParameters.setJpegThumbnailQuality(50); 
    mParameters.setPictureSize(1024, 1024); 
    //mParameters.setPreviewFormat(ImageFormat.JPEG); 
    mParameters.setJpegThumbnailSize(256, 256); 
    mParameters.setPreviewSize(500, 500); 
    mCamera.setParameters(mParameters); 
} 
private void initialise() 
{ 
    mCameraPreview = (SurfaceView)findViewById(R.id.cameraSurfaceView); 
    mSurfaceHolder = mCameraPreview.getHolder(); 
    mSurfaceHolder.addCallback(this); 
    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
    mSurfaceHolder.setFixedSize(500, 500); 
} 
@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, 
     int height) { 

} 
@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    try { 
     mCamera.setPreviewDisplay(mSurfaceHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 
@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 
    mCamera.stopPreview(); 
    mCamera.release(); 
} 
@Override 
public void onPause() 
{ 
    mCamera.release(); 
} 
} 

धन्यवाद

उत्तर

4

आप Android एसडीके से CameraPreview sample कोड पर एक नज़र ले जा सकते हैं। getOptimalPreviewSize विधि विभिन्न कैमरे के आकार से निपटने का तरीका दिखाती है और onLayout विधि दिखाती है कि गतिविधि में पूर्वावलोकन सतह को कैसे लेआउट करें।

+0

कैमरा पूर्वावलोकन कार्यान्वयन के लिए गुगल किया गया और इसे मिला। ऐसा लगता है कि विभिन्न पहलू अनुपात को संभाला जाता है। इसे आज़माएं। https://github.com/pocorall/scaloid-apidemos/blob/master/src/main/java/com/example/android/apis/graphics/CameraPreview.java – akhyar

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