首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android开发笔记(一百八十三)利用HMS轻松扫描二维码

开源的Android系统实际上只提供基本的系统服务,不提供常见的扩展服务诸如地图、邮箱、搜索、推送、机器学习、应用内支付等,这些扩展服务被谷歌公司打包成GMS套件(全称Google Mobile Service...在海外市场,许多商用App都依赖于GMS提供的服务,手机缺少GMS会使得这些App没法使用,而手机厂商预装GMS套件需要获得谷歌公司授权。...扫描二维码是HMS的一项基础服务,虽然谷歌公司也提供了zxing扫码框架,但是zxing框架的集成步骤不够简洁,而且它的识别速度偏慢,识别准确率也不高,远不如HMS的扫码服务来得好用。...-- 相机 --> android:name="android.permission.CAMERA" /> 然后在Java代码中增加用于扫码的远程视图,并指定扫码结果的回调事件...返回之后继续扫描二维码图片,App识别成功跳到结果页面如下图所示。 由此验证了HMS扫码服务的准确性和高效率。你还等什么呢?

1.2K20

如何让董宇辉不下班?

例如,国外以假乱真的“阿汤哥”在TikTok上火了好一阵,国内的柳夜熙、李星澜等虚拟形象也在国内社交媒体平台上大受欢迎,视频中几乎看不见“AI合成”的影子,评论中惊艳的声音也居多。...现在就已经有不少厂商开始尝试一种新方法—— 以华为为例,就针对移动端开发者,基于华为移动核心服务(HMS Core)打造了一套专门的机器学习服务(ML Kit)工具包。...例如,刚刚我们看到的AI字幕(在线文本翻译)和同声传译,就是基于华为这套工具包中的语音语言AI能力,轻松做出来的效果。...每一步的开发细节,在HMS Core官网都有详尽的开发指南可供查询,十分新手友好。...另外,HMS Core的机器学习服务也不仅适用于华为手机,Android设备和iOS设备也能用,具体版本要求如下。 怎么样?

45910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android的UI设计与后台线程交互

    本文将讨论Android应用程序的线程模型以及如何使用线程来处理耗时较长的操作,而不是在主线程中执行,保证用户界面(UI)的流畅运行。本文还将阐述一些用户界面(UI)中与线程交互的API。...然面不幸的是,它违反了用户界面单线程模型:Android的用户界面工具包不是线程安全的,只能在UI线程中操作它,在上面的代码中,你在一个工作线程中调用mImageView.setImageBitmap(...以下是AsyncTask的简要使用方法: ◆您可以指定三个参数类型,泛型参数,进度值(执行过程中返回的值)和最终值(执行完返回的值)。...返回的值()发送到onPostExecute() ◆您可以在执行doInBackground()时调用publishProgress()然后在UI组程中执行onProgressUpdate()。...◆您可以从任何线程随时取消任务 不管你是否使用AsyncTask,时刻牢记单一线程模型的两条规则: 1、不要锁住用户界面。 2、确保只在UI线程中访问Android用户界面工具包中的组件。

    1K50

    【Android应用开发】 Android 崩溃日志 本地存储 与 远程保存

    : 在该方法中进行设备信息收集, 以及将信息保存到文件中; (1) UncaughtExceptionHandler 类解析 UncaughtExceptionHandler 作用 : 该类处理以下情况..., 如果有未捕获的异常发生, 出现了程序崩溃闪退的情况, 此时会回调该类的 uncaughtException 方法; (2) 线程相关 线程相关 : 每个线程都对应有响应的默认的未捕获异常处理器;...和 要抛出的异常信息, 我们可以在程序中拿到这两个信息; public void uncaughtException(Thread thread, Throwable ex) (4) 手机设备信息 手机设备信息手机步骤...在 Logcat 中打印崩溃信息 : 之前的默认操作就是打印崩溃信息到 Logcat 中, 我们在这里继续执行完这个步骤, 否则Logcat 中没有数据的; //将 StringBuffer sb...自己开发服务器端 : 在上面的保存文件的基础上, 在开发一个服务器端, 使用网络编程接口将打印到文件的内容上传到服务器端; -- 2.

    2.2K40

    MySQL 到 TiDB:vivo 的 Hive Metastore 横向扩展之路

    ,会导致该类查询生成的执行计划中同样会使用 idx_PART_KEY_VAL 索引进行数据扫描,该执行计划如下:走 idx_PART_KEY_VAL 索引执行计划添加的 idx_PART_KEY_VAL...若执行计划不走 idx_PART_KEY_VAL 索引,TiDB 可通过 dbs、tbls 检索出所有关联 partition 数据,在根据 part_id 和过滤条件扫描 PARTITION_KEY_VALS...此类执行计划扫描的数据量和需要查询的表的分区总量有关,如果该表只有少数的分区,则查询能够迅速响应,但如果查询的表有上百万的分区,则该类执行计划对于该类查询不是最优解。...api 平均耗时增长的也越来越久,平均在 40-90s,而该 api 在 hive shell 中首次执行查询操作时会被调用注册所有的 udf,过长的耗时会影响用户对 hive 引擎的使用体验,例如执行简单的...文件读取的支持,SPARK 获取分区避免全表扫描改造等;此外由于 TiDB 的 latin 字符集支持中文字符的写入,该特性会导致用户误写入错误的中文分区,对于此类型数据无法通过现有 API 进行删除

    36760

    Threading(in thread main)

    本文讨论Android中的线程模型,以及应用如何通过产生worker threads来处理长时间操作以确保最佳的UI性能,而不是在主线程中处理这些任务。...本文还介绍了与Android UI工具包组件中的主线程进行交互以及产生worker threads的APIs。...然而,它违反了UI单线程模型:Android UI工具集并不是线程安全的,它而且必须在UI线程中执行。所以以上代码中,ImageView在一个工作线程中被执行,这可能导致非常奇怪的问题。...注,AsyncTask实例必段在UI线程中创建并且只被执行一次。你可以阅读AsyncTask文档来了解更详细的使用。...()方法中的任何时候调用publishProgress()来执行UI线程中的进度更新任务onProgressUpdate() 6).You can cancel the task at any time

    53430

    【HMS Core】集成地图服务不显示地图问题 (转载非原创)

    3、如果agconnect-services.json文件中未包含api_key信息, 那么需要在执行了初始化代码之后,紧接着执行设置Api_key的代码, 如果文件中包含了api_key信息, 那么就不需要再执行设置...//如果agconnect-services.json中的“api_key”字段值不为空,那么可以将此行代码屏蔽掉,不需要执行MapsInitializer.setApiKey(MapUtils.API_KEY...4、如果提示【您的设备未安装最新版本的HMS Core,FlywindMap无法正常运行。】1)地图服务自6.3.1.304版本开始 , 移除了下载引导HMS Core Apk的能力。...如果设备中未安装HMS Core Apk应用内,那么确实会有这样的提示2)可以检查一下设备中是否有HMS Core Apk。...如果没有可以安装一个HMS Core Apk3)或者可以使用低于6.3.1.304的版本。

    92640

    Android数据库安全解决方案,使用SQLCipher进行加解密

    在Android中,我们既可以使用原生的SQL语句来对数据进行操作,也可以使用Android API提供的CRUD方法来对数据库进行操作,两种方式各有特点,选择使用哪一种就全凭个人喜好了。...+v2.2.2.zip 接着解压这个工具包,会看到里面有assets和libs这两个目录,稍后需要将这两个目录中的内容添加到Android项目当中。...可以看到,我们在onCreate()方法中创建了一张Book表,Book表里有name和pages这两个列。...在查询数据按钮的点击事件里面,我们调用SQLiteDatabase的query()方法来查询Book表中的数据,查询到的结果会存放在Cursor对象中,注意这里使用的是net.sqlcipher包下的Cursor...这就足以说明,目前数据库中的数据是非常安全的,只有在应用程序里通过SQLCipher提供的API才可以访问到数据库里的数据,使用其它的方式都无法获取其数据。

    2.2K90

    老司机带路:15个Android撸代码常见的坑

    0x04 应用使用多进程应该注意的问题 Application 会被初始化多次,即 onCreate() 方法会执行多次。...供 H5 访问,但是打包时应该把自定义的 JSBridge 类加入到混淆规则里面,否则混淆后 H5 将有可能无法访问本地方法。...0x06 App 端使用 WebView.loadUrl() 执行 JS 方法后无响应 WebView 通过 loadUrl() 执行 JS 方法后却无响应,但是前端确定已提供。...这时候应该考虑使用主线程(例如 WebView.post() )来执行 loadUrl(); 通过 H5 调用本地方法时,如果 H5 是异步调用,那么也应该考虑把本地方法的实现放在主线程中。...0x10 GridView 中的 Item 无法居中问题 查看一下 GridView 的布局文件是否设置了 android:scrollbarStyle="outsideInset" 属性,如果有,去掉这个属性

    44410

    android学习笔记----样式、主题、国际化(本地化)、对话框、帧动画

    : 设置样式的方法有两种: 如果是对单个视图应用样式,请为布局 XML 中的 View 元素添加 style 属性。...或者,如果是对整个 Activity 或应用来应用样式,请为 Android 清单中的  或  元素添加 android:theme 属性。...关于主题更多的讲解建议查看官方文档:https://developer.android.google.cn/guide/topics/ui/themes 在styles.xml中添加如下: <style...如图: 标记不应翻译的信息部分 有时候字符串中包含不应被翻译为其他语言的文本。常见的示例包括代码、某个值的占位符、特殊符号或名称。...--oneshot的true代表是执行一次,false代表动画反复执行--> <item android:drawable="@drawable/girl_1"

    55110

    Android中的进程和线程

    但是,您可以安排应用中的其他组件在单独的进程中运行,并为任何进程创建额外的线程。 本文档介绍进程和线程在 Android 应用中的工作方式。...此外,Android UI 工具包并非线程安全工具包。因此,您不得通过工作线程操纵 UI,而只能通过 UI 线程操纵用户界面。...如果执行的操作不能很快完成,则应确保它们在单独的线程(“后台”或“工作”线程)中运行。...如果对 IBinder 中所实现方法的调用源自运行 IBinder 的同一进程,则该方法在调用方的线程中执行。...但是,如果调用源自其他进程,则该方法将在从线程池选择的某个线程中执行(而不是在进程的 UI 线程中执行),线程池由系统在与 IBinder 相同的进程中维护。

    1.2K30

    八、从华为HMS Core集成过程看密码学知识

    hms通过SDK提供的一些能力,即便是离线能力,安装apk之后第一次使用需要联网。因为需要后台校验一些配置信息,还包括指纹、包名、App ID等。如果校验不通过是无法调用这些API的。   ...如下图,android studio可以在密钥库的多个私钥里选择一个私钥进行签名,比如这里可选择别名为hmsdemo或test2的私钥去签名 key store password相当于你家大门钥匙...在bin目录下运行,输入keytool查看签名文件指令,并运行 keytool -list -v -keystore D:\Android\WorkSpcae\HmsDemo\app\HmsDemo.jks...(window需要这么操作,mac直接运行指令即可) 4.在AppGallery Connect(华为开发者服务的后台)添加指纹   然后把SHA256填写到华为开发者服务的后台配置页面,方便hms...) 在build.gradle文件的android闭包中添加签名配置信息。

    64610

    Impala元数据性能改善(3.3版本)

    值得注意的是,如果开启了该功能,那么在coordinator的web页面,无法看到库/表的详细元数据信息,只有简单的库名和表名: 请注意,启用按需获取元数据功能后,不支持全局的INVALIDATE...元数据缓存自动失效 在3.1版本中,Impala推出了元数据缓存自动失效功能,该功能可以限制元数据的大小,catalogd会定期扫描所有的表,并将最近未使用的表标记为失效状态。...; 元数据缓存自动失效功能,通过在表中增加了一个最后访问时间lastUsedTime_,并且额外启动一个线程来不断扫描是否有表满足了以上的两个策略对应的条件,如果满足的话,则主动调用invalidateTable...方法来使表的元数据缓存失效。...目前,最新的Impala源码提供的mini cluster环境已经可以对该功能进行验证,在相应的测试HMS和HiveServer2服务对应的hive-site.xml中,我们可以看到上面提到的配置项(配置文件位于

    97240

    解决Caused by: java.lang.IllegalStateException:

    这种错误可能会导致无法完成对Web应用程序的批注扫描,同时会提到一些潜在的原因,如​​-Xss​​设置过低和非法的循环继承依赖项。...问题描述javaCopy codeCaused by: java.lang.IllegalStateException: 由于StackOverflower错误,无法完成对web应用程序[/lib]的批注的扫描...错误无法完成对web应用程序[/lib]的批注的扫描​​异常。...-Xss​​​是Java虚拟机的一个参数,用于设置线程栈的大小。线程栈是用于存储线程执行时的局部变量、方法调用和返回信息的内存区域。每个线程都有自己的线程栈,大小可以根据应用程序的需要进行调整。...如果线程栈的大小设置过小,那么在递归调用或深层次方法调用的情况下,可能会导致线程栈溢出的异常。 需要注意的是,在调整线程栈大小时,应该根据实际应用程序的需求进行调试和优化。

    3K50

    android学习笔记----SQLite数据库

    onCreate()和onUpdate(),我们必须在自己的帮助类里面重写这2个方法,然后分别在这两个方法中实现创建、升级数据库逻辑。...sqlite中是不支持删除列操作的,所以网上 alter table [table_name] drop column [col_name] 这个语句在sqlite中是无效的(这不是MySQL),而替代的方法可以如下...那么如何让onUpdate()方法能够执行呢?我们这里的MyDBOpenHelper构造器第四个参数是当前数据库的版本号,之前传入的是1,现在只要传入一个比1大的数字即可运行onUpdate方法。...另一张contactinfo是我们在MyDBOpenHelper中创建的。 接着可以用.schema命令查看它们的建表语句。...selection:一个过滤器,声明要返回的行,格式化为SQLWHERE子句(不包括WHERE本身)。传递NULL将返回给定表的所有行。     selectionArgs:您可以在选择中包括?

    1K20

    技术分析 | HarmonyOS到底是不是Android套皮?

    .dex执行文件,而用js定义的界面、视图、逻辑竟然归入assets中,这里面就有点猫腻了 4、编译的可执行文件中竟然包含一个.apk文件,这个不速之客可在App逻辑视图中完全没体现,值得怀疑 于是接下来...Dart虚拟机无法运行中资源有限的嵌入式设备中,无法做到,那小程序对比如何呢?...RPC协议性能指标好外: 在微信小程序中做物联网应用,可以支持更多的平台(HarmonyOS vs Android+IOS) 在微信小程序中做物联网应用,开发成本更低(小程序 vs App) 在微信小程序中做物联网应用...,其他部分依旧是在Android上的HMS SDK 这对很多开发者是不可理喻的 而将在八月份发布的Android 12,在三月份已经发布开发者预览版 ?...,比如MacOS、Windows、iOS 但是由于Android碎片化、海量用户、谷歌服务在国内被禁用、国内Android厂商强势崛起等等原因,分裂为国内、外两个生态 在海外,GMS具有垄断地位,HMS

    7.5K42

    Android蓝牙详析 | 蓝牙的适配、权限、开启、搜索发现等处理

    本系列笔记概述 蓝牙传输优势:功耗低,传输距离还可以; 蓝牙聊天室案例 Android中蓝牙设备的使用 蓝牙权限(本文的讲解内容之一) 蓝牙功能开启(本文的讲解内容之一) 搜索蓝牙设备(本文的讲解内容之一...) 与外设搭建RFCOMM通道(射频通道) 蓝牙设备双向数据传输 蓝牙聊天室案例框架 蓝牙权限 执行蓝牙通信需要权限BLUETOOTH, 例如:请求连接、接收连接和传输数据等; 如果需要启动设备...表示设备自身的蓝牙适配器; 通过静态方法BlueAdapter.getDefaultAdapter()获得BlueAdapter; 整个系统只有一个蓝牙适配器,application可使用此BlueAdapter...android:id="@+id/bt_scan" android:text="扫描附近蓝牙设备" android:layout_width="match_parent...super.onDestroy(); unregisterReceiver(mBluetoothReceiver); } 运行效果如图,没有发现新设备,在扫描完毕后打印出对应的

    6.6K30
    领券