我正在爲Android編寫應用程序。我需要允許我的用戶捕獲他們當前的位置&記錄發生的日期/時間。問題在於日期/時間不能通過調整設備上的日期/時間來改變。Android - 網絡日期/時間
您是否可以指出我使用位置服務獲取蜂窩網絡日期/時間的正確方向,以及如何獲取GPS日期/時間。
任何幫助表示讚賞,謝謝!
我正在爲Android編寫應用程序。我需要允許我的用戶捕獲他們當前的位置&記錄發生的日期/時間。問題在於日期/時間不能通過調整設備上的日期/時間來改變。Android - 網絡日期/時間
您是否可以指出我使用位置服務獲取蜂窩網絡日期/時間的正確方向,以及如何獲取GPS日期/時間。
任何幫助表示讚賞,謝謝!
可以通過在Android位置API中使用LocationListener來檢索GPS或網絡時間戳。
見一個完全工作的例子開源GPSTest項目: https://github.com/barbeau/gpstest
您可以要求聽任何網絡位置更新:
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, this);
或GPS位置更新:
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
然後,當一個位置被傳遞到LocationListener.onLocationChanged方法,你可以從該位置讀取時間戳:
@Override
public void onLocationChanged(Location location) {
Log.i("Timestamp", "New timestamp: " + location.getTime());
}
另一種選擇是讓一個網絡時間協議(NTP)服務器,它是一個請求完全獨立於設備和小區網絡。
看到這個職位的詳細信息,實現NTP客戶端
public static final String TIME_SERVER = "time-a.nist.gov";
public static void printTimes() throws IOException {
NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName(TIME_SERVER);
TimeInfo timeInfo = timeClient.getTime(inetAddress);
//long returnTime = timeInfo.getReturnTime(); //local device time
long returnTime = timeInfo.getMessage().getTransmitTimeStamp().getTime(); //server time
//Get Current Time
Long tsLong = System.currentTimeMillis()/1000;
String ts = tsLong.toString();
Log.e("After get PrintTime..","After get PrintTime..>>"+ts);
enter code here
Log.e("getCurrentNetworkTime", "Time from " + TIME_SERVER + ": " + returnTime/*time*/);
}
你的日誌信息的服務器端?如果是這樣,只需使用服務器日期/時間。 – Brad
我們正在這樣做,但要求實際上來自政府。他們的要求是使用「GPS信號日期/時間」或「蜂窩網絡日期/時間」(取決於如何檢索位置)。我們有一個類似的問題瓦特/我們的iPhone應用程序...但我不是那個開發:) – Chris
我會用一個GPS連接到服務器。如果你沒有延遲上傳,這將很難被篡改。 – Brad