Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
9393aac
update test app with new location logic, including AndroidLocationEngine
zugaldia Jan 20, 2017
a7836e0
okhttp dependency and telemetry extra fields
zugaldia Jan 20, 2017
1e99977
extracted exponential backoff logic
zugaldia Jan 20, 2017
c11022d
telemetry http client
zugaldia Jan 20, 2017
0ff615a
telemetry background service
zugaldia Jan 20, 2017
22c0747
refactored telemetry utils used for event building
zugaldia Jan 20, 2017
1a36f92
core MapboxTelemetry object
zugaldia Jan 20, 2017
60ba0a2
remove unused import
zugaldia Jan 20, 2017
a17a083
add a publish-local rule for local maven repo access and fix required…
zugaldia Jan 20, 2017
18c90e7
a few bug fixes and enhanced logging after integration with a standal…
zugaldia Jan 20, 2017
bca6b32
remove unused key/attributes and make their name consistent
zugaldia Jan 23, 2017
ea7325e
make method names consistent for map events
zugaldia Jan 23, 2017
ee1a353
simplify constants for rotation and lat/lon data
zugaldia Jan 23, 2017
8f3634e
round and scale location values
zugaldia Jan 23, 2017
351531f
respect user preferences and send turnstile event when appropriate
zugaldia Jan 23, 2017
a53af22
reformat
zugaldia Jan 24, 2017
62adcd1
several improvements to the overal flow
zugaldia Jan 24, 2017
82e960d
match ios value
zugaldia Jan 24, 2017
705b201
wrap request build for safety
zugaldia Jan 24, 2017
20e49ba
avoid a permissions exception
zugaldia Jan 24, 2017
45448da
added synchronized to getInstance creation
zugaldia Jan 24, 2017
5331352
extract TelemetryConstants.TELEMETRY_SERVICE_NAME constant
zugaldia Jan 24, 2017
23c449d
wrap logging into another TelemetryException
zugaldia Jan 24, 2017
35991e0
remove unnecessary editor.commit()
zugaldia Jan 24, 2017
8693008
remove extra line
zugaldia Jan 24, 2017
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,16 @@ publish-android:
cd mapbox; ./gradlew :libandroid-services:uploadArchives
cd mapbox; ./gradlew :libandroid-ui:uploadArchives

publish-local:
# This publishes to ~/.m2/repository/com/mapbox/mapboxsdk
cd mapbox; ./gradlew :libjava-core:install
cd mapbox; ./gradlew :libjava-geojson:install
cd mapbox; ./gradlew :libjava-services:install
cd mapbox; ./gradlew :libjava-services-rx:install
# cd mapbox; ./gradlew :libandroid-telemetry:install
# cd mapbox; ./gradlew :libandroid-services:install
# cd mapbox; ./gradlew :libandroid-ui:install

dex-count:
cd mapbox; ./gradlew countDebugDexMethods
cd mapbox; ./gradlew countReleaseDexMethods
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,27 +17,22 @@
import com.mapbox.services.android.telemetry.location.LocationEnginePriority;
import com.mapbox.services.android.telemetry.permissions.PermissionsManager;

import java.util.concurrent.CopyOnWriteArrayList;

/**
* Sample LocationEngine using Google Play Services
*/
public class GoogleLocationEngine implements LocationEngine,
public class GoogleLocationEngine extends LocationEngine implements
GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, LocationListener {

private static final String LOG_TAG = GoogleLocationEngine.class.getSimpleName();

private static LocationEngine instance;

private Context context;
private CopyOnWriteArrayList<LocationEngineListener> locationListeners;
private GoogleApiClient googleApiClient;

private int priority;

public GoogleLocationEngine(Context context) {
super();
this.context = context;
locationListeners = new CopyOnWriteArrayList<>();
googleApiClient = new GoogleApiClient.Builder(context)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
Expand Down Expand Up @@ -74,7 +69,7 @@ public boolean isConnected() {

@Override
public void onConnected(@Nullable Bundle bundle) {
for (LocationEngineListener listener : this.locationListeners) {
for (LocationEngineListener listener : locationListeners) {
listener.onConnected();
}
}
Expand All @@ -89,39 +84,16 @@ public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
Log.d(LOG_TAG, "Connection failed:" + connectionResult.getErrorMessage());
}

@Override
public int getPriority() {
return priority;
}

@Override
public void setPriority(int priority) {
this.priority = priority;
}

@Override
public Location getLastLocation() {
if (googleApiClient.isConnected()
&& PermissionsManager.isPermissionGranted(context, PermissionsManager.FINE_LOCATION_PERMISSION)) {
if (googleApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context)) {
//noinspection MissingPermission
return LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
}

return null;
}

@Override
public void addLocationEngineListener(LocationEngineListener listener) {
if (!this.locationListeners.contains(listener)) {
this.locationListeners.add(listener);
}
}

@Override
public boolean removeLocationEngineListener(LocationEngineListener listener) {
return this.locationListeners.remove(listener);
}

@Override
public void requestLocationUpdates() {
// Common params
Expand All @@ -140,8 +112,10 @@ public void requestLocationUpdates() {
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

//noinspection MissingPermission
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this);
if (googleApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context)) {
//noinspection MissingPermission
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, request, this);
}
}

@Override
Expand All @@ -151,7 +125,7 @@ public void removeLocationUpdates() {

@Override
public void onLocationChanged(Location location) {
for (LocationEngineListener listener : this.locationListeners) {
for (LocationEngineListener listener : locationListeners) {
listener.onLocationChanged(location);
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
package com.mapbox.services.android.testapp.location;

import android.location.Location;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;

import com.mapbox.services.android.telemetry.location.AndroidLocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEngineListener;
import com.mapbox.services.android.telemetry.location.LocationEnginePriority;
import com.mapbox.services.android.testapp.R;

public class LocationEngineActivity extends AppCompatActivity
Expand Down Expand Up @@ -69,16 +69,18 @@ public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
// Mock
locationEngine = new MockLocationEngine();
} else if (engineName.equals(locationEngines[2])) {
// Android
locationEngine = AndroidLocationEngine.getLocationEngine(this);
} else if (engineName.equals(locationEngines[3])) {
// Lost
locationEngine = LostLocationEngine.getLocationEngine(this);
} else if (engineName.equals(locationEngines[3])) {
} else if (engineName.equals(locationEngines[4])) {
// Google Play Services
locationEngine = GoogleLocationEngine.getLocationEngine(this);
}

if (!engineName.equals(locationEngines[0]) && locationEngine != null) {
// Not None
locationEngine.setPriority(LocationEnginePriority.HIGH_ACCURACY);
locationEngine.addLocationEngineListener(this);
locationEngine.activate();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,27 +13,22 @@
import com.mapzen.android.lost.api.LocationServices;
import com.mapzen.android.lost.api.LostApiClient;

import java.util.concurrent.CopyOnWriteArrayList;

/**
* Sample LocationEngine using the Open Source Lost library
*/
public class LostLocationEngine implements
LocationEngine, LostApiClient.ConnectionCallbacks, LocationListener {
public class LostLocationEngine extends LocationEngine implements
LostApiClient.ConnectionCallbacks, LocationListener {

private static final String LOG_TAG = LostLocationEngine.class.getSimpleName();

private static LocationEngine instance;

private Context context;
private CopyOnWriteArrayList<LocationEngineListener> locationListeners;
private LostApiClient lostApiClient;

private int priority;

public LostLocationEngine(Context context) {
super();
this.context = context;
locationListeners = new CopyOnWriteArrayList<>();
lostApiClient = new LostApiClient.Builder(context)
.addConnectionCallbacks(this)
.build();
Expand Down Expand Up @@ -68,7 +63,7 @@ public boolean isConnected() {

@Override
public void onConnected() {
for (LocationEngineListener listener : this.locationListeners) {
for (LocationEngineListener listener : locationListeners) {
listener.onConnected();
}
}
Expand All @@ -78,39 +73,16 @@ public void onConnectionSuspended() {
Log.d(LOG_TAG, "Connection suspended.");
}

@Override
public int getPriority() {
return priority;
}

@Override
public void setPriority(int priority) {
this.priority = priority;
}

@Override
public Location getLastLocation() {
if (lostApiClient.isConnected()
&& PermissionsManager.isPermissionGranted(context, PermissionsManager.FINE_LOCATION_PERMISSION)) {
if (lostApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context)) {
//noinspection MissingPermission
return LocationServices.FusedLocationApi.getLastLocation(lostApiClient);
}

return null;
}

@Override
public void addLocationEngineListener(LocationEngineListener listener) {
if (!this.locationListeners.contains(listener)) {
this.locationListeners.add(listener);
}
}

@Override
public boolean removeLocationEngineListener(LocationEngineListener listener) {
return this.locationListeners.remove(listener);
}

@Override
public void requestLocationUpdates() {
// Common params
Expand All @@ -129,8 +101,10 @@ public void requestLocationUpdates() {
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}

//noinspection MissingPermission
LocationServices.FusedLocationApi.requestLocationUpdates(lostApiClient, request, this);
if (lostApiClient.isConnected() && PermissionsManager.areLocationPermissionsGranted(context)) {
//noinspection MissingPermission
LocationServices.FusedLocationApi.requestLocationUpdates(lostApiClient, request, this);
}
}

@Override
Expand All @@ -140,7 +114,7 @@ public void removeLocationUpdates() {

@Override
public void onLocationChanged(Location location) {
for (LocationEngineListener listener : this.locationListeners) {
for (LocationEngineListener listener : locationListeners) {
listener.onLocationChanged(location);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,10 @@
import com.mapbox.services.android.telemetry.location.LocationEngine;
import com.mapbox.services.android.telemetry.location.LocationEngineListener;

import java.util.concurrent.CopyOnWriteArrayList;

/**
* Sample LocationEngine that provides mocked locations simulating GPS updates
*/
public class MockLocationEngine implements LocationEngine {
public class MockLocationEngine extends LocationEngine {

// Mocked data
private static final int UPDATE_INTERVAL_MS = 1000;
Expand All @@ -22,21 +20,19 @@ public class MockLocationEngine implements LocationEngine {
new double[] {38.909623, -77.043413},
new double[] {38.909624, -77.043414}};

private CopyOnWriteArrayList<LocationEngineListener> locationListeners;

private Handler handler;
int currentIndex;

public MockLocationEngine() {
locationListeners = new CopyOnWriteArrayList<>();
super();
}

@Override
public void activate() {
currentIndex = 0;

// "Connection" is immediate here
for (LocationEngineListener listener : this.locationListeners) {
for (LocationEngineListener listener : locationListeners) {
listener.onConnected();
}
}
Expand All @@ -51,33 +47,11 @@ public boolean isConnected() {
return true; // Always connected
}

@Override
public int getPriority() {
return 0; // No effect
}

@Override
public void setPriority(int priority) {
// No effect
}

@Override
public Location getLastLocation() {
return getNextLocation();
}

@Override
public void addLocationEngineListener(LocationEngineListener listener) {
if (!this.locationListeners.contains(listener)) {
this.locationListeners.add(listener);
}
}

@Override
public boolean removeLocationEngineListener(LocationEngineListener listener) {
return this.locationListeners.remove(listener);
}

@Override
public void requestLocationUpdates() {
// Fake regular updates with a handler
Expand Down
1 change: 1 addition & 0 deletions mapbox/app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
<string-array name="location_engines">
<item>None</item>
<item>Mock</item>
<item>Android</item>
<item>Lost</item>
<item>Google Play Services</item>
</string-array>
Expand Down
10 changes: 10 additions & 0 deletions mapbox/libandroid-telemetry/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ android {
versionCode rootProject.ext.MasVersionCode
versionName rootProject.ext.MasVersionName
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

// Telemetry
buildConfigField "String", "MAPBOX_EVENTS_USER_AGENT_BASE", String.format("\"MapboxEventsAndroid/%s\"", project.VERSION_NAME)
buildConfigField "String", "MAPBOX_VERSION_STRING", String.format("\"Mapbox/%s\"", project.VERSION_NAME)
}

compileOptions {
Expand All @@ -29,6 +33,12 @@ dependencies {
// Android Support libraries
compile 'com.android.support:appcompat-v7:25.1.0'

// Timber for logging
compile 'com.jakewharton.timber:timber:4.5.0'

// OkHttp for network requests
compile 'com.squareup.okhttp3:okhttp:3.5.0'

// Testing
testCompile 'junit:junit:4.12'
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
Expand Down
7 changes: 1 addition & 6 deletions mapbox/libandroid-telemetry/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mapbox.services.android.telemetry">

<application android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
>

</application>

android:supportsRtl="true" />
</manifest>
Loading