我的第一篇博客:关于android的Camera在takePicture()时不回调onPictureTaken()方法

在看书学习中,简单用到camera API去拍摄照片,但是在小米Note上运行时,卡在了拍摄界面,不动了,没有报错信息,可以知道是回调了Camera.ShutterCallback中的onShutter()方法,因为放了个进度条在显示,也有卡嚓声,后来各种谷歌和百度,看了很多页,改各个步骤也不能解决,后来通过搜索“不回调onPictureTaken()”关键字,看到有人遇到同样的问题,见地址:http://www.2cto.com/kf/201504/387110.html

经过修改,果然是parameters.setPreviewSize()设置了最大的Size的原因,并不是所有手机都是如此,红米就不会,问题如上面网址中所说,需要将setPreviewSize()设置成屏幕近似分辨率,而并不是设置成最大。

Camera.Parameters parameters=mCamera.getParameters();
//设置近似屏幕的分辨率
Size s=getCurrentScreenSize(parameters.getSupportedPreviewSizes());
parameters.setPreviewSize(s.width, s.height);
Size s2=getBestPictureSize(parameters.getSupportedPictureSizes(),s);
parameters.setPictureSize(s2.width,s2.height);
mCamera.setParameters(parameters);
具体的getCurrentScreenSize()和getBestPictureSize()是参考他的代码的:http://www.2cto.com/kf/201504/387110.html

其中里面,我用到的设备屏幕分辨率的方法如下:

DisplayMetrics displayMetrics = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
displayMetrics.widthPixels , displayMetrics.heightPixels
折腾了一整天+半天,终于解决了。

自从大学接触计算机以来,09年入学,13年毕业,干了两年测试,15年辞职在家学android,这是第一篇博客,特此小小mark一下!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值