서피스뷰에 카메라를 보이고, 이 위에 canvas로 텍스트를 그리고있씁니다
처음 한 방법은 레이아웃 xml에 surface를 두어 그것을 카메라 프리뷰로 사용하고
서피스뷰를 하나 더 만들어 여기 위에 canvas를 그리려 했습니다
이 방법을 하니까 서피스 뷰 2개가 겹치게 되는데 텍스트는 보이나 카메라가 보이질 않습니다 ㅠㅠ
그래서 생각한 방법은 서피스뷰를 하나로 두어 하는 방법입니다
아예 xml 서피스뷰를 없애고 레이아웃에 코드상에서 서피스뷰를 addContent 로 서피스뷰를 추가하였는데
이 방법 역시 카메라가 보이질않습니다ㅠㅠ
어떻게 해결해야하나요......하루종일 이것때문에 아무것도못하고잇습니다ㅠㅠ
아래 코드는 두번째 방법으로 짰던 코드입니다!!
public class OverlaySurfaceView extends SurfaceView implements Callback {
private Camera camera;
private SurfaceHolder mHolder;
private OverlayThread oThread;
private int mWidth;
private int mHeight;
public OverlaySurfaceView(Context context) {
super(context);
SurfaceHolder overlayHolder = getHolder();
overlayHolder.addCallback(this);
mHolder = overlayHolder;
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
oThread = new OverlayThread(overlayHolder, context);
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
mWidth = width;
mHeight = height;
Camera.Parameters parameters = camera.getParameters();
parameters.setPreviewSize(width, height);
camera.setParameters(parameters);
camera.startPreview();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
oThread.start();
camera = Camera.open();
camera.setDisplayOrientation(90);
try {
camera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
oThread.interrupt();
oThread.stop();
camera.stopPreview();
camera.release();
camera = null;
}
class OverlayThread extends Thread {
Canvas canvas;
SurfaceHolder mHolder;
Paint paint;
public OverlayThread(SurfaceHolder holder, Context context) {
mHolder = holder;
paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextSize(30);
}
public void run() {
while (true) {
canvas = mHolder.lockCanvas();
canvas.drawColor(Color.TRANSPARENT);
try {
synchronized (mHolder) {
canvas.drawText("TEXT", 200, 200, paint);
}
} finally {
if (canvas != null) {
mHolder.unlockCanvasAndPost(canvas);
}
}
}
}
}