Skip to content

Commit d8b41d7

Browse files
committed
service.rsr fix mistake 2
1 parent aed0299 commit d8b41d7

File tree

1 file changed

+0
-108
lines changed

1 file changed

+0
-108
lines changed

doc/source/services.rst

-108
Original file line numberDiff line numberDiff line change
@@ -130,111 +130,3 @@ The call to this method should be done within the service code::
130130
from jnius import autoclass
131131
PythonService = autoclass('org.kivy.android.PythonService')
132132
PythonService.mService.setAutoRestartService(True)
133-
134-
Service auto-start
135-
~~~~~~~~~~~~~~~~~~
136-
137-
To automatically start the service on boot, you need to add signals inside ``AndroidManifest.xml`` that Android sends to applications on boot.
138-
Create file ``receivers.xml`` and write this code::
139-
140-
<receiver android:name=".MyBroadcastReceiver" android:enabled="true" android:exported="true">
141-
<intent-filter>
142-
<action android:name="android.intent.action.BOOT_COMPLETED" />
143-
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
144-
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
145-
</intent-filter>
146-
</receiver>
147-
148-
149-
Next step set path to this file in ``buildozer.spec``, set setting ``android.extra_manifest_application_xml`` code::
150-
151-
android.extra_manifest_application_xml = %(source.dir)s/xml/receivers.xml
152-
153-
Then need create ``MyBroadcastReceiver.java``, code::
154-
155-
package com.heattheatr.kivy_service_test;
156-
157-
import android.content.BroadcastReceiver;
158-
import android.content.Intent;
159-
import android.content.Context;
160-
import org.kivy.android.PythonActivity;
161-
162-
import java.lang.reflect.Method;
163-
164-
import com.heattheatr.kivy_service_test.ServiceTest;
165-
166-
public class MyBroadcastReceiver extends BroadcastReceiver {
167-
168-
public MyBroadcastReceiver() {
169-
170-
}
171-
172-
// Start app.
173-
public void start_app(Context context, Intent intent) {
174-
Intent ix = new Intent(context, PythonActivity.class);
175-
ix.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
176-
context.startActivity(ix);
177-
}
178-
179-
// Start service.
180-
public void service_start(Context context, Intent intent) {
181-
String package_root = context.getFilesDir().getAbsolutePath();
182-
String app_root = package_root + "/app";
183-
Intent ix = new Intent(context, ServiceTest.class);
184-
ix.putExtra("androidPrivate", package_root);
185-
ix.putExtra("androidArgument", app_root);
186-
ix.putExtra("serviceEntrypoint", "service.py");
187-
ix.putExtra("pythonName", "test");
188-
ix.putExtra("pythonHome", app_root);
189-
ix.putExtra("pythonPath", package_root);
190-
ix.putExtra("serviceStartAsForeground", "true");
191-
ix.putExtra("serviceTitle", "ServiceTest");
192-
ix.putExtra("serviceDescription", "ServiceTest");
193-
ix.putExtra("pythonServiceArgument", app_root + ":" + app_root + "/lib");
194-
ix.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
195-
context.startService(ix);
196-
}
197-
198-
// Stop service.
199-
public void service_stop(Context context, Intent intent) {
200-
Intent intent_stop = new Intent(context, ServiceTest.class);
201-
202-
context.stopService(intent_stop);
203-
}
204-
205-
// Sinals reciver.
206-
public void onReceive(Context context, Intent intent) {
207-
switch (intent.getAction()) {
208-
case Intent.ACTION_BOOT_COMPLETED:
209-
System.out.println("python MyBroadcastReceiver.java
210-
MyBroadcastReceiver.class onReceive.method: ACTION_BOOT_COMPLETED");
211-
this.service_start(context, intent);
212-
break;
213-
default:
214-
break;
215-
}
216-
}
217-
}
218-
219-
This code start ``service.py`` from ``buildozer.spec`` when get signal ``ACTION_BOOT_COMPLETED``::
220-
221-
services = Test:./service.py:foreground
222-
223-
For example ``service.py``::
224-
225-
import os
226-
from time import sleep
227-
228-
from jnius import cast
229-
from jnius import autoclass
230-
231-
PythonService = autoclass('org.kivy.android.PythonService')
232-
CurrentActivityService = cast("android.app.Service", PythonService.mService)
233-
234-
while True:
235-
print("python service running.....", CurrentActivityService.getPackageName(), os.getpid())
236-
sleep(10)
237-
238-
Name out service will be ``ServiceTest``, prefix ``Service`` + ``Test`` from ``services = Test:./service.py:foreground``.
239-
240-
You can see how it work in test `project <https://github.com/dvjdjvu/kivy_service_test>`__.

0 commit comments

Comments
 (0)