Created
          December 2, 2011 12:52 
        
      - 
      
- 
        Save jbeerdev/1423136 to your computer and use it in GitHub Desktop. 
    Take a picture on Android
  
        
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | import java.io.IOException; | |
| import android.app.Activity; | |
| import android.content.Context; | |
| import android.content.Intent; | |
| import android.graphics.PixelFormat; | |
| import android.hardware.Camera; | |
| import android.os.Bundle; | |
| import android.util.Log; | |
| import android.view.KeyEvent; | |
| import android.view.MotionEvent; | |
| import android.view.SurfaceHolder; | |
| import android.view.SurfaceView; | |
| import android.view.View; | |
| import android.view.Window; | |
| import android.view.WindowManager; | |
| import android.view.View.OnClickListener; | |
| import android.view.View.OnTouchListener; | |
| public class CamaraView extends Activity implements SurfaceHolder.Callback, | |
| OnClickListener { | |
| static final int FOTO_MODE = 0; | |
| private static final String TAG = "CameraTest"; | |
| Camera mCamera; | |
| boolean mPreviewRunning = false; | |
| private Context mContext = this; | |
| public void onCreate(Bundle icicle) { | |
| super.onCreate(icicle); | |
| Log.e(TAG, "onCreate"); | |
| Bundle extras = getIntent().getExtras(); | |
| getWindow().setFormat(PixelFormat.TRANSLUCENT); | |
| requestWindowFeature(Window.FEATURE_NO_TITLE); | |
| getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, | |
| WindowManager.LayoutParams.FLAG_FULLSCREEN); | |
| setContentView(R.layout.surface_camera); | |
| mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera); | |
| mSurfaceView.setOnClickListener(this); | |
| mSurfaceHolder = mSurfaceView.getHolder(); | |
| mSurfaceHolder.addCallback(this); | |
| mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); | |
| } | |
| @Override | |
| protected void onRestoreInstanceState(Bundle savedInstanceState) { | |
| super.onRestoreInstanceState(savedInstanceState); | |
| } | |
| Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { | |
| public void onPictureTaken(byte[] imageData, Camera c) { | |
| if (imageData != null) { | |
| Intent mIntent = new Intent(); | |
| FileUtilities.StoreByteImage(mContext, imageData, | |
| 50, "ImageName"); | |
| mCamera.startPreview(); | |
| setResult(FOTO_MODE,mIntent); | |
| finish(); | |
| } | |
| } | |
| }; | |
| protected void onResume() { | |
| Log.e(TAG, "onResume"); | |
| super.onResume(); | |
| } | |
| protected void onSaveInstanceState(Bundle outState) { | |
| super.onSaveInstanceState(outState); | |
| } | |
| protected void onStop() { | |
| Log.e(TAG, "onStop"); | |
| super.onStop(); | |
| } | |
| public void surfaceCreated(SurfaceHolder holder) { | |
| Log.e(TAG, "surfaceCreated"); | |
| mCamera = Camera.open(); | |
| } | |
| public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { | |
| Log.e(TAG, "surfaceChanged"); | |
| // XXX stopPreview() will crash if preview is not running | |
| if (mPreviewRunning) { | |
| mCamera.stopPreview(); | |
| } | |
| Camera.Parameters p = mCamera.getParameters(); | |
| p.setPreviewSize(w, h); | |
| mCamera.setParameters(p); | |
| try { | |
| mCamera.setPreviewDisplay(holder); | |
| } catch (IOException e) { | |
| // TODO Auto-generated catch block | |
| e.printStackTrace(); | |
| } | |
| mCamera.startPreview(); | |
| mPreviewRunning = true; | |
| } | |
| public void surfaceDestroyed(SurfaceHolder holder) { | |
| Log.e(TAG, "surfaceDestroyed"); | |
| mCamera.stopPreview(); | |
| mPreviewRunning = false; | |
| mCamera.release(); | |
| } | |
| private SurfaceView mSurfaceView; | |
| private SurfaceHolder mSurfaceHolder; | |
| public void onClick(View arg0) { | |
| mCamera.takePicture(null, mPictureCallback, mPictureCallback); | |
| } | |
| } | 
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment