package com.moob; import java.io.IOException; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.hardware.Camera; import android.util.Log; import android.view.Display; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.WindowManager; class Preview extends SurfaceView implements SurfaceHolder.Callback { private static final String TAG = "Preview"; SurfaceHolder mHolder; public Camera camera=null; public Context cnxt; public int scuareW; Preview(Context context) { super(context); cnxt=context; // Install a SurfaceHolder.Callback so we get notified when the // underlying surface is created and destroyed. mHolder = getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(SurfaceHolder holder) { // The Surface has been created, acquire the camera and tell it where // to draw. try{ Display display = ((WindowManager) cnxt.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); if (display.getRotation()==0){ camera.setDisplayOrientation(90); } if (display.getRotation()==270){ camera.setDisplayOrientation(180); } try { camera.setPreviewDisplay(holder); } catch (IOException e) { e.printStackTrace(); } }catch (Exception e) { Log.d("TAG", "ERROR AL USAR EL GET ROTATION:"+e.getLocalizedMessage()); } } public void setCamera(Camera camera) { this.camera = camera; if (camera != null) { // mSupportedPreviewSizes = camera.getParameters().getSupportedPreviewSizes(); requestLayout(); } } public void surfaceDestroyed(SurfaceHolder holder) { // Surface will be destroyed when we return, so stop the preview. // Because the CameraDevice object is not a shared resource, it's very // important to release it when the activity is paused. // camera.stopPreview(); // camera = null; } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // Now that the size is known, set up the camera parameters and begin // the preview. Camera.Parameters parameters = camera.getParameters(); parameters.setJpegQuality(50); parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); camera.setParameters(parameters); camera.startPreview(); } @Override protected void onDraw(Canvas canvas) { Display display = ((WindowManager) cnxt.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); if (display.getRotation()==0){ camera.setDisplayOrientation(90); } if (display.getRotation()==270){ camera.setDisplayOrientation(180); } super.onDraw(canvas); } @Override public void draw(Canvas canvas) { super.draw(canvas); Paint p = new Paint(Color.RED); Log.d(TAG, "draw"); canvas.drawText("PREVIEW", canvas.getWidth() , canvas.getHeight(), p); } }