Android 相机1 之Camera1的最简单的使用(预览、拍照、变焦、特效)

Android两个相机的API的个人总结

API1的方法较少、命名规则等都比较简单,如果是针对目前市面上的手机,API1是足够而且使用起来非常方便,尤其是它的setParameter方法,相较于API2的要自己去填key和value来说,它不仅很容易能找到相机支持的(使用parameter.getSupportedXXX可以直接获得相应参数)尺寸特效白平衡等(key),value值也是比较一目了然的;而API2不仅类多,方法多,名字之间很相似,状态之间调来调去,需要花费较多时间去了解才能正确使用。
但API2也是有好处的,我以为最大的好处就是内部封装了一个HandlerThread,从而在开启相机、预览、尤其是处理图片的时候速度会快很多。话不多说,这篇文主要是API1.

API1的简单用法

Camera1这个貌似过时,实际大家都在用,用法超级简单,在Activity onCreate的时候初始化SurfaceView或者TextureView,如果使用SurfaceView要得到它的holder,并设置holder的Type,然后在onCreate或者onResume方法中打开并初始化相机参数,如对焦模式等,监听SurfaceView Holder或Textureview的状态变化回调方法,都是在surfaceCreated或者onSurfaceTextureAvaliable方法中设置相机的previewSurface或者previewTexture,再调用相机的startPreview方法即可实现实时预览。这里首先记住要开启相机的权限,另外,如果是急性子要多次运行看结果的,记得现在就在onPauce或者onDestory方法中释放相机资源,免得下次打开不了相机。
//设置全屏显示
private void setFullScreen() {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
int flag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
getWindow().setFlags(flag,flag);
}
//开启相机
private void initCamera() {
cameraId = Camera.CameraInfo.CAMERA_FACING_BACK;
if(camera==null){
camera = Camera.open(cameraId);
}
}
或者最简单的一个不传参,默认开启后摄像头
private void initCamera() {
if(camera==null){
camera = Camera.open();
}
}
// 设置初始相机参数
@Override
protected void onResume() {
super.onResume();
setCameraDisplayOrientation();
param = camera.getParameters();
param.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
param.setPictureFormat(

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值