import java.io.FileOutputStream;
import java.util.Calendar;
import android.app.Activity;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class CameraMain extends Activity implements SurfaceHolder.Callback,
Camera.PictureCallback, OnClickListener {
SurfaceView sv;
Button bt;
SurfaceHolder holder;
Camera camera;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cameramain);
sv = (SurfaceView) findViewById(R.id.surfaceView);
bt = (Button) findViewById(R.id.chiz);
bt.setOnClickListener(this);
holder = sv.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.chiz) {
camera.takePicture(null, null, this);
}
}
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
// TODO Auto-generated method stub
camera.startPreview();
}
@Override
public void surfaceCreated(SurfaceHolder holder) {
try {
camera = Camera.open();
camera.setPreviewDisplay(holder);
Parameters param = camera.getParameters();
param.setRotation(90);
param.setFlashMode(Parameters.FLASH_MODE_AUTO);
param.setFocusMode(Parameters.FOCUS_MODE_AUTO);
param.setColorEffect(Parameters.EFFECT_AQUA);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
camera.stopPreview();
camera.release();
camera = null;
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
String sdcard_path = Environment.getExternalStorageDirectory()
.getAbsolutePath();
String photo_dir = sdcard_path + "/DCIN/mytest/";
FileOutputStream fos = null;
try {
Calendar cal = Calendar.getInstance();
int yy, mm, dd, hh, mi, ss;
yy = cal.get(Calendar.YEAR);
Log.d("년도", "" + yy);
mm = cal.get(Calendar.MONTH)+1;
Log.d("월", "" + mm);
dd = cal.get(Calendar.DAY_OF_MONTH);
Log.d("일", "" + dd);
hh = cal.get(Calendar.HOUR);
Log.d("시", "" + hh);
mi = cal.get(Calendar.MINUTE);
Log.d("분", "" + mi);
ss = cal.get(Calendar.SECOND);
Log.d("초", "" + ss);
String now = String.format("%04d%02d%02d-%02d%02d%02d", yy, mm, dd);
Log.d("현재", "" + now);
fos = new FileOutputStream(photo_dir + now + ".jpg");
Log.d("확장자", "" + fos);
fos.write(data);
fos.close();
fos = null;
Intent photo_intent = new Intent(
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://"
+ photo_dir + now + ".jpg"));
sendBroadcast(photo_intent);
} catch (Exception e) {
if (fos != null) {
try {
fos.close();
} catch (Exception e1) {
}
fos = null;
}
}
camera.startPreview();
Intent intent = new Intent();
}
}
카메라에 화면을 터치를 했을 때 터치한곳에 포커스를 맞게 하고 싶은 데...힘드내요...ㄷㄷ