summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorLeith Bade <leith@mapbox.com>2014-11-23 19:02:01 +1100
committerLeith Bade <leith@mapbox.com>2014-11-23 19:02:01 +1100
commitdb68e86a95f527876dc84aff09f7f97b67efa707 (patch)
treeb77dbba659628a9975eaf1c82da2a021a64475e6 /android
parent5c33d88bbfe1d03c47d631e6d7cc20321805b104 (diff)
downloadqtlocation-mapboxgl-db68e86a95f527876dc84aff09f7f97b67efa707.tar.gz
Add gps button
Diffstat (limited to 'android')
-rw-r--r--android/java/app/src/main/AndroidManifest.xml10
-rw-r--r--android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java72
-rw-r--r--android/java/app/src/main/res/drawable-hdpi/ic_action_location_found.pngbin0 -> 722 bytes
-rw-r--r--android/java/app/src/main/res/drawable-mdpi/ic_action_location_found.pngbin0 -> 484 bytes
-rw-r--r--android/java/app/src/main/res/drawable-xhdpi/ic_action_location_found.pngbin0 -> 994 bytes
-rw-r--r--android/java/app/src/main/res/drawable-xxhdpi/ic_action_location_found.pngbin0 -> 1432 bytes
-rw-r--r--android/java/app/src/main/res/layout/activity_main.xml8
-rw-r--r--android/java/app/src/main/res/menu/menu_main.xml7
-rw-r--r--android/java/app/src/main/res/values/strings.xml2
-rw-r--r--android/java/lib/src/main/AndroidManifest.xml2
-rw-r--r--android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLat.java2
-rw-r--r--android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLatZoom.java51
12 files changed, 94 insertions, 60 deletions
diff --git a/android/java/app/src/main/AndroidManifest.xml b/android/java/app/src/main/AndroidManifest.xml
index 7776d70980..bd9d2da06d 100644
--- a/android/java/app/src/main/AndroidManifest.xml
+++ b/android/java/app/src/main/AndroidManifest.xml
@@ -1,19 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.mapbox.mapboxgl.app" >
+ package="com.mapbox.mapboxgl.app">
+
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<application
android:allowBackup="false"
android:icon="@drawable/icon_burned"
android:label="@string/app_name"
- android:theme="@style/AppTheme" >
+ android:theme="@style/AppTheme">
<activity
android:name="com.mapbox.mapboxgl.app.MainActivity"
android:label="@string/app_name"
- android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize" >
+ android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
-
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
diff --git a/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java b/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java
index 12707ff493..28b04a9cf3 100644
--- a/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java
+++ b/android/java/app/src/main/java/com/mapbox/mapboxgl/app/MainActivity.java
@@ -1,16 +1,22 @@
package com.mapbox.mapboxgl.app;
+import android.location.Criteria;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
import android.os.Bundle;
-import android.support.v7.app.ActionBar;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
-import com.mapbox.mapboxgl.lib.MapView;
+import com.mapbox.mapboxgl.lib.LonLatZoom;
public class MainActivity extends ActionBarActivity {
@@ -42,18 +48,70 @@ public class MainActivity extends ActionBarActivity {
setContentView(R.layout.activity_main);
mMapFragment = (MapFragment)getSupportFragmentManager().findFragmentById(R.id.fragment_map);
+ // Add a toolbar as the action bar
+ Toolbar mainToolbar = (Toolbar)findViewById(R.id.toolbar_main);
+ setSupportActionBar(mainToolbar);
+ getSupportActionBar().setDisplayShowTitleEnabled(false);
+
// TODO move to layout file and save state
// Add the spinner to select map styles
Spinner styleSpinner = (Spinner)findViewById(R.id.spinner_style);
- ArrayAdapter styleAdapter = ArrayAdapter.createFromResource(this,
+ ArrayAdapter styleAdapter = ArrayAdapter.createFromResource(getSupportActionBar().getThemedContext(),
R.array.style_list, android.R.layout.simple_spinner_dropdown_item);
styleSpinner.setAdapter(styleAdapter);
styleSpinner.setOnItemSelectedListener(new StyleSpinnerListener());
+ }
- // Add a toolbar as the action bar
- Toolbar mainToolbar = (Toolbar)findViewById(R.id.toolbar_main);
- setSupportActionBar(mainToolbar);
- getSupportActionBar().setDisplayShowTitleEnabled(false);
+ // Adds items to the action bar menu
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.menu_main, menu);
+ return super.onCreateOptionsMenu(menu);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ // Handle presses on the action bar items
+ switch (item.getItemId()) {
+ case R.id.action_gps:
+ // Get a GPS position
+ LocationManager locationManager = (LocationManager)getSystemService(getApplicationContext().LOCATION_SERVICE);
+ String provider = locationManager.getBestProvider(new Criteria(), true);
+ Location location = locationManager.getLastKnownLocation(provider);
+ LonLatZoom coordinate = new LonLatZoom(location.getLongitude(), location.getLatitude(), 15);
+ mMapFragment.getMap().setCenterCoordinate(coordinate, true);
+ locationManager.requestSingleUpdate(provider, new MyLocationListener(), null);
+ return true;
+
+ default:
+ return super.onOptionsItemSelected(item);
+ }
+ }
+
+ // This class handles location events
+ private class MyLocationListener implements LocationListener {
+
+ @Override
+ public void onLocationChanged(Location location) {
+ LonLatZoom coordinate = new LonLatZoom(location.getLongitude(), location.getLatitude(), 15);
+ mMapFragment.getMap().setCenterCoordinate(coordinate, true);
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ // Do nothing
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ // Do nothing
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ // Do nothing
+ }
}
// This class handles navigation events
diff --git a/android/java/app/src/main/res/drawable-hdpi/ic_action_location_found.png b/android/java/app/src/main/res/drawable-hdpi/ic_action_location_found.png
new file mode 100644
index 0000000000..e1bf5807b0
--- /dev/null
+++ b/android/java/app/src/main/res/drawable-hdpi/ic_action_location_found.png
Binary files differ
diff --git a/android/java/app/src/main/res/drawable-mdpi/ic_action_location_found.png b/android/java/app/src/main/res/drawable-mdpi/ic_action_location_found.png
new file mode 100644
index 0000000000..33f660f2d8
--- /dev/null
+++ b/android/java/app/src/main/res/drawable-mdpi/ic_action_location_found.png
Binary files differ
diff --git a/android/java/app/src/main/res/drawable-xhdpi/ic_action_location_found.png b/android/java/app/src/main/res/drawable-xhdpi/ic_action_location_found.png
new file mode 100644
index 0000000000..4c06441f9a
--- /dev/null
+++ b/android/java/app/src/main/res/drawable-xhdpi/ic_action_location_found.png
Binary files differ
diff --git a/android/java/app/src/main/res/drawable-xxhdpi/ic_action_location_found.png b/android/java/app/src/main/res/drawable-xxhdpi/ic_action_location_found.png
new file mode 100644
index 0000000000..43f18ea01d
--- /dev/null
+++ b/android/java/app/src/main/res/drawable-xxhdpi/ic_action_location_found.png
Binary files differ
diff --git a/android/java/app/src/main/res/layout/activity_main.xml b/android/java/app/src/main/res/layout/activity_main.xml
index 478903d509..fb6e894d27 100644
--- a/android/java/app/src/main/res/layout/activity_main.xml
+++ b/android/java/app/src/main/res/layout/activity_main.xml
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar_main"
- android:layout_height="?attr/actionBarSize"
+ android:layout_height="wrap_content"
android:layout_width="match_parent"
+ android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary">
-
<Spinner
android:id="@+id/spinner_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</android.support.v7.widget.Toolbar>
- <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
+ <fragment
tools:context="${packageName}.${activityClass}"
android:name="com.mapbox.mapboxgl.app.MapFragment"
android:id="@+id/fragment_map"
diff --git a/android/java/app/src/main/res/menu/menu_main.xml b/android/java/app/src/main/res/menu/menu_main.xml
new file mode 100644
index 0000000000..44e997e8f0
--- /dev/null
+++ b/android/java/app/src/main/res/menu/menu_main.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
+ <item android:id="@+id/action_gps"
+ android:icon="@drawable/ic_action_location_found"
+ android:title="@string/action_gps"
+ app:showAsAction="ifRoom" />
+</menu> \ No newline at end of file
diff --git a/android/java/app/src/main/res/values/strings.xml b/android/java/app/src/main/res/values/strings.xml
index 4fc9298f4c..d7698f0db4 100644
--- a/android/java/app/src/main/res/values/strings.xml
+++ b/android/java/app/src/main/res/values/strings.xml
@@ -3,6 +3,8 @@
<string name="app_name">Mapbox GL</string>
+ <string name="action_gps">Go to GPS location</string>
+
<string-array name="style_list">
<item>Bright</item>
<item>Basic</item>
diff --git a/android/java/lib/src/main/AndroidManifest.xml b/android/java/lib/src/main/AndroidManifest.xml
index 22b0afbc30..7c7dac9a01 100644
--- a/android/java/lib/src/main/AndroidManifest.xml
+++ b/android/java/lib/src/main/AndroidManifest.xml
@@ -1,5 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.mapbox.mapboxgl.lib" >
+ package="com.mapbox.mapboxgl.lib">
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLat.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLat.java
index 69e9a68351..a36548fe3b 100644
--- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLat.java
+++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLat.java
@@ -23,7 +23,7 @@ public class LonLat implements Parcelable {
this.lat = lat;
}
- private LonLat(Parcel in) {
+ protected LonLat(Parcel in) {
lon = in.readDouble();
lat = in.readDouble();
}
diff --git a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLatZoom.java b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLatZoom.java
index 8850520284..fd78e9356e 100644
--- a/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLatZoom.java
+++ b/android/java/lib/src/main/java/com/mapbox/mapboxgl/lib/LonLatZoom.java
@@ -3,7 +3,7 @@ package com.mapbox.mapboxgl.lib;
import android.os.Parcel;
import android.os.Parcelable;
-public class LonLatZoom implements Parcelable {
+public class LonLatZoom extends LonLat implements Parcelable {
public static final Parcelable.Creator<LonLatZoom> CREATOR = new Parcelable.Creator<LonLatZoom>() {
public LonLatZoom createFromParcel(Parcel in) {
@@ -15,44 +15,23 @@ public class LonLatZoom implements Parcelable {
}
};
- private double lon;
- private double lat;
private double zoom;
public LonLatZoom(double lon, double lat, double zoom) {
- this.lon = lon;
- this.lat = lat;
+ super(lon, lat);
this.zoom = zoom;
}
public LonLatZoom(LonLat lonLat, double zoom) {
- this.lon = lonLat.getLon();
- this.lat = lonLat.getLat();
+ super(lonLat.getLon(), lonLat.getLat());
this.zoom = zoom;
}
private LonLatZoom(Parcel in) {
- lon = in.readDouble();
- lat = in.readDouble();
+ super(in);
zoom = in.readDouble();
}
- public double getLon() {
- return lon;
- }
-
- public void setLon(double lon) {
- this.lon = lon;
- }
-
- public double getLat() {
- return lat;
- }
-
- public void setLat(double lat) {
- this.lat = lat;
- }
-
public double getZoom() {
return zoom;
}
@@ -61,25 +40,12 @@ public class LonLatZoom implements Parcelable {
this.zoom = zoom;
}
- public LonLat getLonLat() {
- return new LonLat(lon, lat);
- }
-
- public void setLonLat(LonLat lonLat) {
- this.lon = lonLat.getLon();
- this.lat = lonLat.getLat();
- }
-
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
long temp;
- temp = Double.doubleToLongBits(lat);
- result = prime * result + (int) (temp ^ (temp >>> 32));
- temp = Double.doubleToLongBits(lon);
- result = prime * result + (int) (temp ^ (temp >>> 32));
- temp = Double.doubleToLongBits(zoom);
+ temp = super.hashCode();
result = prime * result + (int) (temp ^ (temp >>> 32));
return result;
}
@@ -93,12 +59,12 @@ public class LonLatZoom implements Parcelable {
if (getClass() != obj.getClass())
return false;
LonLatZoom other = (LonLatZoom) obj;
- return Double.doubleToLongBits(lat) == Double.doubleToLongBits(other.lat) && Double.doubleToLongBits(lon) == Double.doubleToLongBits(other.lon) && Double.doubleToLongBits(zoom) == Double.doubleToLongBits(other.zoom);
+ return super.equals(obj) && Double.doubleToLongBits(zoom) == Double.doubleToLongBits(other.zoom);
}
@Override
public String toString() {
- return "LonLatZoom [lon=" + lon + ", lat=" + lat + ", zoom=" + zoom
+ return "LonLatZoom [lon=" + super.getLon() + ", lat=" + super.getLat() + ", zoom=" + zoom
+ "]";
}
@@ -109,8 +75,7 @@ public class LonLatZoom implements Parcelable {
@Override
public void writeToParcel(Parcel out, int flags) {
- out.writeDouble(lon);
- out.writeDouble(lat);
+ super.writeToParcel(out, flags);
out.writeDouble(zoom);
}