QR Code Reader for android, ios?

Mike Kerner MikeKerner at roadrunner.com
Sat Feb 19 11:50:37 EST 2022


for ios use mergav. it works great
on ios when prompted, the user has to permit both the camera and the
microphone.


here's some code to help get you going
check for typos, i had to modify mine to make it more generic

on scanCredentials
   global barcodeTarget
   if not(barcodePermissionsGranted()) then exit scanCredentials
   put the long name of me into barcodeTarget
   barcodeScannerStart "org.iso.QRCode" #when we get something back,
scanReturned will be called
   unlock screen
end scanCredentials



function barcodePermissionsGranted
   global videoAccessGranted, audioAccessGranted
   put empty into videoAccessGranted
   put empty into audioAccessGranted
   #get permission for the camera and microphone
   if the environment is not "mobile" then return false
   mergavrequestmediaaccess "video"
   mergavrequestmediaaccess "audio"
   repeat until videoAccessGranted is not empty and audioAccessGranted is
not empty # sit until we get the answers we seek
      wait 10 milliseconds with messages
   end repeat #until videoAccessGranted is not empty and audioAccessGranted
is not empty
   return videoaccessGranted and audioaccessgranted
end barcodePermissionsGranted



on barcodeScannerStart symbology
   if the environment is not "mobile" then exit barcodeScannerStart
   mobileBusyIndicatorStart "square","Starting Scanner",70
   wait 10 milliseconds with messages
   put mergAVCamBarcodeTypes() into supportedSymbologies
   if symbology is empty or symbology is "All" then
      put supportedSymbologies into symbology #allow everything.
   else if symbology is not in supportedSymbologies then #if it's empty
then assume "All"
      beep
      answer "The app wants to use a barcode symbology that isn't supported
"&symbology&"."
      exit barcodeScannerStart
   end if #symbology is not in supportedSymbologies
   barcodeScanner symbology
end barcodeScannerStart



on mergAVMediaAccess pType, pGranted
   global videoAccessGranted, audioAccessGranted
   if not pGranted then
      if pType is "audio" then
         put "microphone" into device
         put "Microphone" into panel
      else #video
         put "camera" into device
         put "Camera" into panel
      end if #pType is "audio"
      mobilebusyindicatorstop
      put false into videoAccessGranted # nuke both because proceeding is
out.
      put false into audioAccessGranted # nuke both because proceeding is
out.
      answer "Please grant access to the"&&device&&"in the Settings app,
under Privacy ->"&&panel
      exit to top
   else #granted - only set the one that was granted, don't do any funky
resets, or anything.
      if pType is "audio" then
         put true into audioAccessGranted
      else #video
         put true into videoAccessGranted
      end if #pType is "audio"
      # added and removed...if audioAccessGranted and videoAccessGranted
then barcodeScanner symbology
   end if #not pGranted
end mergAVMediaAccess



on barcodeScanner symbology
   global barcodeScannerIsLive
   mobileBusyIndicatorStart "square","Starting Scanner",70
   mergavcamcreate
   put the result into theResult
   if theResult is not empty then
      mobileBusyIndicatorStop
      answer "Scanner not created:"&&theResult
      exit barcodeScanner
   end if #the result is not empty
   try
      mergAVCamSet "rect",the rect of grc "cam"
   catch e
      mobileBusyIndicatorStop
      answer e
      exit barcodeScanner
   end try
   try
      mergAVCamSet "visible","true"
   catch e
      mobileBusyIndicatorStop
      answer e
      exit barcodeScanner
   end try
   try
      mergAVCamSet "quality","high"
   catch e
      mobileBusyIndicatorStop
      answer e
      exit barcodeScanner
   end try
   mobileBusyIndicatorStop

   put mergavcamget("max zoom") into theZoom
   try
      mergavcamset "zoom",theZoom
   catch e
      mobileBusyIndicatorStop
      answer e
      exit barcodeScanner
   end try
   mergAVCamStartBarcodeReader symbology
   put true into barcodeScannerIsLive
end barcodeScanner



on mergAVCamBarcodeFound pBarcode, pType
   global barcodeTarget
   dispatch "scanReturned" to barcodeTarget with pBarcode
end mergAVCamBarcodeFound



on stopBarcodeScanner
   global barcodeScannerIsLive
   if not barcodeScannerIsLive then exit stopBarcodeScanner # or will throw
an error
   mergAVCamStopBarcodeReader
   mergAVCamDelete
   put false into barcodeScannerIsLive
end stopBarcodeScanner

On Sat, Feb 19, 2022 at 11:05 AM Klaus major-k via use-livecode <
use-livecode at lists.runrev.com> wrote:

> Hi Tom,
>
> > Am 19.02.2022 um 17:00 schrieb Tom Glod via use-livecode <
> use-livecode at lists.runrev.com>:
> >
> > Hi Folks,
> >
> > I've done some searches and its still not clear to me, a lot of old posts
> > and no clear answer that I found that I can be sure applies in 2022.
> >
> > Do we have a working QR code reader library. widget, external?
> > For android? ios?
> > I don't mind paying for it.
> >
> > I know for desktop I can probably use the browser widget with the camera,
> > and some JS library.
> > But has anyone successfully integrated a reader into a mobile app?
>
> yes, check "Android Barcode Library" in the dictionary.
> Works fine on Android, no idea about iOS, sorry.
> But maybe some of the MERGEXT... externals will do the job.
>
> > Thanks,
> >
> > Tom
>
> Best
>
> Klaus
>
> --
> Klaus Major
> https://www.major-k.de
> https://www.major-k.de/bass
> klaus at major-k.de
>
>
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode
>


-- 
On the first day, God created the heavens and the Earth
On the second day, God created the oceans.
On the third day, God put the animals on hold for a few hours,
   and did a little diving.
And God said, "This is good."


More information about the use-livecode mailing list