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

surface callback하는데 질문이요

0 추천
지금 증강현실 관련 공부중인데 혹시
카메라뷰에서 
/


//////////////////////////
 SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {
  public void surfaceCreated(SurfaceHolder holder) {
   try {
    camera.setPreviewDisplay(previewHolder);
   } catch (Throwable t) {
    Log.e(TAG, "Exception in setPreviewDisplay()", t);
   }
  }

  public void surfaceChanged(SurfaceHolder holder, int format, int width,
    int height) {
   Camera.Parameters parameters = camera.getParameters();
   Camera.Size size = getBestPreviewSize(width, height, parameters);

   if (size != null) {
/////////////////////////////////////////////////////////



.........................................
여기서 surfaceCallback를 

  cameraPreview = (SurfaceView) findViewById(R.id.cameraPreview);
  previewHolder = cameraPreview.getHolder();
  previewHolder.addCallback(surfaceCallback);
  previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

이런식으로 불러옵니다

그런데 다른소스에서는 콜백을 아예 


/////////////////////////////////////////////////////////////////////
class CameraSurface extends SurfaceView implements SurfaceHolder.Callback {
 MixView app; // 메인 뷰
 SurfaceHolder holder; // 서페이스 홀더
 Camera camera;

 // 생성자
 CameraSurface(Context context) {
  super(context);

  try {
   app = (MixView) context; // 컨텍스트(메인 뷰)를 등록

   // 홀더를 읽어오고 콜백을 등록한다
   holder = getHolder();
   holder.addCallback(this);
   holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); // 푸쉬버퍼 사용
  } catch (Exception ex) {

  }
 }

 // 서페이스 생성시
 public void surfaceCreated(SurfaceHolder holder) {
  try {
  .........................
//////////////////////////////////////



이런식으로 정의해서 아예 addContentView로 선언해버리는데
이렇게하지말고 맨위에처럼 
inPreview = false;

  cameraPreview = (SurfaceView) findViewById(R.id.cameraPreview);
  previewHolder = cameraPreview.getHolder();
  previewHolder.addCallback(surfaceCallback);
  previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

이런식으로 선언해서 한레이아웃안에 담을수없나요?

이유는 이 레이아웃에서 서페이스뷰로 카메라를 열어 그화면에
애니메이션효과를 이용한캐릭터를 띄우기위한 이미지뷰도꼭 써야되서그렇습니다

결국 xml레이아웃에있는 서페이스뷰와 이미지뷰를 이용해서
카메라화면에 이미지를 띄우기위해서입니다.. 캔버스는 안되구요..
어떻게 해야되나요..?ㅠ

 

익명사용자 님이 2015년 8월 9일 질문

답변 달기

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