Android开发Camera server died问题

       最近开发一个具有二维码扫描功能的应用,开发过程中相当愉快,本以为完成的很漂亮,师父会给我一个大大的赞,结果bug铺天盖地而来,其中最要命的就是Camera的问题,我使用的是系统提供的Camera,但是设备上有一个拍照的快捷按键,师父在相机预览界面点击了这个拍照的快捷物理键,然后悲剧就发生了,在预览界面按下拍照键时程序崩掉了,更为郁闷的是每次设备重启第一次按拍照键才会挂,后面点就没有反应了(可以是因为我程序里面写了try...catch),但即使是这样的崩溃,依然让我焦头烂额,不知如何应对。

       和大部分人解决问题的第一步一样,我在程序中打了好多个Log,对程序调试观察,结果我自己打的Log没有一条与异常退出有关的,大写的懵逼,终于磨叽了好久,在Log中看到了这样的输出:

Camera server died!
ICamera died!

       嗯,感觉与预览界面崩溃有很大的关系,不过在网上搜索终不得解,只好硬着头皮看起了Sdk,发现Android提供了一个接口,Camera.ErrorCallback,有一个方法onError(int error, Camera camera),其中有两个error codeCAMERA_ERROR_UNKNOWNCAMERA_ERROR_SERVER_DIED,没错,这里的CAMERA_ERROR_SERVER_DIED就是Log中的Camera server died!,所以我就想重写这个onError方法,针对对应的error进行处理。

Camera.ErrorCallback callback = new Camera.ErrorCallback() {
        @Override
        public void onError(int error, Camera camera) {
            switch (error) {
                case Camera.CAMERA_ERROR_SERVER_DIED:
                    Log.d("cwxin", "to do something");
                    break;
                case Camera.CAMERA_ERROR_UNKNOWN:
                    Log.d("cwxin", "to do something");
                    break;
            }
        }
    };

然后使用setErrorCallback(ErrorCallback)方法调用就可以了。和想象中的一样,问题迎刃而解,记下来供大家参考,如有不正确的地方还请指出。

— edit by cwxin

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值