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)

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

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券