Я хочу создать приложение дистанционного трекера в Android. У меня есть Spinner, button
и TextView
.
Первоначально текст будет 0.00km.
Когда я нажимаю кнопку (начало GPS-трека) и начинаю ходить в текстовом режиме, она будет показывать расстояние непрерывно. Когда я снова нажимаю кнопку (GPS-трекинг завершается) и показывается полное расстояние между нажатием кнопки.Android GPS: измеренное расстояние между местоположениями постоянно
Вот скриншот, что приложение будет выглядеть следующим образом:
Вот мой код:
public class Gps extends Activity {
TextView display;
double currentLon=0 ;
double currentLat=0 ;
double lastLon = 0;
double lastLat = 0;
double distance;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
display = (TextView) findViewById(R.id.textView1);
LocationManager lm =(LocationManager) getSystemService(LOCATION_SERVICE);
lm.requestLocationUpdates(lm.GPS_PROVIDER, 0,0, Loclist);
Location loc = lm.getLastKnownLocation(lm.GPS_PROVIDER);
if(loc==null){
display.setText("No GPS location found");
}
else{
//set Current latitude and longitude
currentLon=loc.getLongitude();
currentLat=loc.getLatitude();
}
//Set the last latitude and longitude
lastLat=currentLat;
lastLon=currentLon ;
}
LocationListener Loclist = new LocationListener(){
@Override
public void onLocationChanged(Location location) {
// TODO Auto-generated method stub
//start location manager
LocationManager lm =(LocationManager) getSystemService(LOCATION_SERVICE);
//Get last location
Location loc = lm.getLastKnownLocation(lm.GPS_PROVIDER);
//Request new location
lm.requestLocationUpdates(lm.GPS_PROVIDER, 0,0, Loclist);
//Get new location
Location loc2 = lm.getLastKnownLocation(lm.GPS_PROVIDER);
//get the current lat and long
currentLat = loc.getLatitude();
currentLon = loc.getLongitude();
Location locationA = new Location("point A");
locationA.setLatitude(lastLat);
locationA.setLongitude(lastLon);
Location locationB = new Location("point B");
locationB.setLatitude(currentLat);
locationB.setLongitude(currentLon);
double distanceMeters = locationA.distanceTo(locationB);
double distanceKm = distanceMeters/1000f;
display.setText(String.format("%.2f Km",distanceKm));
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
};
}
Пожалуйста, помогите мне. Благодарю.
пожалуйста разместим ваш код – MDMalik
@ MDMalik, теперь я редактировал свой пост. Здесь, когда приложение начинает вычислять расстояние. Но мне нужно, когда я нажимаю кнопку «Пуск», тогда он вычисляет расстояние, а при нажатии кнопки «Стоп» он дает полное расстояние и отслеживание gps останавливается. –