summaryrefslogtreecommitdiff
path: root/navit/android
diff options
context:
space:
mode:
authormvglasow <michael -at- vonglasow.com>2020-08-11 19:30:55 +0200
committermvglasow <michael -at- vonglasow.com>2020-08-11 19:30:55 +0200
commit131acbffd9025c8579e12b2a46d9467a15ee1e0b (patch)
treeeb0b22c5238407681ddcc905010c9a682e0fe85e /navit/android
parent4a14ba5320f3d13abdb29d7b4402bb4af1635a49 (diff)
downloadnavit-131acbffd9025c8579e12b2a46d9467a15ee1e0b.tar.gz
Add:traffic:Complete TraFF 0.8 subscription suport
Signed-off-by: mvglasow <michael -at- vonglasow.com>
Diffstat (limited to 'navit/android')
-rw-r--r--navit/android/src/org/navitproject/navit/NavitTraff.java49
1 files changed, 36 insertions, 13 deletions
diff --git a/navit/android/src/org/navitproject/navit/NavitTraff.java b/navit/android/src/org/navitproject/navit/NavitTraff.java
index 8ef738724..7ce8d51f4 100644
--- a/navit/android/src/org/navitproject/navit/NavitTraff.java
+++ b/navit/android/src/org/navitproject/navit/NavitTraff.java
@@ -116,14 +116,13 @@ public class NavitTraff extends BroadcastReceiver {
this.context.registerReceiver(this, traffFilter07);
this.context.registerReceiver(this, traffFilter08);
- /* Broadcast a poll intent */
+ /* Broadcast a poll intent to all TraFF 0.7-only receivers */
Intent outIntent = new Intent(ACTION_TRAFF_POLL);
PackageManager pm = this.context.getPackageManager();
List<ResolveInfo> receivers07 = pm.queryBroadcastReceivers(outIntent, 0);
- /* receivers with TraFF 0.8 support */
List<ResolveInfo> receivers08 = pm.queryBroadcastReceivers(new Intent(ACTION_TRAFF_GET_CAPABILITIES), 0);
if (receivers07 != null) {
- /* get receivers which support only TraFF 0.7 */
+ /* get receivers which support only TraFF 0.7 and poll them */
if (receivers08 != null)
receivers07.removeAll(receivers08);
for (ResolveInfo receiver : receivers07) {
@@ -134,16 +133,6 @@ public class NavitTraff extends BroadcastReceiver {
this.context.sendBroadcast(outIntent, Manifest.permission.ACCESS_COARSE_LOCATION);
}
}
- if (receivers08 != null) {
- for (ResolveInfo receiver : receivers08) {
- Bundle extras = new Bundle();
- extras.putString(EXTRA_PACKAGE, context.getPackageName());
- extras.putString(EXTRA_FILTER_LIST, "<filter_list><filter bbox=\"-90.0000 -180.0000 90.0000 180.0000\"/></filter_list>");
- sendTraffIntent(context, ACTION_TRAFF_SUBSCRIBE, null, extras,
- receiver.activityInfo.applicationInfo.packageName,
- Manifest.permission.ACCESS_COARSE_LOCATION, this);
- }
- }
}
void close() {
@@ -156,6 +145,40 @@ public class NavitTraff extends BroadcastReceiver {
this.context.unregisterReceiver(this);
}
+ void onFilterUpdate(String filterList) {
+ /* change existing subscriptions */
+ for (Map.Entry<String, String> entry : subscriptions.entrySet()) {
+ Bundle extras = new Bundle();
+ extras.putString(EXTRA_SUBSCRIPTION_ID, entry.getKey());
+ extras.putString(EXTRA_FILTER_LIST, filterList);
+ sendTraffIntent(context, ACTION_TRAFF_SUBSCRIPTION_CHANGE, null, extras,
+ entry.getValue(),
+ Manifest.permission.ACCESS_COARSE_LOCATION, this);
+ }
+
+ /* set up missing subscriptions */
+ PackageManager pm = this.context.getPackageManager();
+ List<ResolveInfo> receivers = pm.queryBroadcastReceivers(new Intent(ACTION_TRAFF_GET_CAPABILITIES), 0);
+ if (receivers != null) {
+ /* filter out receivers to which we are already subscribed */
+ Iterator<ResolveInfo> iter = receivers.iterator();
+ while (iter.hasNext()) {
+ ResolveInfo receiver = iter.next();
+ if (subscriptions.containsValue(receiver.activityInfo.applicationInfo.packageName))
+ iter.remove();
+ }
+
+ for (ResolveInfo receiver : receivers) {
+ Bundle extras = new Bundle();
+ extras.putString(EXTRA_PACKAGE, context.getPackageName());
+ extras.putString(EXTRA_FILTER_LIST, filterList);
+ sendTraffIntent(context, ACTION_TRAFF_SUBSCRIBE, null, extras,
+ receiver.activityInfo.applicationInfo.packageName,
+ Manifest.permission.ACCESS_COARSE_LOCATION, this);
+ }
+ }
+ }
+
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {