У меня есть приложение на Android (я запускаю его на эмуляторе), которое получает обновления местоположения, и я хочу узнать скорость устройства, которое я отслеживаю.
Я делаю это, вычисляя расстояние междудва последовательных обновления местоположения и расчет времени получения этих обновлений.
И, наконец, я хочу найти скорость, разделив расстояние и время (это грубая оценка, но у меня нет альтернативы)
И вот моя проблема:
У меня есть массив длины 2, в который я помещаю экземпляры времени .... но я получаю исключение
java.lang.ArrayIndexOutOfBoundsException в этой строке:
время [i] = t;
Вот мой код:
public void onLocationChanged(Location loc) {
if (loc != null) {
try{
float[] distance = new float[2];
long [] time=new long[2];
loc.distanceBetween(first_gps_lat, first_gps_lon,
loc.getLatitude(), loc.getLongitude(), distance);
long t=(long)(loc.getTime()*(1e-3));
time[i]=t;
if(time.length==2)
{
var=time[1]-time[0];
time[0]=time[1];
i=1;
}
i++;
if(contor>0)
{
System.out.println("Distance is:" + distance[0] + "!!!!!!");
}
first_gps_lat=loc.getLatitude();
first_gps_lon=loc.getLongitude();
contor++;
}
catch(Exception e)
{
e.printStackTrace();
}
latitude = (int)(first_gps_lat * 1E6);
longitude = (int)(first_gps_lon * 1E6);
}
Кто-то знает, почему я получаю это исключение, потому что я не могувыяснить .. thx
РЕДАКТИРОВАТЬ:
Я изменил это, но все еще та же ошибка:
time[i]=t;
i=1;
if(time[1]!=0)
{
var=time[1]-time[0];
time[0]=time[1];
i=1;
}