专栏首页VB小源码Basic4Android(B4A)-->安卓仿微信扫一扫的条码,二维码,PDF417码等扫码工具及制作过程

Basic4Android(B4A)-->安卓仿微信扫一扫的条码,二维码,PDF417码等扫码工具及制作过程

Basic4android 是一个简单但功能强大的 Android 应用开发环境。Basic4android 语言跟 Visual Basic 语言类似,支持更多的对象。Basic4android 将代码编译成 Android 原生应用,无需其他运行环境的支持。该工具完全为了 Android 应用开发,不支持其他平台。

**仅以此示例带大家了解Basic4Android(B4A)开发过程及其使用方式**

制作过程:

步骤一:

首先引用扫码类库(没有该类库的同学请移步文末下载);然后保存工程,因为不保存工程无法进入布局设计页面;

步骤二:

布局设计

1.先用PPT制作一个扫码图标;用于展示扫码按钮;(自己随心制作吧)

2.把图标放到B4A工程文件夹的files文件夹里面待用;

3.开始布局设计,首添加一个ImageView控件(用于触发扫一扫功能)

4.然后添加一个EditText控件(用于显示当前扫码结果)

5.再添加一个ListView控件(用于显示扫码历史记录)

6.通过脚本调节控件的位置大小以适应不同的屏幕分辨率;我们可以通过连接真机实时查看控件的布局效果;

6.1.连接真机步骤一:找到布局设计器上的WYSIWYG设计器,然后点击启动连接(注意这是通过usb数据线)

6.2.连接真机步骤二:在手机端需要在(开发者选项)里面打开usb调试功能(注意:找不到的开发者选项的同学,请自行百度本机型怎么打开开发者选项功能)

6.3脚本书写(注意是在小脚本-普通里面书写)

6.4我们是以从左到右,由上到下的屏幕百分比的形式去控制控件在屏幕中的位置;(注意:左右为X,上下为Y)

6.5本例中的布局脚本

EditText.SetLeftAndRight(5%x,95%x)
EditText.SetTopAndBottom(5%y,15%y)

ImageView.SetLeftAndRight(25%x,75%x)
ImageView.SetTopAndBottom(20%y,40%y)

ListView.SetLeftAndRight(5%x,95%x)
ListView.SetTopAndBottom(45%y,100%y)

6.6.为了增加个性大家可以在控件属性里面设置更多的东西;(下面简单介绍一下,请看图)

6.6.1布局面板属性

6.6.2.EditText控件属性

6.6.3.ImageView控件属性

6.6.4.ListView控件属性

6.6.5.更多控件属性请自行挖掘,这里只做简单介绍(效果图:效果不怎么样大家将就一下吧!啊哈哈哈哈

)

6.6.6.最后记得保存布局(这里名称是qr,后面会用到)和添加控件事件到代码里面

事件添加步骤见图(需要哪个事件在前面打勾即可,活动面板自身在代码里面已有一部分事件),最后点击一下generate members 即可在代码窗看到添加的事件!

步骤二:进入代码编写过程(谢谢大家坚持看到这里,顺手鼓励呗!

)

1.简单介绍一下代码窗见图

2.加载布局空间(即上面制作的布局qr)

Activity.LoadLayout("qr")

3.定义扫码类库

  Private zxy As JhsIceZxing1

4.为扫码类库添加权限和扫码布局参数(菜单-->项目-->Manifest编辑器),不想一个手输权限可以找到类库的XML文件直接复制权限过来修改即可!

''扫码权限
AddPermission( android.permission.CAMERA)
AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)
AddPermission(android.hardware.camera)
AddPermission(android.hardware.camera.autofocus)
AddPermission(android.permission.VIBRATE)
AddPermission(android.permission.FLASHLIGHT)
''扫码布局
AddApplicationText(<activity android:name="ice.zxing.CaptureActivity"
      android:screenOrientation="portrait" android:configChanges="orientation|keyboardHidden"
      android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
      android:windowSoftInputMode="stateAlwaysHidden">
    </activity>)

(左右活动查看完整代码)

5.添加运行时权限检测(引用RuntimePermissions类库)

Dim RP As RuntimePermissions '定义权限

Sub Activity_Create(FirstTime As Boolean)

  RP.CheckAndRequest(RP.PERMISSION_CAMERA) '相机权限检查并提示
  
End Sub

'权限事件必须添加否则报错
Sub Activity_PermissionResult (Permission As String, Result As Boolean)
  
End Sub

6.扫码类库代码书写

#Region  Project Attributes 
  #ApplicationLabel:扫一扫
  #VersionCode: 1
  #VersionName: 
  #SupportedOrientations: unspecified
  #CanInstallToExternalStorage: False
#End Region

#Region  Activity Attributes 
  #FullScreen: False
  #IncludeTitle: True
#End Region

Sub Process_Globals
  

End Sub

Sub Globals
  Private EditText As EditText '文本框定义
  Private ImageView As ImageView  '图片框定义
  Private ListView As ListView  '列表框定义
  Private zx As JhsIceZxing1  '扫码类库
  Dim RP As RuntimePermissions '权限检测
End Sub

Sub Activity_Create(FirstTime As Boolean)  '启动事件

  Activity.LoadLayout("qr") '引用布局
  RP.CheckAndRequest(RP.PERMISSION_CAMERA)  '相加权限检测
End Sub



Sub Activity_PermissionResult (Permission As String, Result As Boolean)
  
End Sub

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub ListView_ItemClick (Position As Int, Value As Object)
  
End Sub

Sub ImageView_Click
  
  zx.isportrait = True
  zx.useFrontCam = False '前置相机
  zx.timeoutDuration = 30  '超时
  zx.theViewFinderXfactor = 0.8 '扫描框宽
  zx.theViewFinderYfactor = 0.4 '扫描框高
  zx.theFrameColor = Colors.Green '扫面框颜色
  zx.theLaserColor = Colors.Yellow '扫面框中心线颜色
  zx.theMaskColor = Colors.argb(95, 0, 0, 0) '扫码背景色
  zx.theResultColor = Colors.Green '结果返回时背景色
  zx.theResultPointColor = Colors.Green  '扫描点颜色
  zx.theBottomPromptMessage = "将二维码/条形码放入框内,即可自动扫描"  '底部文字
  zx.theBottomPromptTextSize = 1.5%y '底部文字大小
  zx.bottomPromptColor = Colors.Gray '底部文字颜色
  zx.bottomPromptDistanceFromBottom = 30%y '底部文字颜色
  zx.BeginScan("myzx") '开始扫码
End Sub

'扫码返回结果事件

Sub myzx_result(atype As String, Value As String, image As Bitmap)
  
  EditText.Text= Value
  ListView.AddSingleLine(Value)
  
End Sub

''扫码超时事件
Sub myzx_timedout(timedOut As Boolean)
  Log("timedOut " & timedOut)

End Sub

'取消扫码事件
Sub myzx_usercancelled(userCancelled As Boolean)
  Log("userCancelled " & userCancelled)
End Sub

步骤三:下载我们的文件示例

https://www.lanzous.com/i4uk8uh

谢谢大家关注与支持

本文分享自微信公众号 - VB小源码(vb_xym),作者:VB小源码

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • B4A 手机客户端源码

    Sub Process_Globals Dim Socket1 As Socket Dim AStreams As AsyncStreams

    巴西_prince
  • 用VB.NET 撸一个登录界面(开箱即食)

    界面均使用panel、Label、textbox、pictruebox 拼凑而成!

    巴西_prince
  • Basic4android(B4A)设置主题样式

    巴西_prince
  • 计算机视觉怎么给图像分类?KNN、SVM、BP神经网络、CNN、迁移学习供你选(附开源代码)

    原文:Medium 作者:Shiyu Mou 来源:机器人圈 本文长度为4600字,建议阅读6分钟 本文为你介绍图像分类的5种技术,总结并归纳算法、实现方式,并...

    数据派THU
  • 开源库Magicodes.WeChat.SDK总体介绍

    本篇主要对MAGICODES.WECHAT.SDK进行简单总体的介绍。通过本篇教程,您可以对Magicodes.WeChat.SDK进行一个全面的了解。

    雪雁-心莱科技
  • JDK容器学习之CopyOnWriteArrayList:线程安全保障机制

    JDK容器学习之CopyOnWriteArrayList 列表容器常见的有 ArrayList和LinkedList,然而两者都是非线程安全的,若应用场景对线...

    一灰灰blog
  • 794. Valid Tic-Tac-Toe State

    思路: 1. 由规则可知,”X”一定最先开始,所以当前局面存在”O”的个数大于”X”的个数为非法。 2. 其次,由于”X”和”O”轮流,因此,当前局面中...

    用户1147447
  • 出行大数据,滴滴发布400城数据可视化分析

    “蝌蚪图”直观描绘着城市早晚高峰中人们的流动。在这早晚高峰的大数据中,北京继续体现着职住分离与就业多中心的态势。

    华章科技
  • 超清晰的makefile解释、编写与示例

    Makefile范例教学 Makefile和GNU make可能是linux世界里最重要的档案跟指令了。编译一个小程式,可以用简单的command来进行编译;稍...

    老白
  • 获取设置一个字节某一个位的数值

    @import url(http://www.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.c...

    用户3135539

扫码关注云+社区

领取腾讯云代金券