From 21657853469d80b7d687f45d5142bfe54e3cbf24 Mon Sep 17 00:00:00 2001 From: mar-v-in Date: Fri, 7 Mar 2014 17:38:00 +0100 Subject: [PATCH] Add and use new LocationHelper --- .../org/microg/nlp/api/LocationHelper.java | 56 +++++++++++++++++++ .../nlp/api/sample/SampleBackendService.java | 8 +-- .../nlp/api/sample/SecondSampleService.java | 6 +- .../nlp/api/sample/ThirdSampleService.java | 6 +- 4 files changed, 63 insertions(+), 13 deletions(-) create mode 100644 api/src/org/microg/nlp/api/LocationHelper.java diff --git a/api/src/org/microg/nlp/api/LocationHelper.java b/api/src/org/microg/nlp/api/LocationHelper.java new file mode 100644 index 0000000..0444c38 --- /dev/null +++ b/api/src/org/microg/nlp/api/LocationHelper.java @@ -0,0 +1,56 @@ +package org.microg.nlp.api; + +import android.location.Location; + +import java.util.Collection; + +public final class LocationHelper { + private LocationHelper() { + } + + public static Location create(String source) { + return new Location(source); + } + + public static Location create(String source, double latitude, double longitude, float accuracy) { + Location location = create(source); + location.setLatitude(latitude); + location.setLongitude(longitude); + location.setAccuracy(accuracy); + return location; + } + + public static Location create(String source, double latitude, double longitude, double altitude, float accuracy) { + Location location = create(source, latitude, longitude, accuracy); + location.setAltitude(altitude); + return location; + } + + public static Location average(String source, Collection locations) { + if (locations == null || locations.size() == 0) { + return null; + } + int num = locations.size(); + double latitude = 0; + double longitude = 0; + float accuracy = 0; + int altitudes = 0; + double altitude = 0; + for (Location value : locations) { + if (value != null) { + latitude += value.getLatitude(); + longitude += value.getLongitude(); + accuracy += value.getAccuracy(); + if (value.hasAltitude()) { + altitude += value.getAltitude(); + altitudes++; + } + } + } + if (altitudes > 0) { + return create(source, latitude / num, longitude / num, altitude / altitudes, accuracy / num); + } else { + return create(source, latitude / num, longitude / num, accuracy / num); + } + } +} diff --git a/sample/src/org/microg/nlp/api/sample/SampleBackendService.java b/sample/src/org/microg/nlp/api/sample/SampleBackendService.java index f0750d1..eb8b817 100644 --- a/sample/src/org/microg/nlp/api/sample/SampleBackendService.java +++ b/sample/src/org/microg/nlp/api/sample/SampleBackendService.java @@ -3,20 +3,18 @@ package org.microg.nlp.api.sample; import android.location.Location; import android.util.Log; import org.microg.nlp.api.LocationBackendService; +import org.microg.nlp.api.LocationHelper; public class SampleBackendService extends LocationBackendService { private static final String TAG = SampleBackendService.class.getName(); @Override protected Location update() { - if (System.currentTimeMillis()%60000>2000) { + if (System.currentTimeMillis() % 60000 > 2000) { Log.d(TAG, "I decided not to answer now..."); return null; } - Location location = new Location("sample"); - location.setLatitude(42); - location.setLongitude(42); - location.setAccuracy(42); + Location location = LocationHelper.create("sample", 42, 42, 42); Log.d(TAG, "I was asked for location and I answer: " + location); return location; } diff --git a/sample/src/org/microg/nlp/api/sample/SecondSampleService.java b/sample/src/org/microg/nlp/api/sample/SecondSampleService.java index b83bb9b..4e582d2 100644 --- a/sample/src/org/microg/nlp/api/sample/SecondSampleService.java +++ b/sample/src/org/microg/nlp/api/sample/SecondSampleService.java @@ -3,16 +3,14 @@ package org.microg.nlp.api.sample; import android.location.Location; import android.util.Log; import org.microg.nlp.api.LocationBackendService; +import org.microg.nlp.api.LocationHelper; public class SecondSampleService extends LocationBackendService { private static final String TAG = SecondSampleService.class.getName(); @Override protected Location update() { - Location location = new Location("second-sample"); - location.setLatitude(13); - location.setLongitude(13); - location.setAccuracy((System.currentTimeMillis() / 1000) % 100); + Location location = LocationHelper.create("second-sample", 13, 13, (System.currentTimeMillis() / 1000) % 100); Log.d(TAG, "I was asked for location and I answer: " + location); return location; } diff --git a/sample/src/org/microg/nlp/api/sample/ThirdSampleService.java b/sample/src/org/microg/nlp/api/sample/ThirdSampleService.java index 3a10c6d..9b7206b 100644 --- a/sample/src/org/microg/nlp/api/sample/ThirdSampleService.java +++ b/sample/src/org/microg/nlp/api/sample/ThirdSampleService.java @@ -3,6 +3,7 @@ package org.microg.nlp.api.sample; import android.location.Location; import android.util.Log; import org.microg.nlp.api.LocationBackendService; +import org.microg.nlp.api.LocationHelper; import java.util.Random; @@ -25,10 +26,7 @@ public class ThirdSampleService extends LocationBackendService { } catch (InterruptedException e) { return; } - Location location = new Location("random"); - location.setLatitude(random.nextDouble() * 90); - location.setLongitude(random.nextDouble() * 90); - location.setAccuracy(random.nextFloat() * 90); + Location location = LocationHelper.create("random", random.nextDouble() * 90, random.nextDouble() * 90, random.nextFloat() * 90); Log.d(TAG, "Just reported: " + location); report(location); }