Skip to content

How can i use the custom broadcast by myself in the background service?  #849

Description

@linuxrootok

My service file:

import time,base64
#from kivy.network.urlrequest import UrlRequest
#from kivy.core.audio import SoundLoader
#from plyer import vibrator
from jnius import autoclass
c = autoclass('android.content.Context')
#cw = c()

it = autoclass('android.content.Intent')
i = it()
class myservice():

    def __init__(self,*arg):
        self.arg = arg

    def checkOnline(self):
        i.setAction('org.ttt.app.MY_ACTION')
        i.putExtra('state','1')
        #c.sendOrderedBroadcast(i,None) 
        c.sendBroadcast(i)
        #cw.sendBroadcast(i)

s = myservice()
while True:
    s.checkOnline()
    time.sleep(30)
    #vibrator.vibrate(8)

My app main file:

from kivy.app import App
from kivy.uix.button import Button
from jnius import autoclass
from kivy.uix.togglebutton import ToggleButton
import android
from android.broadcast import BroadcastReceiver

class TylerApp(App):

    def build(self):
        self.flag = None
        android.start_service(title='service name',description='service description',arg='argument to service')
        #Br = autoclass('android.content.BroadcastReceiver')
        self.br = BroadcastReceiver(self.on_broadcast, actions=['org.ttt.app.MY_ACTION'], categories=['android.intent.category.DEFAULT'])
        self.br.start()

        btn = ToggleButton(text='Male',group='sex',state='normal')
        btn.bind(on_press=self.callback)

        return btn
    def callback(self,instance):
        #print(instance.state)
        if self.flag != None: 
            instance.text = 'OOOKKK'
            self.flag = None
        else:
            if instance.state == 'down':
                instance.text = 'OK'
            else:
                instance.text = 'KO'

    def on_broadcast(self,context,intent):
        extras = intent.getExtras()
        flag = bool(extras.get('state'))
        if(flag):
            self.flag = 'plugged'
        else:
            self.flag = None

if __name__ == "__main__":
    TylerApp().run()

I have tried many times, but it is not work for me. Please give me some help, thanks a lot!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions