二维码和条形码从发明到发展已经过去了几十年,因其能快捷方便读取信息的特点,在数字经济时代被广泛应用。扫描二维码可以识别健康状况,识别身份信息、访问网站链接、完成金融支付等等,已经成为生活中不可或缺的实用技术,所以很多App都搭载了“扫一扫”功能。
然而,在日常扫码过程中,我们也经常会遇到扫码环境暗、二维码污损、模糊等情况,导致识别二维码困难。HMS Core 统一扫码服务(Scan Kit)为常见复杂扫码场景(如反光、暗光、污损、模糊、柱面)做了针对性识别优化,还能实现远距离码或小型码的检测和自动放大,提升扫码成功率与用户体验。
普通的二维码扫描器只读距离不超过30厘米,然而我们生活中经常出现远距离扫码的情况,例如停车场远距离扫码缴费、公众场合扫码签到等,普通的扫码服务在这时候就会出现扫码困难的情况。统一扫码服务,由于在扫码处理流程中多了一个预检测的功能,即使是肉眼无法分辨,也可以很好的自动放大超远距离的二维码。

二维码污损也是户在日常扫码中经常遇到的情况,比如扫码骑行时遇到二维码破损,扫描纸质二维码因为纸张破损二维码不完整的情况也常有出现,统一扫码服务基于多项计算机视觉技术,可以大幅提升复杂场景识别率。
当然,HMS Core 统一扫码服务除了支持污损二维码扫描,遇到反光,暗光等场景,甚至将二维码贴在商品上时出现曲面或棱角的情况,也能成功扫码;哪怕你边走动边扫码,此时的二维码模糊不清也不影响扫码的准确率。

在仓库清点、收发货物时,常常遇到摆满了货物,上面都贴上条形码的情况,如果工人一个个扫码清点,效率非常低。多码识别可以帮助仓库清点,快递收发等场景实现一次识别多个码,提升业务处理效率。多码识别模式下,Scan Kit一次最多可以同时识别不限种类的5个码。

有时由于环境的限制,我们不一定能扫到正面角度的二维码, 统一扫码服务基于自动检测及旋转纠正能力,识别区域更宽(侧面和侧面+45°),支持用户从任意角度扫码,可自动校正快速识别二维码,即使位置不方便也能正确识别,从而提升应用扫码灵活度和识别率。

统一扫码服务提供多元的接入方式,最少5行代码即可拥有强大的扫码能力,开发者可以直接使用Scan Kit提供的默认扫码页面,也可以基于Scan Kit提供的示例代码,快速自定义扫码功能。以下我会以Default View Mode为例,展示具体的集成步骤。
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
// 配置HMS Core SDK的Maven仓地址。
maven { url 'https://developer.huawei.com/repo/' }
}
}
dependencyResolutionManagement {
...
repositories {
google()
mavenCentral()
// 配置HMS Core SDK的Maven仓地址。
maven { url 'https://developer.huawei.com/repo/' }
}
}
2.在应用级的build.gradle上添加编译依赖
dependencies{
implementation 'com.huawei.hms:scanplus:2.4.0.302'
}
-ignorewarnings
-keepattributes *Annotation*
-keepattributes Exceptions
-keepattributes InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable
-keep class com.hianalytics.android.**{*;}
-keep class com.huawei.**{*;}
<!--相机权限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--读文件权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
// CAMERA_REQ_CODE为用户自定义,用于接收权限校验结果的请求码。
this.requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, CAMERA_REQ_CODE);
// 实现“onRequestPermissionsResult”函数接收校验权限结果。
final int PERMISSIONS_LENGTH = 2;
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
// 判断“requestCode”是否为申请权限时设置请求码CAMERA_REQ_CODE,然后校验权限开启状态。
if (requestCode == CAMERA_REQ_CODE && grantResults.length == PERMISSIONS_LENGTH && grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
// 调用扫码接口,构建扫码能力。
...
}
}
// “QRCODE_SCAN_TYPE”和“DATAMATRIX_SCAN_TYPE”表示只扫描QR和Data Matrix的码
HmsScanAnalyzerOptions options = new HmsScanAnalyzerOptions.Creator().setHmsScanTypes(HmsScan.QRCODE_SCAN_TYPE, HmsScan.DATAMATRIX_SCAN_TYPE).create();
ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, options);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != RESULT_OK || data == null) {
return;
}
if (requestCode == REQUEST_CODE_SCAN_ONE) {
// 导入图片扫描返回结果
HmsScan obj = data.getParcelableExtra(ScanUtil.RESULT);
if (obj != null) {
// 展示解码结果
showResult(obj);
}
}
}
了解更多详情>>
访问华为开发者联盟官网
获取开发指导文档
华为移动服务开源仓库地址:GitHub、Gitee
关注我们,第一时间了解 HMS Core 最新技术资讯~
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
在Rails4.0.2中,我使用s3_direct_upload和aws-sdkgems直接为s3存储桶上传文件。在开发环境中它工作正常,但在生产环境中它会抛出如下错误,ActionView::Template::Error(noimplicitconversionofnilintoString)在View中,create_cv_url,:id=>"s3_uploader",:key=>"cv_uploads/{unique_id}/${filename}",:key_starts_with=>"cv_uploads/",:callback_param=>"cv[direct_uplo
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
您如何在Rails中的实时服务器上进行有效调试,无论是在测试版/生产服务器上?我试过直接在服务器上修改文件,然后重启应用,但是修改好像没有生效,或者需要很长时间(缓存?)我也试过在本地做“脚本/服务器生产”,但是那很慢另一种选择是编码和部署,但效率很低。有人对他们如何有效地做到这一点有任何见解吗? 最佳答案 我会回答你的问题,即使我不同意这种热修补服务器代码的方式:)首先,你真的确定你已经重启了服务器吗?您可以通过跟踪日志文件来检查它。您更改的代码显示的View可能会被缓存。缓存页面位于tmp/cache文件夹下。您可以尝试手动删除
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame
我有一个使用PDFKit呈现网页的pdf版本的Rails应用程序。我使用Thin作为开发服务器。问题是当我处于开发模式时。当我使用“bundleexecrailss”启动我的服务器并尝试呈现任何PDF时,整个过程会陷入僵局,因为当您呈现PDF时,会向服务器请求一些额外的资源,如图像和css,看起来只有一个线程.如何配置Rails开发服务器以运行多个工作线程?非常感谢。 最佳答案 我找到的最简单的解决方案是unicorn.geminstallunicorn创建一个unicorn.conf:worker_processes3然后使用它: