我们有一个我们正在开发的android(或iphone)客户端。客户端允许android用户向我们也开发的服务器发送条目。如果客户端在用户向服务器发送条目时没有数据服务(GPRS),则客户端还支持将条目保存到脱机数据库并稍后发送给服务器。从android/iphone获取准确的时间到服务器
的整个过程的一个重要方面是在其上用户发送的条目到服务器(实时该条目是否是由或从脱机数据库由客户机发送)的时间戳记
当精度可以在客户端上获得,我们得到一个GPS位置,并能够使用GPS时间戳将其发送到服务器(或将GPS时间戳保存在离线数据库中并稍后发送给服务器)。但是,如果用户关闭了GPS(以及所有其他位置服务),则该设备将不具有GPS修复,因此服务器无法准确确定何时进行了输入。 我们不能使用本地设备时钟,因为用户可能会更改时钟以在实际发生的不同时间输入时钟(这些条目是用户薪水的一部分,因此他可能有兴趣“修复”)。
所以基本上,我正在寻找一种方法来确定我可以做的最好时间,当我不能相信移动设备的内部时钟时进行了一些输入。该算法应支持实时发送的条目或离线数据库发送的条目。该算法还应支持用户更改手机时间,打开/关闭移动电话,在应用程序在移动设备上运行时打开/关闭GPS的情况......
我想到的几个想法的:
- 虽然我不能信任移动的时候,它仍然可以执行如秒表: 有一个类,将循环播放,直到应用程序存在,循环会睡1秒,增加内部时钟变量到1秒。在每个GPS位置我的代码得到我们更新内部时钟变量。这样,我有一个绝对时钟来自设备外部(来自GPS),当客户端向服务器发送条目时,我们可以使用内部时钟作为绝对时间。
优点:当我们从GPS得到的位置
缺点,用户不能修改这个时钟,因为它只是更新:应用程序至少需要一个GPS修正前的用户可以拨打任何可靠的条目
- 我可以利用这个事实,即服务器有一个准确的时钟是正确的。如果客户端向服务器发送信息,表明该条目的年龄为10分钟,则服务器可以使用其内部时间并知道输入的确切时间。
最大的问题是如何知道入门年龄?我想过将条目保存到离线数据库中,年龄为0,然后每隔1秒增加数据库中条目的年龄。问题是,如果应用程序关闭和/或设备关闭,现在会发生这种情况
这是我目前卡住的地方。关于如何解决这个任何想法非常欢迎
由于更多