Чтение значений GPS с Python в SL4a не работает - PullRequest
3 голосов
/ 22 февраля 2012

Итак, я сделал этот кусок кода, чтобы получить значения местоположения, даты и времени GPS.А потом я постараюсь сделать их в формате JSON и отправить их через Wi-Fi на сервер.В любом случае, проблема в том, что он всегда читает предыдущие значения местоположения.Он всегда считывает значения из «Сетевой» части JSON, предоставленной предыдущими значениями.Текущее местоположение напечатано только в двух скобках "{}", как вы можете видеть, если вы запускаете код.

Значок GPS на телефоне не активируется, когда я запускаю скрипт непосредственно с телефона.Я думаю, что код не требует пояснений, но если есть какие-либо вопросы, пожалуйста, задавайте.

import android,time,datetime
droid = android.Android()

latitudine = "initial value"
longitudine = "initial value"
indexVal = 1
lostSignal = False

while True:
 print "~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~\nNew reading: #" + str(indexVal) +"\n"
 droid.startLocating()
 locatie = droid.readLocation().result
 droid.stopLocating()
 print "Reading result: " + str(locatie)
 if locatie == {}:
  print "Current location information not available"
 locatie=droid.getLastKnownLocation().result
 if locatie != {}:
  if locatie['gps'] == None:
   if locatie['network'] == {}:
    latitudine = str(locatie['passive']['latitude'])
    longitudine = str(locatie['passive']['longitude'])
    print "Reading passive data (from last known location):"
    print longitudine
    print latitudine
    lostSignal = True
   elif locatie['network'] != {}:
    latitudine = str(locatie['network']['latitude'])
    longitudine = str(locatie['network']['longitude'])
    print "Reading data from network:"
    print latitudine
    print longitudine
    lostSignal = True
  elif locatie['gps']!=None:
   if lostSignal == True:
    droid.vibrate(500)
    lostSignal = False
    latitudine=str(locatie['gps']['latitude'])
    longitudine=str(locatie['gps']['longitude'])
    print "Reading data from GPS:"
    print latitudine
    print longitudine
    droid.notify("GPS found","GPS signal found.\nData aquired")

 print "\nFull available information:\n"
 for locInfo in locatie.iteritems():
 print str(locInfo)
 print "\n"

 now = datetime.datetime.now()

 ora = now.hour
 minut = now.minute
 secunda = now.second

 ziua = now.day
 luna = now.month
 an = now.year

 print str(ora)+":"+str(minut)+":"+str(secunda)+" / "+str(ziua)+"-"+str(luna)+"-"+str(an)
 indexVal += 1
 time.sleep(20)

1 Ответ

0 голосов
/ 25 февраля 2012

Вызовите eventWaitFor ("location") перед вызовом readLocation. Вы также можете использовать eventPoll, eventClearBuffer или eventWait.

Датчик GPS запускается очень медленно, потому что ему необходимо получать спутники, синхронизировать время и затем триангулировать положение на основе синхронизации сигналов от спутников. Кроме того, поскольку вы вызвали startLocating без указания частоты обновления, вы получаете частоту по умолчанию 60 000 мс или один раз в минуту.

...