Android 摄像头回调在8.1版上不起作用

Android 摄像头回调在8.1版上不起作用,android,sdk,android-camera,Android,Sdk,Android Camera,我需要帮助来弄清楚为什么我的代码在8.1版的Android设备上不能工作,同样的代码在8.0版及以下版本上也能正常工作 minSdkVersion=19 targetSdkVersion=26 compileSdkVersion=26 在某些情况下,我正在通过相机拍照,当多次密码尝试失败时,应用程序正在前台运行。该应用程序调用此方法,该方法预处理相机设备并提供JPEG格式的PictureCallback 在日志中我可以看到 拍一张照片 但是,onPictureTaken不会被调用 代码如下:

我需要帮助来弄清楚为什么我的代码在8.1版的Android设备上不能工作,同样的代码在8.0版及以下版本上也能正常工作

minSdkVersion=19
targetSdkVersion=26
compileSdkVersion=26

在某些情况下,我正在通过相机拍照,当多次密码尝试失败时,应用程序正在前台运行。该应用程序调用此方法,该方法预处理相机设备并提供JPEG格式的PictureCallback

在日志中我可以看到

拍一张照片

但是,
onPictureTaken
不会被调用

代码如下:

        sLogger.info(TAG + "takePicture called.");
    try {
        mCamera.takePicture(null, null, null, new PictureCallback() {
            @Override
            public void onPictureTaken(byte[] data, Camera camera) {
                if (data == null) {
                    sLogger.error(TAG + "Received null data in onPictureTaken from Camera PictureCallBack");
                    return;
                }
                pictureTaken(data, orientation);
            }
        });
    } catch (Exception e) {
        lookoutCamFailed();
        sLogger.error(TAG + "takePicture failed.", e);

    }
添加日志:

07-20 01:22:20.206 1264 2946 D活动管理器性能:AMP_release()动作开始

07-20 01:22:20.225 27040 29514 I MyApp:[CameraManager.initPreview:742]Cam:预览已开始

07-20 01:22:20.226 599 1485 I QCamera:GetCameranfo:392:E摄像机id(1),mNumOfCameras(2)

07-20 01:22:20.226 599 1485 I QCamera:getCamInfo:8789:camera 1资源成本为100

07-20 01:22:20.226 599 1485 I QCamera:GetCameraRainfo:409:camera id=1,facing info=FRONT

07-20 01:22:20.227 599 1485 E QCamera:检查摄像头条件:1061:摄像头id(1)、摄像头朝向(1)、摄像头类型(1)

07-20 01:22:20.227 599 1485 I QCamera:GetCameraRainfo:424:X摄像机id(1)

07-20 01:22:20.230 855 2354 D摄像机客户端:发送命令(pid 27040) 07-20 01:22:20.230 855 2354 D摄像机客户端:启用快门声音(0,0) 07-20 01:22:20.230 855 2354 D摄像机客户端:启用ShutterSound(pid 27040)

07-20 01:22:20.230 27040 29514 I MyApp:[CameraManager.DisableShutterSound如果可能:531]MyAppCam:调用enableShutterSound成功

07-20 01:22:20.231 27040 29514 I我的应用程序:[CameraManager.prepAndTakePicture:863]我的应用程序摄像头:已调用takePicture

07-20 01:22:20.231 855 2354 D摄像机客户端:拍摄照片(pid 27040):0x100

07-20 01:22:20.232 855 2354 D摄像机客户端:启用类型:消息(0x100,0xd0d)

07-20 01:22:20.232 855 2354 D SecCameraCoreManager:启用类型:消息(输入:0x100,输出:0xd0d)

07-20 01:22:20.232 855 2354 I shotcomon:enableMsgType:msg(输入:0x100,输出:0xd0d)

07-20 01:22:20.232 855 2354 D摄像机管理员:拍照 07-20 01:22:20.234 1264 1447 I EdmnativeHelper服务:isCameraEnabled 07-20 01:22:20.235 1264 1447 D限制策略:isCameraEnabled ret(true)用户ID(0)cxtInfo.mCallerUid(10034)cxtInfo.McContainerID(0)

07-20 01:22:20.235 855 2354 E SecCameraCore经理:检查温度(0)

07-20 01:22:20.235 855 2354 D SecCameraCoreManager:拍摄:停止策略检查线程

07-20 01:22:20.283 599 29526 I QCamera:PROCEVTREVIEWERAREADATATE:924:QCamera_SM_EVT_GET_PARAMS ReadyState

07-20 01:22:20.285 855 2354 D单张:拍摄图片:支持图片格式=jpeg,nv21

07-20 01:22:20.285 855 2354 I拍摄单张:拍摄图片:将图片格式备份为jpeg

07-20 01:22:20.285 855 2354 I拍摄单张:拍摄照片:正常,jpeg 07-20 01:22:20.285 599 1485 I QCamera:take_picture:1391:[KPI Perf]take_picture:E PROFILE_take_picture摄像机id 1

07-20 01:22:20.286 599 1485 I QCamera:take_picture:1409:[KPI Perf]take_picture:X

07-20 01:22:20.286 599 29604 I QCamera:拍照线程:1073:[KPI性能]拍照线程:E

07-20 01:22:20.286 599 29604 I QCamera:拍摄照片内部:1105:[KPI性能]拍摄照片内部:E摄像机id 1

07-20 01:22:20.286 599 29604 I QCamera:拍摄照片内部:1229:拍摄照片内部闪光模式=0,LLS模式=0,自动LLS模式=0,NUMOFSANTS=1

07-20 01:22:20.286 599 29526 E QCamera:PROCEVTPREVIEWERAREADATE:1099:Error!!无法处理处于状态(1)的evt(25)

07-20 01:22:20.286 599 29604 I QCamera:拍摄照片内部:1361:[KPI性能]拍摄照片内部:X

07-20 01:22:20.287 599 29604 I QCamera:take_picture_线程:1077:[KPI性能]take_picture_线程:X

07-20 01:22:20.287 27040 29514 I MyApp:[CameraManager$4.运行:779]MyAppCam:SurfacedStroyed已调用

07-20 01:22:20.321 2750 2750 D io_统计数据:!@179,0 r 553172 42202994 w 299093 5907016 d 11954 2375296 f 81990 82006 iot 648070 657873 th 51200 0 0 pt 0 inp 0 0 67436.843

07-20 01:22:20.330 1264 2292 W受精卵:与所有者绑定器的长时间监视器争用:1264_1E(12984)位于android.content.pm.parceledlistsicle com.android.server.pm.PackageManagerService.getInstalledPackages(int,int)(PackageManagerService.java:11443)android.content.pm.ApplicationInfo com.android.server.pm.PackageManagerService.getApplicationInfo内部(java.lang.String,int,int,int)中的waiters=0,持续540ms

07-20 01:22:20.331 1264 2259 W受精卵:与所有者绑定器的长监视器争用:1264_1E(12984)位于android.content.pm.parceledlistsicle com.android.server.pm.PackageManagerService.getInstalledPackages(int,int)(PackageManagerService.java:11443)java.lang.String com.android.server.pm.PackageManagerService.getInstantappackageName(int)中的waiters=1,持续481ms

07-20 01:22:20.335 1264 2293 W合子:与所有者绑定的长监视器争用:1264_D(2292)在int com


从文件中删除;看起来在拍照之前必须先开始预览。是否有相机绑定到的曲面视图

此方法仅在预览处于活动状态(在startPreview()之后)时有效。拍摄图像后,预览将停止

以上内容来自


还值得一提的是,Camera API已被弃用;如果您希望在将来维护此应用程序,您将希望使用Camera2

日志中也没有异常,只是代码永远不会执行