총 게시물 38,593건, 최근 0 건 안내 RSS 글쓰기
이전글  다음글  목록 글쓰기
[안드로이드]

카메라프리뷰 위에 이미지

글쓴이 : 주혀비 날짜 : 2017-04-15 (토) 19:30 조회 : 410
글주소 : http://www.androidside.com/B49/167000
 
  카메라전문 ZOON IN
당신이 찾는 카메라! 100% 정품 카메라, 리퍼, 진열상품특가, 당일발송
www.zoomin.co.kr
  옥션 카메라
카메라! ALL KILL 특가, 스마트배송, 누구나 10% 할인!
www.auction.co.kr
  카메라렌탈은역시 에스엘알렌트
카메라렌탈, 캠코더대여는 에스엘알렌트, 강남점 합정점 학생할인35% 최신카메라렌탈
www.slrrent.com
신청하기


안드로이드, 자바 그리고 다양한 질문에 대해 성실히 답해드립니다. Q&A Jang

카메라 프리뷰 위에 다른 뷰를 통해서 이미지를 출력하고 싶습니다.
텍스트는 출력이 잘 되는데 이미지는 나오지않네요. 도움 부탁드립니다.. 아래는 코드입니다.
public class MainActivity extends Activity {
private Preview mPreview;
private DrawOnTop mDrawOnTop;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);

int permissionCheck = ContextCompat.checkSelfPermission(this,
Manifest.permission.CAMERA);
if(permissionCheck != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.CAMERA},
0);
} else {
createPreview();
}
}

@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
createPreview();
} else {
finish();
}
return;
}

private void createPreview(){
mDrawOnTop = new DrawOnTop(this);
mPreview = new Preview(this, mDrawOnTop);
setContentView(mPreview);
addContentView(mDrawOnTop, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
}
}

class DrawOnTop extends View {

Bitmap imgMos;
Paint paint = new Paint();

public DrawOnTop(Context context){
super(context);
}
protected void onDraw(Canvas canvas){
imgMos = BitmapFactory.decodeResource(getResources(),R.drawable.mos_01);
imgMos = Bitmap.createScaledBitmap(imgMos, 20, 20, true);
canvas.drawText("강주협" , 10, 10 ,paint);
paint.setTextAlign(Paint.Align.LEFT);
paint.setTextSize(60);
}
}
class Preview extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder mHolder;
Camera mCamera;
DrawOnTop mDrawOnTop;
boolean mFinished;

Preview(Context context, DrawOnTop drawOnTop) {
super(context);

mDrawOnTop = drawOnTop;
mFinished = false;


mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}

public void surfaceCreated(SurfaceHolder holder) {
mCamera = Camera.open();
mCamera.setDisplayOrientation(90);
try {
mCamera.setPreviewDisplay(holder);
Camera.Parameters parameters = mCamera.getParameters();
parameters.setRotation(180);
mCamera.setParameters(parameters);

mCamera.setPreviewCallback(new Camera.PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera camera)
{
if ( (mDrawOnTop == null) || mFinished )
return;

mDrawOnTop.invalidate();
}
});
}
catch (IOException exception) {
mCamera.release();
mCamera = null;
}
}

public void surfaceDestroyed(SurfaceHolder holder) {

mFinished = true;
mCamera.setPreviewCallback(null);
mCamera.stopPreview();
mCamera.release();
mCamera = null;
}

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

Camera.Parameters parameters = mCamera.getParameters();
parameters.setPreviewSize(320, 240);
parameters.setPreviewFrameRate(15);
parameters.setSceneMode(Camera.Parameters.SCENE_MODE_NIGHT);
parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
mCamera.setParameters(parameters);
mCamera.startPreview();
}

}



질문자가 자신의 포인트 10 점을 걸었습니다.
답변하시면 포인트 2을, 답변이 채택되면 포인트 8을 드립니다.

질문답변 게시판에서 궁금한 사항을 해결하셨다면, 애써 답변해주신 분께 잘 되었다고 따뜻한 댓글 한마디 남겨주세요.
그리고 답변해주신 분의 글을 '추천' 해주세요.
추천받으신 분에게 1포인트가, 추천하신 분에게도 1포인트가 적립됩니다. ^^

뉴키 2017-04-17 (월) 10:23
mPreview를 setContentView로 하지 마시고 깡통레이아웃을 만들어 거기다 두개 add시키고 이미지뷰의 zOrder를 올리세요.
댓글주소 추천 0 반대 0
이전글  다음글  목록 글쓰기

 


Copyright ⓒ www.androidside.com. All rights reserved.
채팅 권한: 글쓰기 1개
2레벨 이상만 대화 가능
공개 채팅: 평일 !(9시 ~ 17시),토,일
안사2 변경사항 보러가기 챗방이 잘 안보이면 크롬에서 접속해주세요
챗방 숨기기 |  챗방 보이기