3

そこで、GPS の位置、日付、時刻の値を取得するために、このコードを作成しました。次に、それらを JSON で作成し、Wi-Fi 経由でサーバーに送信します。とにかく、問題は常に以前の場所の値を読み取ることです。以前の値によって提供された JSON の「ネットワーク」部分から常に値を読み取ります。コードを実行するとわかるように、表示される現在の場所は 2 つの角かっこ "{ }" のみです。

電話から直接スクリプトを実行すると、電話の 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)
4

1 に答える 1

0

readLocation を呼び出す前に、eventWaitFor("location") を呼び出します。また、eventPoll、eventClearBuffer、または eventWait も使用したい場合があります。

GPS センサーは、衛星を取得し、時刻を同期し、衛星からの信号のタイミングに基づいて位置を三角測量する必要があるため、起動が非常に遅くなります。また、更新頻度を指定せずに startLocating を呼び出したため、デフォルトの頻度である 60,000 ミリ秒または 1 分に 1 回が取得されます。

于 2012-02-25T15:39:30.440 に答える