Liberar Camera sem ocorrer erro no retorno ao app

4 respostas
ddkclaudio

Fiz um app de camera, codico nos links , mas quando estou na camera e aperto o botao do celular para voltar a “Home” do android , não do app , e depois tento voltar para o app ele da erro caso eu deixe o camera.release, caso eu o retire ele volta normal porem nao ira liberar a camera, a duvida é como liberar a camera neste meu codigo , que é o codigo tutorial do google valeu.

public void surfaceDestroyed(SurfaceHolder holder) { // empty. Take care of releasing the Camera preview in your activity. debug.debug("CameraPreview","surfaceDestroyed"); if( mCamera != null ) { mCamera.stopPreview( ); mCamera.release();// assim da erro ao voltar para o app } }

public void surfaceDestroyed(SurfaceHolder holder) { // empty. Take care of releasing the Camera preview in your activity. debug.debug("CameraPreview","surfaceDestroyed"); if( mCamera != null ) { mCamera.stopPreview( ); //mCamera.release();//assimnao da erro porem nao libera a camera para o sistema } }

http://pastebin.com/2ABAm3QB
http://pastebin.com/gN5J1LR9
http://pastebin.com/1ZBhy4WW

4 Respostas

D

Try and Catch… basta tratar o erro!

fabriciov

Ja tentou isso ?

public void surfaceDestroyed(SurfaceHolder holder) { // empty. Take care of releasing the Camera preview in your activity. debug.debug("CameraPreview","surfaceDestroyed"); if( mCamera != null ) { mCamera.stopPreview( ); mCamera.release();// assim da erro ao voltar para o app mCamera = null; } }

Se não funcionar libera o surface também.

ddkclaudio

Ola isso eu ja tentei e não deu certo não, tentei de novo agora mas quando eu saio do app estando na camera e volto para ele ocorre o mesmo erro.

Descobri que o erro ocorrendo quando o app tenta retomar a camera no metodo surfaceCreated e dar o setPreviewDisplay(holder); acho que ao dar release ele libera o holder mas como arrumar isso?

public void surfaceCreated(SurfaceHolder holder) {
    	debug.debug("CameraPreview","surfaceCreated");


        // The Surface has been created, now tell the camera where to draw the preview.
        try { // ocorre o erro aqui 
            mCamera.setPreviewDisplay(holder);
            mCamera.startPreview();
        } catch (IOException e) {
            Log.d("CameraPreview", "Error setting camera preview: " + e.getMessage());
        }
        debug.debug("CameraPreview","surfaceCreated SAIDA");
    }

alguem sabe o que ocorre ? help

fabriciov

Tenta fazer o seguinte

Cria um metodo com o conteudo do seu surfaceDestroyed e adiciona metodo para remover o callback do surface : removeCallback
e chama esse metodo no onStop e no onDestroy

no meu app de camera fiz assim :slight_smile:

Criado 14 de janeiro de 2013
Ultima resposta 18 de jan. de 2013
Respostas 4
Participantes 3