Android Question Beacon Parser as an Android service

Christian García S.

Active Member
Licensed User
Hello everyone,

I am implementing an app with beacon technology, I implemented with IOS with monitor region, IOS detect beacons even when the app is closed, it is very successful in real world because when you walk in the street generally some apps are closed and this monitoring invites you to open app when beacon is near.

I want do the same with Android, but dont know how I can do, I was trying like a service

I put this code in service -> starter

B4X:
Sub Process_Globals
    Public manager As BleManager2
    Public Parser As BeaconParser

    Public beacons As Map
    Public const TIME_TO_LIVE_SECONDS As Int = 5
End Sub

Sub Service_Create
    manager.Initialize("manager")
    beacons.Initialize
    Parser.Initialize

    Globals.IniDB
    Globals.CreateTables
End Sub

Sub Service_Start (StartingIntent As Intent)
    manager.Scan2(Null, True)
End Sub

Public Sub Scan
    manager.Scan2(Null, True)
    scanning = True
End Sub

I was checking report in google app developer and I got these errors:

B4X:
java.lang.RuntimeException:
  at anywheresoftware.b4a.objects.BleManager2.Scan2 (BleManager2.java:142)
  at com.creator.app.starter._service_start (starter.java:370)
  at java.lang.reflect.Method.invoke (Native Method)
  at java.lang.reflect.Method.invoke (Method.java:372)
  at anywheresoftware.b4a.BA.raiseEvent2 (BA.java:186)
  at anywheresoftware.b4a.BA.raiseEvent (BA.java:166)
  at com.creator.app.starter.handleStart (starter.java:105)
  at com.creator.app.starter.access$000 (starter.java:8)
  at com.creator.app.starter$1.run (starter.java:70)
  at anywheresoftware.b4a.objects.ServiceHelper$StarterHelper.onStartCommand (ServiceHelper.java:105)
  at com.creator.app.starter.onStartCommand (starter.java:68)
  at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3958)
  at android.app.ActivityThread.access$2300 (ActivityThread.java:218)
  at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1842)
  at android.os.Handler.dispatchMessage (Handler.java:102)
  at android.os.Looper.loop (Looper.java:145)
  at android.app.ActivityThread.main (ActivityThread.java:7007)
  at java.lang.reflect.Method.invoke (Native Method)
  at java.lang.reflect.Method.invoke (Method.java:372)
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1404)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199)

And I got this error too:

java.lang.RuntimeException:
at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3705)
at android.app.ActivityThread.-wrap23 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1736)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:154)
at android.app.ActivityThread.main (ActivityThread.java:6682)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1410)
Caused by: java.lang.RuntimeException:
at anywheresoftware.b4a.BA.raiseEvent2 (BA.java:223)
at anywheresoftware.b4a.BA.raiseEvent (BA.java:166)
at com.creator.app.starter.handleStart (starter.java:105)
at com.creator.app.starter.access$000 (starter.java:8)
at com.creator.app.starter$1.run (starter.java:70)
at anywheresoftware.b4a.objects.ServiceHelper$StarterHelper.onStartCommand (ServiceHelper.java:105)
at com.creator.app.starter.onStartCommand (starter.java:68)
at android.app.ActivityThread.handleServiceArgs (ActivityThread.java:3688)

As I can do for that Android keep reading the beacons even when the app is closed.

Thanks for your help.
 
Last edited:
Top