마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

xml 클래스 질문입니다.

0 추천

camera preview xml 클래스를 만들어서 사용중입니다.

onPause()를 호출하게 되면 camera open이 해제되지 않아 .. 

다시 화면을 호출하거나 종료되고나면

camera null point 에러가 발생합니다.

camera를 종료 및 재시작 어떻게 해야되나요 ??

 

소스 내용입니다.

 

package com.android.testsurfaceview;

import android.content.Context;
import android.hardware.Camera;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

import java.io.IOException;

/**
 * Created by extriple on 2016-01-18.
 */
public class TestCameraView extends SurfaceView implements SurfaceHolder.Callback {
    //홀더와 카메라 멤버필드
    private SurfaceHolder mSurfaceHolder;
    private Camera mCamera;

    public TestCameraView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mSurfaceHolder = getHolder();
        mSurfaceHolder.addCallback(this);
        mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }
    public TestCameraView(Context context) {
        super(context);

    }// end constructor
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        mCamera.startPreview();
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        mCamera = Camera.open();
        try {
            Camera.Parameters params = mCamera.getParameters();
            params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
            mCamera.setParameters(params);
            mCamera.setPreviewDisplay(mSurfaceHolder);
        } catch (IOException e) {
            e.printStackTrace();
            mCamera.release();
            mCamera = null;
        }
    }

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        mCamera.setPreviewCallback(null);//콜백 null초기화
        mCamera.stopPreview();//뷰정지
        mCamera.release();//카메라 자원해제
        mCamera = null;//카메라 객체 null초기화
        Log.e("############","cameraRelease");
    }
}
초보이무니다 (470 포인트) 님이 2016년 2월 22일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...