2012-08-01 24 views
5

Soy un novato en el desarrollo de aplicaciones de Android. Quiero crear una aplicación que obtenga transmisión de la cámara y se muestre en SurfaceView o en FrameLayout.Android: muestra las líneas de la cuadrícula en la cámara

Necesito una opción que se muestra arriba en la transmisión "Mostrar líneas de cuadrícula", cuando el usuario hace clic en ella, las líneas de cuadrícula se mostrarán en la secuencia de la cámara.

¿Alguien puede ayudarme? ¿Cómo puedo mostrar las líneas de la cuadrícula en la transmisión de la cámara?

cualquier ayuda será apreciable ...

Gracias. Mohsin

Respuesta

11

Si desea dibujar las líneas de forma dinámica según el tamaño de su pantalla, puede usar esto agregándolo a su clase de vista previa de la cámara.

@Override 
    protected void onDraw(Canvas canvas) 
    { 
     if(grid){ 
     // Find Screen size first 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     int screenWidth = metrics.widthPixels; 
     int screenHeight = (int) (metrics.heightPixels*0.9); 

     // Set paint options 
     paint.setAntiAlias(true); 
     paint.setStrokeWidth(3); 
     paint.setStyle(Paint.Style.STROKE); 
     paint.setColor(Color.argb(255, 255, 255, 255)); 

     canvas.drawLine((screenWidth/3)*2,0,(screenWidth/3)*2,screenHeight,paint); 
     canvas.drawLine((screenWidth/3),0,(screenWidth/3),screenHeight,paint); 
     canvas.drawLine(0,(screenHeight/3)*2,screenWidth,(screenHeight/3)*2,paint); 
     canvas.drawLine(0,(screenHeight/3),screenWidth,(screenHeight/3),paint); 
     } 
    } 

también hay que añadir la siguiente línea en el constructor de la clase previa de la cámara:

this.setWillNotDraw(false); 
+0

Para este caso, las opciones configuradas para la pintura en su constructor y guardar algunos recursos. Las opciones de pintura son constantes y el método onDraw() se llamará muchas veces. – Oximer

3

Si desea una superposición sobre la vista previa de la cámara, tendrá que escribir su propia cámara. Es tema muy difícil de cubrir en una sola respuesta, pero aquí hay una guía que debe empezar:

http://developer.android.com/guide/topics/media/camera.html#custom-camera

Una vez que haya la cámara de trabajo, sólo editar el diseño de XML de la actividad de la cámara. Use RelativeLayout, le permitirá colocar otras Vistas (botones, imágenes) sobre su superficie de vista previa.

Aquí hay un ejemplo de diseño XML compatible con la guía mencionada anteriormente. La superficie de vista previa se crea programáticamente y se pone en FrameLayout (más en la guía vinculada arriba). ImageView se dibujará sobre la superficie de vista previa.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <FrameLayout 
    android:id="@+id/camera_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

    <ImageView 
    android:id="@+id/grid" 
    android:src="@drawable/your_grid_drawable" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    /> 

</RelativeLayout> 

Usted también tiene que colocar allí un botón de captura y un botón interruptor de la red, pero debe tener la idea de cómo hacerlo en el ejemplo anterior. Simplemente agregue más elementos en RelativeView y colóquelos como lo haría en el diseño ordinario.

Cuestiones relacionadas