Я создаю приложение, которое отправляет текущее местоположение GPS на сохраненные номера. Но, местоположение всегда было 0.0, 0.0.Расположение GPS всегда отображается как 0.0, 0.0 (LocationListener реализован)
Вот код:
public class ContactsList extends AppCompatActivity {
Button addContacts;
Button emergencyButton;
ListView listView;
ArrayList<HashMap<String, String>> contactsList;
ArrayList<Contact> contactobjectsList;
ArrayList<String> phonenumbersList;
DatabaseHelper databaseHelper = new DatabaseHelper(ContactsList.this);
LocationManager locationManager;
LocationListener locationListener;
double latitudeVal, longitudeVal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_contacts_list);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
addContacts = (Button) findViewById(R.id.moveButton);
listView = (ListView) findViewById(R.id.contactslistView);
emergencyButton = (Button) findViewById(R.id.emergency_button);
contactobjectsList = new ArrayList<Contact>();
contactobjectsList = databaseHelper.getContacts();
phonenumbersList = new ArrayList<String>();
phonenumbersList = databaseHelper.getNumbers();
contactsList = new ArrayList<HashMap<String, String>>();
contactsList = databaseHelper.getValues();
// For GPS:
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
if (location != null) {
latitudeVal = location.getLatitude();
longitudeVal = location.getLongitude();
}
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
Toast toast = Toast.makeText(getApplicationContext(), "GPS Enabled", Toast.LENGTH_LONG);
toast.show();
}
@Override
public void onProviderDisabled(String provider) {
Toast toast = Toast.makeText(getApplicationContext(), "Enable GPS", Toast.LENGTH_LONG);
toast.show();
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
};
ListAdapter listAdapter = new SimpleAdapter(ContactsList.this, contactsList, R.layout.customlayout,
new String[]{DatabaseHelper.COLUMN_ID, DatabaseHelper.COLUMN_PERSONNAME, DatabaseHelper.COLUMN_PHONENUMBER},
new int[]{R.id._idcust, R.id.personnamecust, R.id.phonenumbercust});
listView.setAdapter(listAdapter);
addContacts.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent move = new Intent(ContactsList.this, AddContact.class);
startActivity(move);
}
});
emergencyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, locationListener);
String printLat = Double.toString(latitudeVal);
String printLon = Double.toString(longitudeVal);
Toast toast = Toast.makeText(getApplicationContext(),printLat+", "+printLon,Toast.LENGTH_LONG);
toast.show();
// sendSMS(phonenumbersList);
}
});
}
По какой-то причине, значения по умолчанию для широты и долготы, как указано в классе LocationListener являются те, которые возвращаются (0,0, 0,0). Я действительно не знаю, что не так с моим кодом, и я бы серьезно оценил некоторую помощь на этом этапе.
Это не поможет –
это может помочь вам http://stackoverflow.com/questions/17519198/how-to-get-the-current-location-latitude-and-longitude-in-android –