簡體   English   中英

Android - 網絡日期/時間

[英]Android - Network Date/Time

我正在為Android編寫應用程序。 我需要允許我的用戶捕獲他們當前的位置並記錄發生這種情況的日期/時間。 問題在於日期/時間不能通過調整設備上的日期/時間來改變用戶。

您能否指出我在使用塔樓位置服務時獲取蜂窩網絡日期/時間的正確方向,以及如何獲取GPS日期/時間。

任何幫助表示贊賞,謝謝!

可以使用Android Location 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客戶端的詳細信息,請參閱此帖子:

使用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*/);

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM