카메라 권한 , sd 쓰기 권한










인증키 만들기

:팩키지명 안겹치게.
:인증키 잃어버리지 말기.
:인증키 유효기간 넉넉하게 1000년







업데이트하기







스크린캡쳐









package net.npaka.cameraex;

import android.app.Activity;
import android.os.Bundle;
import android.view.Window;

public class CameraEx extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(new CameraView(this));
	}
}


package net.npaka.cameraex;

import android.content.Context;
import android.hardware.Camera;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import java.io.FileOutputStream;

//카메라제어
public class CameraView extends SurfaceView implements 
                 SurfaceHolder.Callback,Camera.PictureCallback{
	private SurfaceHolder holder; //홀더
	private Camera camera;//카메라

	//생성자
	public CameraView(Context context){
		super(context);

		//표면 홀더 생성 
		holder=getHolder();
		holder.addCallback(this);
		//푸쉬 버퍼 지정(1)
		holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	}

	//표면생성 이벤트의 처리
	public void surfaceCreated(SurfaceHolder holder){
		//카메라 초기화 (2)
		try{
			camera=Camera.open();
			camera.setPreviewDisplay(holder);
		}catch(Exception e){
			e.printStackTrace();
		}
	}

	//표면 변경 이벤트 처리
	public void surfaceChanged(SurfaceHolder holder, int format,int w, int h){
		//카메라 미리보기 시작(3)
		camera.startPreview();
	}

	//표면 파괴 이벤트 처리
	public void surfaceDestroyed(SurfaceHolder holder){
		//카메라 미리보기 정지(4)
		camera.setPreviewCallback(null);
		camera.stopPreview();
		camera.release();
		camera=null;
	}

	// 터치 이벤트 처리
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		if (event.getAction() ==MotionEvent.ACTION_DOWN) {
			// 카메라 스크린 샷 구하기 (5)
			camera.takePicture(null,null,this);
		}
		return true;
	}

	// 사진 촬영 완료 시 불린다.
	public void onPictureTaken(byte[] data,Camera camera) {
		// 파일 보존과 갤러리로의 등록
		try {
			data2sd(getContext(),data,"test.jpg");
		} catch (Exception e) {
			android.util.Log.e("",""+e.toString());
		}

		// 미리보기 재개
		camera.startPreview();
	}

	// 바이트 데이터→SD 카드
	private static void data2sd(Context context,
			byte[] w,String fileName) throws Exception {
		// SD 카드에 데이터 저장 (6)
		FileOutputStream fos=null;
		try {
			fos=new FileOutputStream("/sdcard/"+fileName);
			fos.write(w);
			fos.close();
		} catch (Exception e) {
			if (fos!=null) fos.close();
			throw e;
		}
	}
}





'Android > 기본' 카테고리의 다른 글

예비  (0) 2012.04.28
Android 메인로딩 페이지 만들기  (0) 2012.04.28
Android surface(마우스에 이미지 따라다니기)  (0) 2012.04.28
Android Video View (동영상 재생)  (0) 2012.04.28
Android Audio사용 (음악 재생)  (0) 2012.04.28

+ Recent posts