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

카메라뷰에 글자 넣기..?

0 추천
카메라뷰 소스에 글자를 표현할라고 했는데 안됩니다

public class CameraPreview extends Activity {   
    private Preview mPreview;
    GLSurfaceView mGLSurfaceView;
    @Override
 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        // Hide the window title.
        requestWindowFeature(Window.FEATURE_NO_TITLE);
   

       
        // Create our Preview view and set it as the content of our activity.
        mPreview = new Preview(this);
        DrawOnTop mDraw = new DrawOnTop(this);
        setContentView(mPreview);
    }
   

   

}

 

class DrawOnTop extends View {
 

 

     public DrawOnTop(Context context) {
 
          super(context);
 
          // TODO Auto-generated constructor stub
 
     }
 

 

     @Override
 
     protected void onDraw(Canvas canvas) {
 
          // TODO Auto-generated method stub
 
          
 
          Paint paint = new Paint();
 
          paint.setStyle(Paint.Style.FILL);
 
          paint.setColor(Color.RED);                    // 적색
 
          paint.setStrokeWidth(10);                     // 크기 10
 
          canvas.drawText("Test Text", 10, 10, paint); // 텍스트 표시
 
          canvas.drawLine(50, 50, 200, 200, paint);    // 라인그리기
 
          
 
          super.onDraw(canvas);
 
     }
}
     

class Preview extends SurfaceView implements SurfaceHolder.Callback {
    SurfaceHolder mHolder;
    Camera mCamera;
   
    Preview(Context context) {
        super(context);
       
        // SurfaceHolder.Callback을 설정함으로써 Surface가 생성/소멸되었음을
        // 알 수 있습니다.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

 

 public void surfaceCreated(SurfaceHolder holder) {
        // Surface가 생성되었다면, 카메라의 인스턴스를 받아온 후 카메라의
        // Preview 를 표시할 위치를 설정합니다.
  //Canvas canvas = holder.lockCanvas();
        mCamera = Camera.open();
        try {
           mCamera.setPreviewDisplay(holder);
       
        } catch (IOException exception) {
            mCamera.release();
            mCamera = null;
            // TODO: add more exception handling logic here
        }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // 다른 화면으로 돌아가면, Surface가 소멸됩니다. 따라서 카메라의 Preview도
        // 중지해야 합니다. 카메라는 공유할 수 있는 자원이 아니기에, 사용하지 않을
        // 경우 -액티비티가 일시정지 상태가 된 경우 등 - 자원을 반환해야합니다.
        mCamera.stopPreview();
        mCamera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // 표시할 영역의 크기를 알았으므로 해당 크기로 Preview를 시작합니다.
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setPreviewSize(w, h);
        mCamera.setParameters(parameters);
        mCamera.startPreview();
    }

}
글자가 나타나지 않습니다
헨씀히포 (3,660 포인트) 님이 2013년 12월 21일 질문
헨씀히포님이 2013년 12월 21일 수정

2개의 답변

0 추천
 
채택된 답변

DrawOnTop을 view에 추가 해 주지 않으셔서 onDraw 자체가 안 불릴 듯 한데요...

mFrameLayout = new FrameLayout(this);

mFrameLayout.addView(mPreview);
mFrameLayout.addView(mDraw);
setContentView(mFrameLayout);
와 비슷하게 바꾸세요..
사악미소 (65,330 포인트) 님이 2013년 12월 23일 답변
헨씀히포님이 2013년 12월 24일 채택됨
0 추천
뷰에 중첩이 안되나요...레이아웃들이..ㅎㄷㄷ
정품인증 (1,750 포인트) 님이 2013년 12월 23일 답변
...