Liberar Camera sem ocorrer erro no retorno ao app

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

Try and Catch… basta tratar o erro!

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.

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?

[code] 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");
}[/code]

alguem sabe o que ocorre ? help

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: