Android-网络日期/时间
我正在为Android编写一个应用程序。我需要允许我的用户捕获他们的当前位置并记录发生这种情况的日期/时间。问题是,日期/时间不能是用户可以通过调整设备上的日期/时间来更改的 您能否为我指出在使用塔台定位服务时获取蜂窝网络日期/时间的正确方向,以及如何获取GPS日期/时间Android-网络日期/时间,android,date,time,gps,location,Android,Date,Time,Gps,Location,我正在为Android编写一个应用程序。我需要允许我的用户捕获他们的当前位置并记录发生这种情况的日期/时间。问题是,日期/时间不能是用户可以通过调整设备上的日期/时间来更改的 您能否为我指出在使用塔台定位服务时获取蜂窝网络日期/时间的正确方向,以及如何获取GPS日期/时间 非常感谢您的帮助,谢谢 可以使用Android Location API中的检索GPS或网络时间戳 有关完整的工作示例,请参见开源GPSTest项目: 您可以请求侦听以下任一网络位置更新: lm.RequestLocatio
非常感谢您的帮助,谢谢 可以使用Android Location API中的检索GPS或网络时间戳 有关完整的工作示例,请参见开源GPSTest项目: 您可以请求侦听以下任一网络位置更新:
lm.RequestLocationUpdate(LocationManager.NETWORK\u提供程序,0,0,此)代码>
或GPS位置更新:
lm.requestLocationUpdates(LocationManager.GPS\u提供程序,0,0,this)代码>
然后,当一个位置被传递到LocationListener.onLocationChanged方法时,您可以从该位置读取时间戳:
@Override
public void onLocationChanged(Location location) {
Log.i("Timestamp", "New timestamp: " + location.getTime());
}
另一种选择是向网络时间协议(NTP)服务器发出请求,该服务器完全独立于设备和蜂窝网络
有关实现NTP客户端的详细信息,请参阅本文:
您是否在服务器端记录信息?如果是这样,只需使用服务器日期/时间。我们正在这样做,但要求实际上来自政府。他们的要求是使用“GPS信号日期/时间”或“蜂窝网络日期/时间”(取决于检索位置的方式)。我们的iPhone应用程序也有类似的问题。。。但我不是这方面的开发人员:)我会使用连接到服务器的GPS来实现这一点。如果你没有延迟上传,篡改就更难了。但是你知道有没有办法检索手机网络日期/时间和/或GPS卫星日期/时间?没有,我没有(这就是为什么我没有在下面填写答案的原因)。我只是建议另一种选择,万一没有人提出正确的答案。
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*/);
}