Android Open Source - SmartNavi Places Auto Complete






From Project

Back to project page SmartNavi.

License

The source code is released under:

Apache License

If you think the Android project SmartNavi listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.ilm.sandwich.helferklassen;
//from   w  w  w .j a  v  a  2 s  .co m
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.ilm.sandwich.Config;
import com.ilm.sandwich.GoogleMapActivity;

import android.database.MatrixCursor;
import android.os.AsyncTask;

public class PlacesAutoComplete extends AsyncTask<String, String, StringBuilder> {

  //private static final String  LOG_TAG        = "PlacesAutocomplete";
  private static final String  TYPE_AUTOCOMPLETE  = "/autocomplete";
  private static final String  OUT_JSON      = "/json";

  @Override
  protected StringBuilder doInBackground(String... input) {

    HttpURLConnection conn = null;
    StringBuilder jsonResults = new StringBuilder();
    
    
    String randomAPI;
    if (Math.random() > 0.5) {
      //Log.d("Zufall_Places", "API MA");
      randomAPI = Config.PLACES_API_KEY_MA;
    } else {
      //Log.d("Zufall_Places", "API CH");
      randomAPI = Config.PLACES_API_KEY_CH;
    }
    
    
    try {

      StringBuilder sb = new StringBuilder(Config.PLACES_API_URL + TYPE_AUTOCOMPLETE + OUT_JSON);
      sb.append("?sensor=true&key=" + randomAPI);
    //  sb.append("&components=country:" + Locale.getDefault().getLanguage());
      sb.append("&location=" + Rechnung.startLat + "," + Rechnung.startLon);
      sb.append("&radius=1000");
      sb.append("&input=" + URLEncoder.encode(input[0], "utf8"));

      URL url = new URL(sb.toString());
      conn = (HttpURLConnection) url.openConnection();
      InputStreamReader in = new InputStreamReader(conn.getInputStream());

      // Load the results into a StringBuilder
      int read;
      char[] buff = new char[1024];
      while ((read = in.read(buff)) != -1) {
        jsonResults.append(buff, 0, read);
      }
      
      
      
      /*
      // Fallback
      JSONObject jsonObj = new JSONObject(jsonResults.toString());
      String status = (String) jsonObj.get("status");
       
      if (status.equals("OVER_QUERY_LIMIT")) {
        // API key change
        Config.PLACES_API_KEY = Config.PLACES_API_KEY_CH;
        Config.PLACES_API_FALLBACK++;
      }
      */
      
    } catch (MalformedURLException e) {
      //Log.e(LOG_TAG, "Error processing Places API URL", e);
    } catch (IOException e) {
      //Log.e(LOG_TAG, "Error connecting to Places API", e);
    } finally {
      if (conn != null) {
        conn.disconnect();
      }
    }

    return jsonResults;
  }

  @Override
  protected void onPostExecute(StringBuilder jsonResults) {
    try {
      // Create a JSON object hierarchy from the results
      JSONObject jsonObj = new JSONObject(jsonResults.toString());
      JSONArray predsJsonArray = jsonObj.getJSONArray("predictions");

      // builds MatrixCursor for autocomplete search view
      MatrixCursor cursor = new MatrixCursor(Config.COLUMNS);
      for (int i = 0; i < predsJsonArray.length(); i++) {
        int pos = i + 1;
        cursor.addRow(new String[] { "" + pos, predsJsonArray.getJSONObject(i).getString("description") });
      }
      
      GoogleMapActivity.cursor = cursor;
      GoogleMapActivity.changeSuggestionAdapter.sendEmptyMessage(0);
      /*
      Karte.mSuggestionsAdapter = new SuggestionsAdapter(Karte.sbContext, cursor);
      Karte.searchView.setSuggestionsAdapter(Karte.mSuggestionsAdapter);
      Karte.searchView.refreshDrawableState();
      Karte.suggestionsInProgress = false;
      */
      //Log.d("updateAutocompleteAdapter", "Cursor was set");

    } catch (JSONException e) {
      //Log.e(LOG_TAG, "Cannot process JSON results", e);
    }
  }
}




Java Source Code List

com.ilm.sandwich.BuildConfig.java
com.ilm.sandwich.Config.java
com.ilm.sandwich.GoogleMapActivity.java
com.ilm.sandwich.Info.java
com.ilm.sandwich.MySupportMapFragment.java
com.ilm.sandwich.OsmMapActivity.java
com.ilm.sandwich.Settings.java
com.ilm.sandwich.Smartgeo.java
com.ilm.sandwich.StartChooser.java
com.ilm.sandwich.TouchableWrapper.java
com.ilm.sandwich.helferklassen.HttpRequests.java
com.ilm.sandwich.helferklassen.Locationer.java
com.ilm.sandwich.helferklassen.MapDownload.java
com.ilm.sandwich.helferklassen.MyItemizedOverlay.java
com.ilm.sandwich.helferklassen.PlacesAutoComplete.java
com.ilm.sandwich.helferklassen.PlacesTextSearch.java
com.ilm.sandwich.helferklassen.Rechnung.java
com.ilm.sandwich.helferklassen.SuggestionsAdapter.java
org.osmdroid.bonuspack.BuildConfig.java
org.osmdroid.bonuspack.BuildConfig.java
org.osmdroid.bonuspack.cachemanager.CacheManager.java
org.osmdroid.bonuspack.clustering.GridMarkerClusterer.java
org.osmdroid.bonuspack.clustering.MarkerClusterer.java
org.osmdroid.bonuspack.clustering.StaticCluster.java
org.osmdroid.bonuspack.kml.ColorStyle.java
org.osmdroid.bonuspack.kml.IconStyle.java
org.osmdroid.bonuspack.kml.KmlDocument.java
org.osmdroid.bonuspack.kml.KmlFeature.java
org.osmdroid.bonuspack.kml.KmlFolder.java
org.osmdroid.bonuspack.kml.KmlGeometry.java
org.osmdroid.bonuspack.kml.KmlGroundOverlay.java
org.osmdroid.bonuspack.kml.KmlLineString.java
org.osmdroid.bonuspack.kml.KmlMultiGeometry.java
org.osmdroid.bonuspack.kml.KmlPlacemark.java
org.osmdroid.bonuspack.kml.KmlPoint.java
org.osmdroid.bonuspack.kml.KmlPolygon.java
org.osmdroid.bonuspack.kml.LineStyle.java
org.osmdroid.bonuspack.kml.Style.java
org.osmdroid.bonuspack.location.FlickrPOIProvider.java
org.osmdroid.bonuspack.location.GeoNamesPOIProvider.java
org.osmdroid.bonuspack.location.GeocoderGisgraphy.java
org.osmdroid.bonuspack.location.GeocoderNominatimOld.java
org.osmdroid.bonuspack.location.GeocoderNominatim.java
org.osmdroid.bonuspack.location.NominatimPOIProvider.java
org.osmdroid.bonuspack.location.POI.java
org.osmdroid.bonuspack.location.PicasaPOIProvider.java
org.osmdroid.bonuspack.mapsforge.GenericMapView.java
org.osmdroid.bonuspack.mapsforge.MapsForgeTileModuleProvider.java
org.osmdroid.bonuspack.mapsforge.MapsForgeTileProvider.java
org.osmdroid.bonuspack.mapsforge.MapsForgeTileSource.java
org.osmdroid.bonuspack.overlays.DefaultInfoWindow.java
org.osmdroid.bonuspack.overlays.ExtendedOverlayItem.java
org.osmdroid.bonuspack.overlays.FolderOverlay.java
org.osmdroid.bonuspack.overlays.GroundOverlay.java
org.osmdroid.bonuspack.overlays.InfoWindow.java
org.osmdroid.bonuspack.overlays.ItemizedOverlayWithBubble.java
org.osmdroid.bonuspack.overlays.MapEventsOverlay.java
org.osmdroid.bonuspack.overlays.MapEventsReceiver.java
org.osmdroid.bonuspack.overlays.MarkerInfoWindow.java
org.osmdroid.bonuspack.overlays.Marker.java
org.osmdroid.bonuspack.overlays.Polygon.java
org.osmdroid.bonuspack.overlays.Polyline.java
org.osmdroid.bonuspack.routing.GoogleRoadManager.java
org.osmdroid.bonuspack.routing.MapQuestRoadManager.java
org.osmdroid.bonuspack.routing.OSRMRoadManager.java
org.osmdroid.bonuspack.routing.RoadLeg.java
org.osmdroid.bonuspack.routing.RoadManager.java
org.osmdroid.bonuspack.routing.RoadNode.java
org.osmdroid.bonuspack.routing.Road.java
org.osmdroid.bonuspack.utils.BonusPackHelper.java
org.osmdroid.bonuspack.utils.DouglasPeuckerReducer.java
org.osmdroid.bonuspack.utils.HttpConnection.java
org.osmdroid.bonuspack.utils.PolylineEncoder.java
org.osmdroid.bonuspack.utils.WebImageCache.java