[Resolvido] Preview Camera

Salve Galerinha do GUJ!

Estou desenvolvendo um sisteminha que utilizará a imagem da camera e OCR…

Por enquanto estou no basico mesmo(Preview da Camera)…

Achei este tuto e estou tentando segui-lo…

A miha Activity está ficando assim:

package org.compras;

import java.io.IOException;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;

public class OCRComprasActivity extends Activity implements SurfaceHolder.Callback {
    /** Called when the activity is first created. */
	
	Camera camera;
	SurfaceView surfaceView;
	SurfaceHolder surfaceHolder;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.principal);
        
        getWindow().setFormat(PixelFormat.UNKNOWN);
        surfaceView = (SurfaceView) findViewById(R.id.surface_camera);
        surfaceHolder = surfaceView.getHolder();
        surfaceHolder.addCallback(this);
        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        IniciarPreview();
    }
    
    public void IniciarPreview(){
    	try {
    		camera = Camera.open();
		} catch (Exception e) {
			System.err.println("Nao foi possivel abrir a imagem(Camera):");
			System.err.println(e);
		}
    	if(camera != null){
    		try {
				camera.setPreviewDisplay(surfaceHolder);
				camera.startPreview();
				System.out.println("Abriu a imagem(axo) :P");
			} catch (IOException e) {
				System.err.println("Nao foi possivel abrir a imagem:");
				System.err.println(e);
			}
    	}
    }

	@Override
	public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		
	}
}

Porem quando executada não aparece a preview da camera na SurfaceView…

E também não retorna nenhum erro…

O LogCat retorna isto:

05-02 20:17:29.577: D/Camera(1652): app passed NULL surface
05-02 20:17:29.587: I/System.out(1652): Abriu a imagem(axo) :stuck_out_tongue:
05-02 20:17:30.268: D/gralloc_goldfish(1652): Emulator without GPU emulation detected.

Qualquer informação já ajuda!

Fiquem com DEUS!!

Ninguém??

Nem um tutorial que vocês me recomendem??

Bem galerinha…
me recomendaram este link funcinou a parte de capiturar a imagem mas, eu nao estou conseguindo achar a imagem nem para colocá-la num ImageView!!

Foi neste forum que me recomendaram…

Obrigado pela atenção e fiquem com DEUS!!

Bem galerinha…

Fuçando a net eu axei uma “solução”…

O código está ficando + ou - assim:

[code]package com.LanDantas;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
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.widget.Button;
import android.widget.ImageView;

public class CapturaSimplesActivity 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;
private SurfaceView mSurfaceView;
private SurfaceHolder mSurfaceHolder;
Button btIniciar;

public void onCreate(Bundle icicle)   
{  
    super.onCreate(icicle);  

    Log.d(TAG, "Iniciou o Sistema");
    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);  
      
    iniciarCamera();
}  

public void iniciarCamera(){
	setContentView(R.layout.camera_surface);  
    mSurfaceView = (SurfaceView) findViewById(R.id.surface_camera);  
    mSurfaceView.setOnClickListener(this);  
    mSurfaceHolder = mSurfaceView.getHolder();  
    mSurfaceHolder.addCallback(this);  
    mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    btIniciar = (Button) findViewById(R.bts.btIniciar);
    addListenerBt();
}

void addListenerBt(){
	btIniciar.setOnClickListener(new View.OnClickListener() {
		
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			//mCamera.startPreview();
			
			mCamera.takePicture(null, mPictureCallback, mPictureCallback);
	    	
	    	Log.d(TAG, "Iniciou o Preview");
		}
	});
}

@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();  

            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();  
    //mCamera.startPreview();

}  

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {  
    Log.e(TAG, "surfaceChanging");  

    if(mCamera != null){
    
    // XXX stopPreview() will crash if preview is not running  
    	if (mPreviewRunning) {  
        	mCamera.stopPreview();  
    	}  
    	
    	Log.d(TAG, "");

    	Camera.Parameters p = mCamera.getParameters();  
    	p.setPreviewSize(w, h);  
    	mCamera.setParameters(p);  
    	try {  
    		mCamera.setPreviewDisplay(mSurfaceHolder);  
    	} catch (IOException e) {  
        	// TODO Auto-generated catch block  
        	//	e.printStackTrace();
    		Log.d("Pau LanDantas", e.toString());
    	}  
    	mCamera.startPreview();  
    	mPreviewRunning = true;  
    	Log.e(TAG, "surfaceChanged");
    }else{
    	Log.d(TAG, "mCamera = null!!");
    }
}  

public void surfaceDestroyed(SurfaceHolder holder) {  
    Log.e(TAG, "surfaceDestroyed");  
    mCamera.stopPreview();  
    mPreviewRunning = false;  
    mCamera.release();  
}

public void onClick(View arg0) {  

	
    //mCamera.takePicture(null, mPictureCallback, mPictureCallback);  

}  

public void setarImagemIV(Bitmap imagem){
	setContentView(R.layout.main);
	ImageView IV1 = (ImageView) findViewById(R.imgs.imageView1);
	IV1.setImageBitmap(imagem);
	
	Button btVoltar = (Button) findViewById(R.bts.btVoltar1);
	btVoltar.setOnClickListener(new View.OnClickListener() {
		
		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			iniciarCamera();
		}
	});
}
  
public boolean StoreByteImage(Context mContext, byte[] imageData,  
        int quality, String expName) {  

    Log.d("DEBUG","Store");  
    String externalStoragePath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/download";   
    File sdImageMainDirectory = new File(externalStoragePath+"/download");  
    FileOutputStream fileOutputStream = null;  
    String nameFile = "testeImage";
    
    BitmapFactory.Options options=new BitmapFactory.Options();  
    options.inSampleSize = 5;
    Bitmap myImage = BitmapFactory.decodeByteArray(imageData, 0,imageData.length,options);  
    
    setarImagemIV(myImage);

    return true;  
}  

}[/code]

Porém no lugar de aparecer a preview da camera está aparecendo uma bugzinho…

Segue o jeito que esta aparecendo na tela do emulador a camera…

Mas por que está aparecendo assim ainda??

A parte de pegar a imagem ainda está funcionando bem, mas está dando bug pra aparecer a imagem :frowning:

Grato pela atenção:!:

Fiquem com DEUS:!:

Cara ficou otimo !

Cara já tentou testar em device (Celular) ? com a camera do celular!

Mas vossa senhoria sabe o por que de aparecer assim a tela??

Respondi ai em cima…
Sem maldade.

Ah! obrigado foi mal (falta de atenção :D)…

Mas é por que no momento eu estou sem um celular com android para testá-lo… Estou testando apenas pelo AVD :frowning:

Só como aviso aii pra galera:

Quem fez o “Alicerce” deste código não foi eu…

Eu encontrei-o neste tópico e apenas moldei-o ao meu gosto.

Fiquem com DEUS e obrigado pela atenção:!:

Cara se não me engana o AVD não tem camera. no caso acho que usaria uma webCam. Mas não sei ao certo.
mesmo coisa de fazer um app para gravar som.
esse tipo de app tem que ser testado em device.
pois está acionando funcionalidades dos devices no caso: Camera, Gravar Som e etc…
Testa em device que é batata que funfa.

Hum… Sei…

Mas a pouco tempo(no inicio deste tópico) eu tinha visto uma forma que eu poderia “invocar” o programa “padrão” da camera do Android…

E funfou beleza nesta mesma AVD que estou testando agora…

Mas provavelmente deve ser por estar testando num Emulador mesmo…

Cara muito obrigado pela atenção e fica com DEUS:!:

Teste em um aparelho que irá funcionar! :slight_smile:

Galera desculpa a demora a avisar…
Mas rodou belezinha num Galaxy Y…

Obrigado pela atenção e desculpa o encomodo :smiley: