Added onOpen/onClose to LocationBackendService and third sample
This commit is contained in:
parent
9446feaacb
commit
f3daae1be9
|
@ -13,7 +13,7 @@ public abstract class LocationBackendService extends Service {
|
||||||
private Location waiting;
|
private Location waiting;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called, whenever an app requires a location update. This can be a single or a repeated request.
|
* Called, whenever an app requires a location update. This can be a single or a repeated request.
|
||||||
* <p/>
|
* <p/>
|
||||||
* You may return null if your backend has no newer location available then the last one.
|
* You may return null if your backend has no newer location available then the last one.
|
||||||
* Do not send the same {@link android.location.Location} twice, if it's not based on updated/refreshed data.
|
* Do not send the same {@link android.location.Location} twice, if it's not based on updated/refreshed data.
|
||||||
|
@ -22,7 +22,9 @@ public abstract class LocationBackendService extends Service {
|
||||||
*
|
*
|
||||||
* @return a new {@link android.location.Location} instance or null if not available.
|
* @return a new {@link android.location.Location} instance or null if not available.
|
||||||
*/
|
*/
|
||||||
protected abstract Location update();
|
protected Location update() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Directly report a {@link android.location.Location} to the requesting apps. Use this if your updates are based
|
* Directly report a {@link android.location.Location} to the requesting apps. Use this if your updates are based
|
||||||
|
@ -47,6 +49,20 @@ public abstract class LocationBackendService extends Service {
|
||||||
return backend;
|
return backend;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after a connection was setup
|
||||||
|
*/
|
||||||
|
protected void onOpen() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called before connection closure
|
||||||
|
*/
|
||||||
|
protected void onClose() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private class Backend extends LocationBackend.Stub {
|
private class Backend extends LocationBackend.Stub {
|
||||||
@Override
|
@Override
|
||||||
|
@ -56,6 +72,7 @@ public abstract class LocationBackendService extends Service {
|
||||||
callback.report(waiting);
|
callback.report(waiting);
|
||||||
waiting = null;
|
waiting = null;
|
||||||
}
|
}
|
||||||
|
onOpen();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -65,6 +82,7 @@ public abstract class LocationBackendService extends Service {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() throws RemoteException {
|
public void close() throws RemoteException {
|
||||||
|
onClose();
|
||||||
callback = null;
|
callback = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,13 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest package="org.microg.nlp.api.sample"
|
<manifest
|
||||||
|
package="org.microg.nlp.api.sample"
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
<uses-sdk android:minSdkVersion="19" />
|
<uses-sdk android:minSdkVersion="19" />
|
||||||
<application
|
<application
|
||||||
android:icon="@drawable/icon"
|
android:icon="@drawable/icon"
|
||||||
android:label="@string/app_name">
|
android:label="@string/app_name">
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".SampleBackendService"
|
android:name=".SampleBackendService"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
|
@ -14,6 +16,7 @@
|
||||||
<action android:name="org.microg.nlp.LOCATION_BACKEND" />
|
<action android:name="org.microg.nlp.LOCATION_BACKEND" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
<service
|
<service
|
||||||
android:name=".SecondSampleService"
|
android:name=".SecondSampleService"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
|
@ -30,5 +33,14 @@
|
||||||
android:name=".SecondSettings"
|
android:name=".SecondSettings"
|
||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:label="Second Settings Activity" />
|
android:label="Second Settings Activity" />
|
||||||
|
|
||||||
|
<service
|
||||||
|
android:name=".ThirdSampleService"
|
||||||
|
android:exported="true"
|
||||||
|
android:label="NLPV2-Random">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="org.microg.nlp.LOCATION_BACKEND" />
|
||||||
|
</intent-filter>
|
||||||
|
</service>
|
||||||
</application>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
47
sample/src/org/microg/nlp/api/sample/ThirdSampleService.java
Normal file
47
sample/src/org/microg/nlp/api/sample/ThirdSampleService.java
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
package org.microg.nlp.api.sample;
|
||||||
|
|
||||||
|
import android.location.Location;
|
||||||
|
import android.util.Log;
|
||||||
|
import org.microg.nlp.api.LocationBackendService;
|
||||||
|
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class ThirdSampleService extends LocationBackendService {
|
||||||
|
private static final String TAG = ThirdSampleService.class.getName();
|
||||||
|
|
||||||
|
private Thread regular;
|
||||||
|
private Random random = new Random();
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onOpen() {
|
||||||
|
super.onOpen();
|
||||||
|
regular = new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
synchronized (regular) {
|
||||||
|
while (!regular.isInterrupted()) {
|
||||||
|
try {
|
||||||
|
regular.wait(60000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Location location = new Location("random");
|
||||||
|
location.setLatitude(random.nextDouble() * 90);
|
||||||
|
location.setLongitude(random.nextDouble() * 90);
|
||||||
|
location.setAccuracy(random.nextFloat() * 90);
|
||||||
|
Log.d(TAG, "Just reported: " + location);
|
||||||
|
report(location);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
regular.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onClose() {
|
||||||
|
if (regular != null && regular.isAlive()) {
|
||||||
|
regular.interrupt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue