Android Tutorial Service Modules

ericvanderhoeven

Member
Licensed User
Longtime User

Hi Umberto,

the answer = yes

From the service module, at your convenience (at that notification of new data or at a timer) you can just start any activity you'd like by using the command StartActivity(ActivityName)

Easy does it..

Eric
 

udg

Expert
Licensed User
Longtime User
@Erel: sorry, I stand corrected. Just saw my question as a way to specify how to combine use of a service and an app.
@eric: thanks, I'll procede that way.

Umberto
 

shmulik taiber

Member
Licensed User
Longtime User
hello Erel .
I've managed to utilize a service module to get data from arduino via usb (asyncstreams) in the background . I've logged it (in the service module) and it's correct in realtime . however, accessing the data from Main module still evades me .
I wrote -
in the service module :
str = BytesToString(Buffer, 0, Buffer.Length, "UTF8")

in Main
lbl_in.Text=arduino.str
or tried :
Log(str)

got nothing . what am I doing wrong ?
 

luke2012

Well-Known Member
Licensed User
Longtime User
Hi @Erel.
I'm using the StartServiceAt in order to schedule a notification in an specifica range (for example : 1 time in a month).
The problem happen when the user restart the smartphone because the service is set to start at boot and the notification appears before the scheduled time.

My target is to activate the notification only on the defined schedule time not at the system boot.
Any solution about it?
 

Roger C

Active Member
Licensed User
Longtime User
A question about starting the service at a specific time...

The task is to make a daily break in a timereport, when entering a new day, the time should be save for the old and a new event should be started for the next day.

This could be done when the user checks out; check if it started on a previous day and then register yesterday as an event and then create and save a new event for the day he checked out.

But I think (for closing each day correct, there might be need for running a report early in the day and the user might not have ended his shift yet) that I would try to have a service running at midnight and close the day before and start a new event.

What is the best way to set the service to start at midnight every day?

I have this code in Service_Start but are not sure that it will set 24 hours until next start. The date will probably be the same day...
Should I add 1 to the date or should I set "00:00:00"?
Can I always be sure that this Service will be called at exactly 23:59:59 every day without delays?

Are there better ways to run a service at an exact time?

B4X:
Dim lTime As Long
   Dim start, endTime As Long

   start = DateTime.now
  endTime = DateTime.DateTimeParse(DateTime.date(DateTime.Now), "23:59:59")
  lTime = Abs(endTime - start)

   StartServiceAt("Midnight",lTime, True)
 

jlperez

Member
Licensed User
Longtime User
Dear friends,
I need to write a hidden service (no user interface) which needs to execute some task every 5 minutes.

Could anyone give some advice on how can I build something like this without interface? How can I invoke such a service and install it on the smartphone?


Thanks in advance

Best regards
Jose Luis
 

jlperez

Member
Licensed User
Longtime User
Thank you Erel
 

jefflynn1974

Member
Licensed User
Longtime User
I have two services with start foreground. One of them is a widget. Can they use the same notification or every service must have an own one?
 

lemonisdead

Well-Known Member
Licensed User
Longtime User
How to get a value from activity module to service module?
Hi,
By referencing using the activity's name. For example: n= Main.Variable
The activity's variable should be declared in Process_Globals
 

entolium

Member
Licensed User
Longtime User
Hi,

I have a service reading usbserial GPS. This service send the mocklocaction to the system, and call a activity sub (if not is paused) for show the data.

The problem is when Android go off, or manually off pressing the power button (a short press). When power on (short press again), the service not update the data (the notify icon remains, then, I think the service is running ¿or not?). I must stop and start the service from the activity for return to normal operation.

Why?

I'm crazy with this problem.
 

entolium

Member
Licensed User
Longtime User
Thank you Erel for your respone. Yes, I call StartForeground.

This is my code in Service Start:

B4X:
Sub Service_Start (StartingIntent As Intent)

    'StartServiceAt("", DateTime.Now + 5 * DateTime.TicksPerSecond, False) 'schedule the next task to run in 5 seconds.
    Service.StartForeground(1, Notificacion1)

    If usb.UsbPresent <> usb.USB_DEVICE Then
       
        Notificacion1.SetInfo("GPSusb","Dispositivo no compatible",Main)
        Notificacion1.Notify(1)
       
    Else
        Try
            If (usb.HasPermission) Then
                Dim dev As Int
                dev = usb.Open(4800)       
                If dev = usb.USB_DEVICE Then
                    astreams.Initialize(usb.GetInputStream, Null, "astreams")
                    Notificacion1.SetInfo("GPSusb","Dispositivo conectado",Main)
                    Notificacion1.Notify(1)
                Else
                    usb.Close
                    StartServiceAt("", DateTime.Now + 5 * DateTime.TicksPerSecond, True) 'schedule the next task to run in 5 seconds.
                    Notificacion1.SetInfo("GPSusb","Dispositivo no compatible",Main)
                    Notificacion1.Notify(1)
                End If
            Else
                usb.RequestPermission
            End If
        Catch
            usb.Close
            StartServiceAt("", DateTime.Now + 5 * DateTime.TicksPerSecond, True) 'schedule the next task to run in 5 seconds.
            UltimoError=LastException.Message
        End Try
       
    End If


End Sub
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…