Ionic Cordova 条码扫描器适用于 iOS 但不适用于 Android

Ionic Cordova Barcode Scanner works for iOS but not Android

我有一个带有 Cordova 条码扫描器的应用程序可以扫描 UPC 编号。它在 iOS 和 return 上工作正常,结果符合预期。但是,在 Android Marshmallow 6.1 上,它会扫描并显示消息 Product found on the camera screen 但不会 return 我的视图中预期的任何值。我已经扫描了我的整个应用程序,但没有找到文本产品。不确定此消息的来源是什么。请帮忙。

问题在 Android 5.1 上仍然存在。

您可以看到这条找到产品的消息。我搜索了我的应用程序代码以及我的 api 代码。 None 有效。请参阅下面的URL:

https://drive.google.com/open?id=0B81YQAjfP0R2VmU2V1I1QTg3NWc

另请参阅功能齐全的 iOS 版本:

https://drive.google.com/open?id=0B81YQAjfP0R2RkhEeVlOVUlLUmc

请看下面的调试代码。调用条形码扫描仪时,控制台中没有任何内容发布。

D/PowerManagerService( 946): turnOffButtonLight mButtonLightTimeout = 2000 D/PowerManagerService( 946): 打开按钮,2000 秒后,然后关闭按钮! D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 9.0 D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 14.0 D/PowerManagerService( 946): turnOffButtonLight mButtonLightTimeout = 2000 D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 3.0 D/PowerManagerService( 946): 打开按钮,2000 秒后,然后关闭按钮! D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 12.0 D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 9.0 D/PowerManagerService( 946): turnOffButtonLight mButtonLightTimeout = 2000 D/ConnectivityService( 946): updateNetworkScore for NetworkAgentInfo [WIFI () - 109] 到 51 D/ConnectivityService( 946): 重新匹配 NetworkAgentInfo [WIFI () - 109] D/ConnectivityService( 946): Network NetworkAgentInfo [WIFI () - 109] 已经满足请求 1。没有变化。 D/ConnectivityService( 946): NetworkAgentInfo 的通知类型可用 [WIFI () - 109] D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 11.0 D/PowerManagerService( 946): 打开按钮,2000 秒后,然后关闭按钮! I/ActivityManager( 946): 开始 u0 {act=com.google.zxing.client.android.SCAN cat=[android.intent.category.DEFAULT] pkg=com.test.testapp296079 cmp=com.test.testapp296079/com .google.zxing.client.android.CaptureActivity} 来自 uid 10110 显示 0 V/WindowManager( 946): addAppToken: AppWindowToken{2ac1f12b token=Token{2571457a ActivityRecord{1e190da5 u0 com.test.testapp296079/com.google.zxing.client.android.CaptureActivity t35}}}堆栈=1 任务=35 在 1 V/WindowManager( 946): 添加 window Window{2ec02634 u0 com.test.testapp296079/com.google.zxing.client.android.CaptureActivity} 在 9 of 13(在 Window{3d1aa37b u0 com.test.testapp296079/com.test.testapp296079.MainActivity}) V/WindowManager( 946): 添加 window Window{2c8f09d2 u0 SurfaceView} 在 14 个中的第 9 个(在 Window{2ec02634 u0 com.test.testapp296079/com 之前.google.zxing.client.android.CaptureActivity}) D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 9.0 D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 17.0 D/PowerManagerService( 946): turnOffButtonLight mButtonLightTimeout = 2000 D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 8.0 D/AutomaticBrightnessController( 946): ZTE_PM_LIGHT updateAmbientLux: mLightSensorListener 勒克斯为 110.0 D/AutomaticBrightnessController( 946): updateAutoBrightness: 值=0.16730924 *255 = 42.663857 D/AutomaticBrightnessController( 946): updateAutoBrightness: mScreenAutoBrightness=21, newScreenAutoBrightness=43 D/DisplayPowerController( 946): ZTE_PM updatePowerState mPowerRequest.dozeScreenState=0 D/DisplayPowerController(946):ZTE_PM_PROX updatePowerState 状态=2 D/DisplayPowerController( 946): ZTE_PM_PROX 禁用 ProxSensor 而没有使用 ProximitySensor D/AutomaticBrightnessController( 946): ZTE_PM mScreenAutoBrightnessAdjustment 无变化 D/AutomaticBrightnessController( 946): 双蛋 LightSensorchanged = true,autolcdenable = true,autobuttonEnabled = false D/AutomaticBrightnessController( 946): updateAutoBrightness: 值=0.16730924 *255 = 42.663857 D/DisplayPowerController( 946): ZTE_PM_LHX_animate mPowerState.getScreenBrightness() 21 mPowerState.getActualScreenBrightness() 21 D/DisplayPowerController( 946): ZTE_PM_animate 将 LCD 亮度设置为 43

好吧,这确实是 Android 第一次计时器问题。

结果是 OS 一个非常愚蠢的问题导致它失败。 iOS 将 false 处理为 0,将 android 处理为文本字符串 false。我只需要输入这个条件就可以了。

if($scope.cancelled === 0 || $scope.cancelled === false)