android 实现拍照有2种方式

方式1:

mSurfaceView01 = (SurfaceView)findViewById(R.id.SurfaceView01);
mSurfaceHolder01 = mSurfaceView01.getHolder();

mSurfaceHolder01.addCallback(ActivityCamera.this);
// mSurfaceHolder01.setFixedSize(320,240);
mSurfaceHolder01.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

private void initCamera()
{
if(!bIfPreview) //判断相机是否处于预览方式
{
mCamera01 = Camera.open();
}
Camera.Parameters parameters = mCamera01.getParameters();

parameters.setPictureFormat(PixelFormat.JPEG); //设置图片格式
parameters.setPreviewSize(320,240); //设置preview 屏幕大小
parameters.setPictureSize(320,240); //设置图片分辨率

mCamera01.setParameters(parameters);
try {
mCamera01.setPreviewDisplay(mSurfaceHolder01);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera01.startPreview();
bIfPreview = true;
}

private void takePicture()
{
if(mCamera01 != null && bIfPreview)
{
mCamera01.takePicture(shutterCallback, rawCallback, jpegCallback);
}
}

private ShutterCallback shutterCallback = new ShutterCallback()
{
public void onShutter()
{
//
}
};
private PictureCallback rawCallback = new PictureCallback()
{

@Override
public void onPictureTaken(byte[] arg0, Camera arg1) {
// TODO Auto-generated method stub

}

};
private PictureCallback jpegCallback = new PictureCallback()
{

@Override
public void onPictureTaken(byte[] _data, Camera _camera) {
// onPictureTaken 传入的第一个参数即为图片的byte
Bitmap bm = BitmapFactory.decodeByteArray(_data, 0, _data.length);

}
catch(Exception e)
{

}

}

};

方式2:

直接调用系统相机

Intent i = new Intent("android.media.action.IMAGE_CAPTURE");
startActivityForResult(i, Activity.DEFAULT_KEYS_DIALER)

protected void onActivityResult(int requestCode, int resultCode,Intent intent)
{
super.onActivityResult(requestCode, resultCode, intent);
if(intent != null)
{
Bundle extras = intent.getExtras();
Bitmap b = (Bitmap) extras.get("data");
// ImageView img = new ImageView(this);
// img.setImageBitmap(b);
// setContentView(img);
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值