una ubicacion studio saber que por persona pareja obtener numero hijo gratis esta entere donde detectar como celular android gps location

android - studio - como saber la ubicacion de un celular por whatsapp



¿Cómo puedo obtener el nombre de la ciudad de mi posición actual? (3)

¡ Debe ejecutar el geocodificador en una AysncTask (o en un subproceso que no esté en el mismo ThreadGroup que el subproceso de la interfaz de usuario)!

public void getCityName(final Location location, final OnGeocoderFinishedListener listener) { new AsyncTask<Void, Integer, List<Address>>() { @Override protected List<Address> doInBackground(Void... arg0) { Geocoder coder = new Geocoder(getContext(), Locale.ENGLISH); List<Address> results = null; try { results = coder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); } catch (IOException e) { // nothing } return results; } @Override protected void onPostExecute(List<Address> results) { if (results != null && listener != null) { listener.onFinished(results); } } }.execute(); }

Con este oyente abstracto

public abstract class OnGeocoderFinishedListener { public abstract void onFinished(List<Address> results); }

Ahora llama al método así:

getCityName(location, new OnGeocoderFinishedListener() { @Override public void onFinished(List<Address> results) { // do something with the result } });

Espero que esto ayude a algunos de ustedes!

Estoy trabajando con Android Studio y en un cuadro de diálogo emergente quiero que los usuarios puedan obtener su posición, pero todo lo que sé que debo hacer es obtener mi latitud y longitud.

Este es el codigo

import android.app.Activity; import android.content.Context; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements LocationListener { private TextView latituteField; private TextView longitudeField; private LocationManager locationManager; private String provider; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); latituteField = (TextView) findViewById(R.id.TextView02); longitudeField = (TextView) findViewById(R.id.TextView04); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); provider = locationManager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(provider); if (location != null) { System.out.println("Provider " + provider + " has been selected."); onLocationChanged(location); } else { latituteField.setText("Location not available"); longitudeField.setText("Location not available"); } } @Override protected void onResume() { super.onResume(); locationManager.requestLocationUpdates(provider, 400, 1, this); } @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { int lat = (int) (location.getLatitude()); int lng = (int) (location.getLongitude()); latituteField.setText(String.valueOf(lat)); longitudeField.setText(String.valueOf(lng)); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { Toast.makeText(this, "Enabled new provider " + provider, Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_SHORT).show(); } }

En el MainActivity.Puedes ayudarme?

He añadido esto en el manifiesto.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

pero todavía dice "Ubicación no disponible".


Necesita la clase GeoCoder para obtener la Address de un Lat / Long dado. intente lo siguiente:

Geocoder geoCoder = new Geocoder(this, Locale.getDefault()); //it is Geocoder StringBuilder builder = new StringBuilder(); try { List<Address> address = geoCoder.getFromLocation(latitude, longitude, 1); int maxLines = address.get(0).getMaxAddressLineIndex(); for (int i=0; i<maxLines; i++) { String addressStr = address.get(0).getAddressLine(i); builder.append(addressStr); builder.append(" "); } String fnialAddress = builder.toString(); //This is the complete address. } catch (IOException e) {} catch (NullPointerException e) {}

El código a continuación debería funcionar para usted: (verifique los comentarios en línea con respecto a su código)

import java.io.IOException; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.widget.TextView; import android.widget.Toast; public class MainActivity extends Activity implements LocationListener { private TextView latituteField; private TextView longitudeField; private TextView addressField; //Add a new TextView to your activity_main to display the address private LocationManager locationManager; private String provider; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); latituteField = (TextView) findViewById(R.id.TextView02); longitudeField = (TextView) findViewById(R.id.TextView04); addressField = (TextView) findViewById(R.id.TextView05); //Make sure you add this to activity_main locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); provider = locationManager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(provider); if (location != null) { System.out.println("Provider " + provider + " has been selected."); onLocationChanged(location); } else { latituteField.setText("Location not available"); longitudeField.setText("Location not available"); } } @Override protected void onResume() { super.onResume(); locationManager.requestLocationUpdates(provider, 400, 1, this); } @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { //You had this as int. It is advised to have Lat/Loing as double. double lat = location.getLatitude(); double lng = location.getLongitude(); Geocoder geoCoder = new Geocoder(this, Locale.getDefault()); StringBuilder builder = new StringBuilder(); try { List<Address> address = geoCoder.getFromLocation(lat, lng, 1); int maxLines = address.get(0).getMaxAddressLineIndex(); for (int i=0; i<maxLines; i++) { String addressStr = address.get(0).getAddressLine(i); builder.append(addressStr); builder.append(" "); } String fnialAddress = builder.toString(); //This is the complete address. latituteField.setText(String.valueOf(lat)); longitudeField.setText(String.valueOf(lng)); addressField.setText(fnialAddress); //This will display the final address. } catch (IOException e) { // Handle IOException } catch (NullPointerException e) { // Handle NullPointerException } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { Toast.makeText(this, "Enabled new provider " + provider, Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_SHORT).show(); } }