高通平台关于setting菜单wifiQrcode识别失败问题

 问题描述:setting菜单wifiQrcode识别不成功

 观察扫描区域对焦清晰,图像很清楚,并不存在图像模糊无法识别的问题。

然后尝试用google扫码发现可以成功识别,排除camera成像及对焦问题。

后来和google扫码进行对比,发现两者设置的camera拍照和预览尺寸不同,google应用设置为800*600,而WiFiQrcode设置了一个较大的尺寸,为2104*1536,初步怀疑为算法库对图像的处理问题。

尝试修改如下:

修改如下:
+++ b/LINUX/android/frameworks/base/packages/SettingsLib/src/com/android/settingslib/qrcode/QrCamera.java                         
@@ -399,6 +399,9 @@ public class QrCamera extends Handler {                                     
/**
 * Get best preview size from the list of camera supported preview sizes. Compares the
 * preview size and aspect ratio to choose the best one.
 */
    private Size getBestPreviewSize(Camera.Parameters parameters) {
        final double minRatioDiffPercent = 0.1;
        final Size windowSize = mScannerCallback.getViewSize();
        final double winRatio = getRatio(windowSize.getWidth(), windowSize.getHeight());
        double bestChoiceRatio = 0;
        Size bestChoice = new Size(0, 0);
        for (Camera.Size size : parameters.getSupportedPreviewSizes()) {
            double ratio = getRatio(size.width, size.height);
            if (size.height * size.width > bestChoice.getWidth() * bestChoice.getHeight()
                    && (Math.abs(bestChoiceRatio - winRatio) / winRatio > minRatioDiffPercent
                    || Math.abs(ratio - winRatio) / winRatio <= minRatioDiffPercent)) {
                bestChoice = new Size(size.width, size.height);
                bestChoiceRatio = getRatio(size.width, size.height);
            }
        }
++        bestChoice = new Size(800, 600);
++        bestChoiceRatio = getRatio(800, 600);
        return bestChoice;
    }
                                                           
@@ -443,6 +446,8 @@ public class QrCamera extends Handler {
    private Size getBestPictureSize(Camera.Parameters parameters) {
    final Camera.Size previewSize = parameters.getPreviewSize();
    final double previewRatio = getRatio(previewSize.width, previewSize.height);
    List<Size> bestChoices = new ArrayList<>();
    final List<Size> similarChoices = new ArrayList<>();
    // Filter by ratio
    for (Camera.Size size : parameters.getSupportedPictureSizes()) {
        double ratio = getRatio(size.width, size.height);
        if (ratio == previewRatio) {
            bestChoices.add(new Size(size.width, size.height));
        } else if (Math.abs(ratio - previewRatio) < MAX_RATIO_DIFF) {
            similarChoices.add(new Size(size.width, size.height));
        }
    }
                 bestChoice = size;                                                                                               
             }                                                                                                                    
         }                                                                                                                        
+               bestChoice = new Size(800, 600);                 
         return bestChoice;                                                                                                       
     }  

通过尝试改小图片尺寸,果然问题立马解决。原因是此平台算法库所能处理的图像不能太大。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值