前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >B4A VB扫码数据提取V1.0 程序包含扫码,TXT文件保存,TXT文件分享,文件批量删除,时间操作,发票数据等技巧

B4A VB扫码数据提取V1.0 程序包含扫码,TXT文件保存,TXT文件分享,文件批量删除,时间操作,发票数据等技巧

作者头像
一线编程
发布2019-08-01 14:27:52
1.5K0
发布2019-08-01 14:27:52
举报
文章被收录于专栏:办公魔盒办公魔盒办公魔盒

B4A 扫码数据提取V1.0

本程序包含二维码,条形码扫码提取其中的数据,通过提取到的数据保存为TXT文件,通过保存的TXT文件分享到QQ微信等社交软件,批量删除本地文件,时间操作等技巧都集中在里面!非常适合财务会计!

APP界面展示


因本人工作比较忙,没有对代码进行过多的注释,如果在使用和开发研究过程中有不懂得地方请后台回复信息或通过QQ群联系本人,如未能及时回复请耐心等待!谢谢!

VBA 发票数据解析部分请看第二篇文章!

直接上源码:

主活动视图源码:

#Region  Project Attributes 
  #ApplicationLabel: 扫码提取数据
  #VersionCode: 1
  #VersionName: VB小源码
  'SupportedOrientations possible values: unspecified, landscape or portrait.
  #SupportedOrientations: unspecified
  #CanInstallToExternalStorage: False
#End Region

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

Sub Process_Globals
  Dim RP As RuntimePermissions
  Dim flname As String
End Sub

Sub Globals
  Private ZX As JhsIceZxing1
  ''------------------------
  Private BT_SAVE As Button
  Private LV_RES As ListView
  Private BT_QR As Button
  ''------------------------
  Private BT_SEND As Button
  Private BT_DEL As Button
  ''***************
  Private path As String
  Private sharepath As String
  Private BT_DELLIST As Button
  Private TXT_NAME As EditText
  Private BT_RFFLNAME As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
  Try
      Activity.LoadLayout("TXT")
      ''***********************
      DateTime.DateFormat="yyyyMMddHHmmss"
      TXT_NAME.Text=DateTime.Date(DateTime.Now)
      flname=TXT_NAME.Text & ".txt"
      ''************************
      Activity.AddMenuItem("关于", "OpenFile")
      ''************************
      RP.CheckAndRequest(RP.PERMISSION_WRITE_EXTERNAL_STORAGE)
      RP.CheckAndRequest(RP.PERMISSION_CAMERA)
      ''************************
      path=File.DirDefaultExternal
      sharepath=File.DirDefaultExternal & "/shared"
      ''************************
      LV_RES.FastScrollEnabled=True
      LV_RES.SingleLineLayout.ItemHeight=35dip
      LV_RES.ScrollingBackgroundColor = Colors.Transparent
      LV_RES.SingleLineLayout.Label.TextSize = 15
      LV_RES.SingleLineLayout.Label.Typeface = Typeface.MONOSPACE
      LV_RES.SingleLineLayout.Label.Typeface = Typeface.DEFAULT_BOLD
      LV_RES.SingleLineLayout.Label.TextColor = Colors.Red
      LV_RES.SingleLineLayout.Label.Gravity = Gravity.LEFT
  Catch
    ToastMessageShow("软件运行出错啦^_^",True)
  End Try
End Sub

#Region "关于"
Sub OpenFile_Click
  Msgbox($"本程序由<巴西_prince>编写;更多精彩内容请关注,微信公众号:VB小源码""$$,"关于")
End Sub
#End Region

Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub


Sub BT_SAVE_Click
  Try
    If LV_RES.Size <> 0 Then
      Dim LIS As List,i As Int
      LIS.Initialize
      For i=0 To LV_RES.Size-1
        LIS.Add(LV_RES.GetItem(i))
      Next
      File.WriteList(path, flname, LIS)
      ToastMessageShow("数据保存成功!",True)
    Else
      ToastMessageShow("没有要保存数据!",True)
    End If 
  Catch
    ToastMessageShow("数据保存失败!",True)
  End Try

'  Dim str As String ="卡佛的恐反恐"& CRLF & "kf0kpgohlg"
'  Dim writer As TextWriter
'  writer.Initialize(File.OpenOutput(File.DirDefaultExternal,"data.txt",True))
'  writer.WriteLine(str)
'  writer.Close

End Sub

#Region "权限处理"

Sub Activity_PermissionResult (Permission As String, Result As Boolean)
  Try
    If Permission=RP.PERMISSION_WRITE_EXTERNAL_STORAGE Then
      If Result=False Then
        Msgbox("储存权限获取失败!,软件即将退出","警告")
        ExitApplication
      End If
    Else If Permission=RP.PERMISSION_CAMERA Then
      If Result=False Then
        Msgbox("相机权限获取失败!,软件即将退出","警告")
        ExitApplication
      End If
    End If
  Catch
    Log(LastException)
  End Try

End Sub

#End Region

#Region "扫码按钮事件"

Sub BT_QR_Click
  Try
    ''****************
    ZX.isportrait = True
    ZX.useFrontCam = False
    ZX.timeoutDuration = 30
    ZX.theViewFinderXfactor = 0.9
    ZX.theViewFinderYfactor = 0.5
    ZX.theFrameColor = Colors.Green
    ZX.theLaserColor = Colors.Green
    ZX.theMaskColor = Colors.argb(95, 0, 0, 0)
    ZX.theResultColor = Colors.Green
    ZX.theResultPointColor = Colors.Red
    ZX.theBottomPromptMessage = "将二维码/条形码放入框内,即可自动扫描"
    ZX.theBottomPromptTextSize = 2%y
    ZX.bottomPromptColor = Colors.LightGray
    ZX.bottomPromptDistanceFromBottom = 23%y
    ZX.BeginScan("mzx")
  Catch
    ToastMessageShow("扫码异常!",True)
  End Try
End Sub

Sub mzx_result(atype As String,Value As String, image As Bitmap)
  Try
    If Value<>"" Then LV_RES.AddSingleLine(Value)
  Catch
    Log(LastException)
  End Try
End Sub

Sub mzx_timedout(timedOut As Boolean)
  Try
    Log(timedOut)
  Catch
    Log(LastException)
  End Try
End Sub

Sub mzx_usercancelled(userCancelled As Boolean)
  Try
    If userCancelled=True Then ToastMessageShow("用户已取消扫码",False)
  Catch
    Log(LastException)
  End Try
End Sub

#End Region

#Region "文件分享"

Sub BT_SEND_Click
  Dim FileToSend As String =flname
  If File.Exists(path,FileToSend)=True Then
    File.Copy(path, FileToSend, Starter.shared, FileToSend)
    Dim in As Intent
    in.Initialize(in.ACTION_SEND, "")
    in.SetType("*/*")
    Dim uri As Object
    uri = CreateFileProviderUri(Starter.shared, FileToSend)
    in.PutExtra("android.intent.extra.STREAM", uri)
    in.WrapAsIntentChooser("请选择要分享到的程序")
    StartActivity(in)
  Else
    ToastMessageShow("没找到文件!",True)
  End If
End Sub


Sub CreateFileProviderUri (Dir As String, FileName As String) As Object
  Try
    Dim FileProvider As JavaObject
    Dim context As JavaObject
    context.InitializeContext
    FileProvider.InitializeStatic("android.support.v4.content.FileProvider")
    Dim f As JavaObject
    f.InitializeNewInstance("java.io.File", Array(Dir, FileName))
    Return FileProvider.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f))
  Catch
    Return path
    ToastMessageShow("路径转换时发生错误!",True)
  End Try
End Sub

#End Region

#Region "清空文件"

Sub BT_DEL_Click
  Try
    Dim result As Int
    result = Msgbox2("你确定要清空所有历史文件吗?", "清空文件", "确定", "", "取消", LoadBitmap(File.DirAssets, "logo.png"))
    If result = DialogResponse.Positive Then
      Dim ls As List,lt As List
      ls.Initialize
      lt.Initialize
      ls=File.ListFiles(path)
      lt=File.ListFiles(sharepath)
      For Each xl In ls
        If File.Exists(path,xl)  Then
          File.Delete(path,xl)
        End If
      Next
      For Each l In lt
        If File.Exists(sharepath,l)  Then
          File.Delete(sharepath,l)
        End If
      Next
      ToastMessageShow("已清空所有文件!",True)
    End If
  Catch
    ToastMessageShow("删除文件时发生错误啦!",True)
  End Try

End Sub

#End Region

#Region "清空列表"
Sub BT_DELLIST_Click
  Try
    If LV_RES.Size <> 0 Then
      Dim result As Int
      result = Msgbox2("你确定要清空列表中的数据吗?", "清空列表", "确定", "", "取消", LoadBitmap(File.DirAssets,"Info.png"))
      If result = DialogResponse.Positive Then 
        LV_RES.Clear
      End If
    Else
      ToastMessageShow("列表为空!",False)
    End If 
  Catch
    Log(LastException)
  End Try
  
End Sub

#End Region

#Region "更改文件名"
Sub BT_RFFLNAME_Click
  Try
    Dim result As Int
    result = Msgbox2("你确定要修改当前保存的文件名吗?", "文件名修改", "确定", "", "取消", LoadBitmap(File.DirAssets, "logo.png"))
    If result = DialogResponse.Positive Then 
      DateTime.DateFormat="yyyyMMddHHmmss"
      TXT_NAME.Text=DateTime.Date(DateTime.Now)
      flname=TXT_NAME.Text  & ".txt"
    End If
  Catch
    ToastMessageShow("文件名刷新失败!",True)
  End Try

End Sub

#End Region

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

服务模块代码:

#Region  Service Attributes 
  #StartAtBoot: False
  #ExcludeFromLibrary: True
#End Region

Sub Process_Globals

  Public rp As RuntimePermissions
  Public shared As String
End Sub

Sub Service_Create
  shared = rp.GetSafeDirDefaultExternal("shared")
End Sub

Sub Service_Start (StartingIntent As Intent)
  Service.StopAutomaticForeground 

End Sub

Sub Service_TaskRemoved
  
End Sub


Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
  Return True
End Sub

Sub Service_Destroy

End Sub

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

清单文件:


AddManifestText(
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="26"/>
<supports-screens android:largeScreens="true" 
    android:normalScreens="true" 
    android:smallScreens="true" 
    android:anyDensity="true"/>)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
CreateResourceFromFile(Macro, Themes.DarkTheme)

'扫码权限
  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>)
    
    
''********************
''文件地址转换

AddManifestText(<uses-permission
  android:name="android.permission.WRITE_EXTERNAL_STORAGE"
  android:maxSdkVersion="18" />
)

AddApplicationText(
  <provider
  android:name="android.support.v4.content.FileProvider"
  android:authorities="$PACKAGE$.provider"
  android:exported="false"
  android:grantUriPermissions="true">
  <meta-data
  android:name="android.support.FILE_PROVIDER_PATHS"
  android:resource="@xml/provider_paths"/>
  </provider>
)
CreateResource(xml, provider_paths,
   <external-files-path name="name" path="shared" />
)

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


软件体验地址:

  版本1: https://www.lanzous.com/i585fpi
 版本2: https://www.lanzous.com/i588i3c

谢谢关注与支持!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 办公魔盒 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档