2016-10-10 3 views
-3

Я пробовал много кодов, и никто из них не работает. Я пробовал:Как получить скорость в приложении для Android

//This is in another void 
Location location = new Location(LocationManager.GPS_PROVIDER); 
        location.setSpeed(0); 
        Greitis(location); 

//This is in CountDownTimer which has onTick every 1 second 
public void Greitis(Location location) { 
     if (location.hasSpeed()) { 
      speed.setText(location.getSpeed() * 3.6 + " Km/h"); 
     } 
    } 

Может кто-нибудь сказать, почему это не работает или напишите мне, как правильно получить скорость.

+0

Существует много блестящих решений есть сначала сделать некоторые исследования (по крайней мере, поиск), прежде чем отправлять.. вопрос здесь –

ответ

0

getSpeed() возвращает только значение, которое было установлено с помощью setSpeed(int) (в вашем случае всегда 0).

Если вы хотите, чтобы получить более или менее точную скорость, есть 2 способа:

  1. используя ваш акселерометр
  2. счетные скорость самостоятельно

Если вы не хотите используйте GPS (что обычно является хорошей идеей), вы должны выбрать вариант 1. Но номер 2 не очень сложный. Просто сохраните два GPS-точки с задержкой T. Чем ваша скорость (в зависимости от speed = distance/time:

speed = sqrt((point2.x - point1.x)^2 + (point2.y - point1.y)^2)/T 

Поскольку distance расстояние между point1 и point2

+0

Эта формула двумерна. Координаты GPS - это углы ([wiki] (https://en.wikipedia.org/wiki/Geographic_coordinate_system)), а расстояние между двумя географическими точками - это расстояние на поверхности Мира (сферическое расстояние) ([wiki] (https://en.wikipedia.org/wiki/Haversine_formula) и [link1] (https://www.math.ksu.edu/~dbski/writing s/haversine.pdf) или [link2] (http://www.movable-type.co.uk/scripts/latlong.html)). –

Смежные вопросы