class surface extends surfaceview implements surfaceholder.callback {
surfaceholder sfholder;
camera camera;
bitmap bitmap;
public surface(context context) {
super(context);
// todo auto-generated constructor stub
sfholder = getholder();
sfholder.addcallback(this);
sfholder.settype(surfaceholder.surface_type_push_buffers);
}
public void surfacechanged(surfaceholder holder, int format, int width,
int height) {
// todo auto-generated method stub
camera.parameters parameters = camera.getparameters();
parameters.setpictureformat(pixelformat.jpeg);
parameters.setpreviewsize(320, 480);
parameters.setpicturesize(320, 480);
camera.setparameters(parameters);
camera.startpreview();
}
public void surfacecreated(surfaceholder holder) {
// todo auto-generated method stub
try {
camera = camera.open();
camera.setpreviewdisplay(sfholder);
} catch (exception e) {
camera.release();
camera = null;
}
}
public void surfacedestroyed(surfaceholder holder) {
// todo auto-generated method stub
camera.stoppreview();
camera = null;
}
//拍照
public void takepicture()
{
if (camera != null)
{
camera.takepicture(null, null, jpegcallback);
}
}
//拍照并且保存的回调函数
private picturecallback jpegcallback = new picturecallback() {
public void onpicturetaken(byte[] data, camera camera) {
// todo auto-generated method stub
try
{
bitmap = bitmapfactory.decodebytearray(data, 0, data.length);
file file = new file("/sdcard/camera1.jpg");
bufferedoutputstream bos = new bufferedoutputstream(new fileoutputstream(file));
bitmap.compress(bitmap.compressformat.jpeg, 80, bos);
bos.flush();
bos.close();
canvas canvas= sfholder.lockcanvas();
canvas.drawbitmap(bitmap, 0,0, null);
sfholder.unlockcanvasandpost(canvas);
}
catch(exception e)
{
e.printstacktrace();
}
}
}
}
这个是一个拍照的类,使用的是surfaceview来实现的,如果想要在一部分上显示,并且使用按钮操作的话,可以修改一下这个类,而且这个是拍照之后停留在拍照页面的,如果需要在拍照后不停留在拍照页面的,可以自行修改和添加参数。
@override
public boolean onkeydown(int keycode, keyevent event) {
// todo auto-generated method stub
if (keycode == keyevent.keycode_dpad_center)
sf.takepicture();
return super.onkeydown(keycode, event);
}
网友评论