From 4fbbd10c6478687be081c220b9fbc194721b2b31 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 14 May 2016 13:59:08 +0200 Subject: show addresses in ShareLocation and ShowLocation --- .../conversations/ui/ShareLocationActivity.java | 32 ++++++++++ .../conversations/ui/ShowLocationActivity.java | 73 ++++++++++++++++++---- 2 files changed, 92 insertions(+), 13 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/eu/siacs/conversations/ui/ShareLocationActivity.java b/src/main/java/eu/siacs/conversations/ui/ShareLocationActivity.java index f532ab38c..cd1f8fca2 100644 --- a/src/main/java/eu/siacs/conversations/ui/ShareLocationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ShareLocationActivity.java @@ -3,6 +3,8 @@ package eu.siacs.conversations.ui; import android.annotation.TargetApi; import android.app.Activity; import android.content.Intent; +import android.location.Address; +import android.location.Geocoder; import android.location.Location; import android.os.Build; import android.os.Bundle; @@ -27,6 +29,9 @@ import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.model.LatLng; +import java.util.List; +import java.util.Locale; + public class ShareLocationActivity extends Activity implements OnMapReadyCallback, GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener, @@ -39,6 +44,7 @@ public class ShareLocationActivity extends Activity implements OnMapReadyCallbac private Button mCancelButton; private Button mShareButton; private RelativeLayout mSnackbar; + private RelativeLayout mLocationInfo; @Override protected void onCreate(Bundle savedInstanceState) { @@ -136,11 +142,37 @@ public class ShareLocationActivity extends Activity implements OnMapReadyCallbac @Override public void onLocationChanged(Location location) { + double longitude = location.getLongitude(); + double latitude = location.getLatitude(); + if (latitude != 0 && longitude != 0) { + Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); + try { + List
addresses = geoCoder.getFromLocation(latitude, longitude, 1); + + String address = ""; + if (addresses != null) { + Address Address = addresses.get(0); + StringBuilder strAddress = new StringBuilder(""); + + for (int i = 0; i < Address.getMaxAddressLineIndex(); i++) { + strAddress.append(Address.getAddressLine(i)).append("\n"); + } + address = strAddress.toString(); + address = address.substring(0, address.length()-1); //trim last \n + mLocationInfo = (RelativeLayout) findViewById(R.id.location); + TextView snackbarLocation = (TextView) findViewById(R.id.snackbar_message); + snackbarLocation.setText(address); + } + } catch (Exception e) { + e.printStackTrace(); + } + } if (this.mLastLocation == null) { centerOnLocation(new LatLng(location.getLatitude(), location.getLongitude())); this.mShareButton.setEnabled(true); this.mShareButton.setTextColor(0xde000000); this.mShareButton.setText(R.string.share); + mLocationInfo.setVisibility(View.VISIBLE); } this.mLastLocation = location; } diff --git a/src/main/java/eu/siacs/conversations/ui/ShowLocationActivity.java b/src/main/java/eu/siacs/conversations/ui/ShowLocationActivity.java index 79219a01c..d5103de9b 100644 --- a/src/main/java/eu/siacs/conversations/ui/ShowLocationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ShowLocationActivity.java @@ -3,33 +3,58 @@ package eu.siacs.conversations.ui; import android.app.ActionBar; import android.app.Activity; import android.content.Intent; -import android.location.Location; +import android.location.Address; +import android.location.Geocoder; import android.os.Bundle; import android.view.MenuItem; import android.view.View; -import android.widget.Button; +import android.widget.TextView; import eu.siacs.conversations.Config; import eu.siacs.conversations.R; -import com.google.android.gms.common.ConnectionResult; -import com.google.android.gms.common.api.GoogleApiClient; -import com.google.android.gms.location.LocationListener; -import com.google.android.gms.location.LocationRequest; -import com.google.android.gms.location.LocationServices; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.MapFragment; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.model.LatLng; +import com.google.android.gms.maps.model.Marker; import com.google.android.gms.maps.model.MarkerOptions; +import java.util.List; +import java.util.Locale; + public class ShowLocationActivity extends Activity implements OnMapReadyCallback { private GoogleMap mGoogleMap; private LatLng mLocation; private String mLocationName; + class InfoWindowAdapter implements GoogleMap.InfoWindowAdapter { + + private final View InfoWindow; + + InfoWindowAdapter() { + InfoWindow = getLayoutInflater().inflate(R.layout.show_location_infowindow, null); + } + + @Override + public View getInfoWindow(Marker marker) { + return null; + } + + @Override + public View getInfoContents(Marker marker) { + + TextView Title = ((TextView) InfoWindow.findViewById(R.id.title)); + Title.setText(marker.getTitle()); + TextView Snippet = ((TextView) InfoWindow.findViewById(R.id.snippet)); + Snippet.setText(marker.getSnippet()); + + return InfoWindow; + } + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -87,14 +112,36 @@ public class ShowLocationActivity extends Activity implements OnMapReadyCallback private void markAndCenterOnLocation(LatLng location, String name) { this.mGoogleMap.clear(); - MarkerOptions options = new MarkerOptions(); - options.position(location); - if (name != null) { + MarkerOptions options = new MarkerOptions(); + options.position(location); + double longitude = mLocation.longitude; + double latitude = mLocation.latitude; + if (latitude != 0 && longitude != 0) { + Geocoder geoCoder = new Geocoder(getBaseContext(), Locale.getDefault()); + try { + List
addresses = geoCoder.getFromLocation(latitude, longitude, 1); + + String address = ""; + if (addresses != null) { + Address Address = addresses.get(0); + StringBuilder strAddress = new StringBuilder(""); + + for (int i = 0; i < Address.getMaxAddressLineIndex(); i++) { + strAddress.append(Address.getAddressLine(i)).append("\n"); + } + address = strAddress.toString(); + address = address.substring(0, address.length()-1); //trim last \n + options.snippet(address); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + if (name != null) { options.title(name); - this.mGoogleMap.addMarker(options).showInfoWindow(); - } else { - this.mGoogleMap.addMarker(options); } + this.mGoogleMap.setInfoWindowAdapter(new InfoWindowAdapter()); + this.mGoogleMap.addMarker(options).showInfoWindow(); this.mGoogleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(location, Config.DEFAULT_ZOOM)); } -- cgit v1.2.3