安卓的相机调用

安卓启动相机有2种方法 一种是通过Intent直接调用系统相机显示启动和隐身启动

<span style="font-family: Arial, Helvetica, sans-serif;">Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);</span>
startActivity(intent);
</pre><p></p><pre>

获取拍照的图片即需要重写startActivityForResult() 并重写onActivityResult() 方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
if (RESULT_OK == resultCode){
Bundle bundle=data.getExtral();
Bitmap bitmap=(Bitmap)bundle.get("data");
}
不过这样获取到的是省略图,因为不允许Intent之间传输大数据,若要将图片保存到另外的路径 即需要定义个一个路径Path

将Path传入Uri  

Uri uri=Uri.fromFile(new File(Path));
intent.putExtral(MediaStore.EXTRA_UOTPUT,uri);
在传入startactivity 这样就可以保存到固定路径,然后在 onActivityResult() 中 

FileInputStream stream=new FileInputStream(Path)//路径
Bitmap bitmap=BitmapFactory.decodeStream(stream);

这样得到的就是清晰的图像


当然也可以自定义一个相机,不要调用系统相机

首先肯定要新建一个Activity,他的布局文件 关于摄像头的图像 ,主要用Surfaceview加载

首先在oncreat()方法中,应该创建一个Camera对象

Camera camera=Camera.Open();//该API在5.0后变了 不过仍可以使用

由于资源占用比较大,所以我们最好在activity销毁的方法中加入

camera.setPreviewcallback(null);
camera.stopPreview();
camera.release();


在通过camera.getHolder实现SurfaceHolder holder=camera.getHolder();对象,通过holder.addcallback实现里面方法的回调。

在回调方法create()和change()中,加入如下方法

camera.setPreviewDisplay(holder);//将holder绑定要相机捕获到的图像上
camera.setdisplayorientation(90);//由于默认是横屏,所以要设置后才为竖屏
camera.startpreview();


即可以预览到硬件相机捕获到的图像.

也可以再布局文件中多添加一个按钮,设置点击事件,然后设置拍照参数

Camera.parameters parameters=camera.getParameters();
parameters.setPictureFormat(ImageFormat.JPEG);//设置图像格式
parameters.setPreViewsize(800,400);//设置图像大小
parameters.setFocusMode()//设置自动对焦
parameters.autoFocus(new AutoFocusCallBack(){
onAutoFrous(){//在此方法里判断是否聚焦成功
camera.takePicture(null,null,new pictureCallback(){//进行拍照操作
onPictureTaken(data){//注意里面的data是图片数据,并不是缩略图数据
//在此进行接下来想要的操作,提示:可将图片保存到一个路径中,在将路径信息带到想要跳转的activity中,以避免传输过程数据过大
}
});
}
});


最后说一个水印功能吧,只要在surfaceview上面加多个textview时 获取到的照片就有textview的水印了。。。。。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值