diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml index 15a7e95..dcb7525 100644 --- a/src/main/AndroidManifest.xml +++ b/src/main/AndroidManifest.xml @@ -1,14 +1,15 @@ + android:versionName="1.1.1" + android:versionCode="10101" + package="org.microg.nlp.backend.nominatim"> - + + android:minSdkVersion="11" + android:targetSdkVersion="22" /> + - + + + + + + + + + diff --git a/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java b/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java index 0a4ec07..4f14148 100644 --- a/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java +++ b/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java @@ -1,10 +1,12 @@ package org.microg.nlp.backend.nominatim; import android.content.Context; +import android.content.SharedPreferences; import android.content.pm.PackageManager; import android.location.Address; import android.net.Uri; import android.os.Build; +import android.preference.PreferenceManager; import android.util.Log; import org.json.JSONArray; @@ -28,11 +30,11 @@ public class BackendService extends GeocoderBackendService { private static final String SERVICE_URL_MAPQUEST = "http://open.mapquestapi.com/nominatim/v1/"; private static final String SERVICE_URL_OSM = " http://nominatim.openstreetmap.org/"; private static final String REVERSE_GEOCODE_URL = - "%sreverse?format=json&accept-language=%s&lat=%f&lon=%f"; + "%sreverse?format=json&key=%s&accept-language=%s&lat=%f&lon=%f"; private static final String SEARCH_GEOCODE_URL = - "%ssearch?format=json&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d"; + "%ssearch?format=json&key=%s&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d"; private static final String SEARCH_GEOCODE_WITH_BOX_URL = - "%ssearch?format=json&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d" + + "%ssearch?format=json&key=%s&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d" + "&viewbox=%f,%f,%f,%f"; private static final String WIRE_LATITUDE = "lat"; private static final String WIRE_LONGITUDE = "lon"; @@ -51,8 +53,12 @@ public class BackendService extends GeocoderBackendService { @Override protected List
getFromLocation(double latitude, double longitude, int maxResults, String locale) { + + SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + String mapquestApiKey = SP.getString("api_preference", "NA"); + String url = String.format(Locale.US, REVERSE_GEOCODE_URL, SERVICE_URL_MAPQUEST, - locale.split("_")[0], latitude, longitude); + mapquestApiKey, locale.split("_")[0], latitude, longitude); try { JSONObject result = new JSONObject(new AsyncGetRequest(this, url).asyncStart().retrieveString()); @@ -84,15 +90,19 @@ private static Locale localeFromLocaleString(String localeString) { protected List
getFromLocationName(String locationName, int maxResults, double lowerLeftLatitude, double lowerLeftLongitude, double upperRightLatitude, double upperRightLongitude, String locale) { + + SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); + String mapquestApiKey = SP.getString("api_preference", "NA"); + String query = Uri.encode(locationName); String url; if (lowerLeftLatitude == 0 && lowerLeftLongitude == 0 && upperRightLatitude == 0 && upperRightLongitude == 0) { url = String.format(Locale.US, SEARCH_GEOCODE_URL, SERVICE_URL_MAPQUEST, - locale.split("_")[0], query, maxResults); + mapquestApiKey, locale.split("_")[0], query, maxResults); } else { url = String.format(Locale.US, SEARCH_GEOCODE_WITH_BOX_URL, SERVICE_URL_MAPQUEST, - locale.split("_")[0], query, maxResults, lowerLeftLongitude, + mapquestApiKey, locale.split("_")[0], query, maxResults, lowerLeftLongitude, upperRightLatitude, upperRightLongitude, lowerLeftLatitude); } try { diff --git a/src/main/java/org/microg/nlp/backend/nominatim/SettingsActivity.java b/src/main/java/org/microg/nlp/backend/nominatim/SettingsActivity.java new file mode 100644 index 0000000..354d41e --- /dev/null +++ b/src/main/java/org/microg/nlp/backend/nominatim/SettingsActivity.java @@ -0,0 +1,58 @@ +package org.microg.nlp.backend.nominatim; + +import android.content.SharedPreferences; +import android.preference.ListPreference; +import android.preference.Preference; +import android.preference.PreferenceActivity; +import android.preference.PreferenceFragment; +import android.os.Bundle; + +public class SettingsActivity extends PreferenceActivity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Display the fragment as the main content. + getFragmentManager().beginTransaction() + .replace(android.R.id.content, new PrefsFragment()).commit(); + + } + + public static class PrefsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Load the preferences from an XML resource + addPreferencesFromResource(R.xml.preferences); + setSummaries(); + getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + updatePreference(findPreference(key), key); + } + + private void setSummaries(){ + + final SharedPreferences sh = getPreferenceManager().getSharedPreferences() ; + + Preference stylePref = findPreference("api_preference"); + stylePref.setSummary(sh.getString("api_preference", "")); + + } + private void updatePreference(Preference preference, String key) { + if (preference == null) return; + if (preference instanceof ListPreference) { + ListPreference listPreference = (ListPreference) preference; + listPreference.setSummary(listPreference.getEntry()); + return; + } + SharedPreferences sharedPrefs = getPreferenceManager().getSharedPreferences(); + preference.setSummary(sharedPrefs.getString(key, "Default")); + } + } + +} \ No newline at end of file diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index ec5cbfd..db6198f 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1,5 +1,10 @@ - NominatimGeocoderBackend + Nominatim Geocoder Backend Nominatim + + MapQuest Server Access + MapQuest Developer API Key + MapQuest Developer API Key + Enter your MapQuest developer API key. diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml new file mode 100644 index 0000000..5c3a854 --- /dev/null +++ b/src/main/res/xml/preferences.xml @@ -0,0 +1,16 @@ + + + + + + + + + + \ No newline at end of file