android获取手机真实时间与时区,IP地址

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android获取手机真实时间与时区,IP地址相关的知识,希望对你有一定的参考价值。

如题,android有代码可以获得当前系统时间,时区,IP地址等这些信息,但是这是存在漏洞的。
现在有这样的需求,因为客户在使用android手机的时候,他不一定是固定在某个国家,可能今天在日本,明天乘坐飞机到了台湾。假设客户在日本操作了项目,在台湾也操作了项目,会插入 时间/时区/IP地址等这些信息到数据库。所以如果只是获取手机系统时间的话,这个是不准确的,甚至如果有人恶作剧,将手机时区乱设一通,那这样的数据就没有太大的意义了。
所以应该明白需求了,我需要获取手机真实的时间/时区/IP地址等这些信息。
网上也搜了很多办法,有的说用NTP服务器来获取当前时间,可惜网上都是盗版,copy下来的代码运行不了。
也有的说有这么几种办法:
通过NTP服务器,获取当前时间。
开启WIFI,通过internet获取时间。
开启GPS,通过GPS获取时间。
目前我也正在通过这三种方法去网上找相关的资料,不过目前已经花费了一定的时间,没有找到什么有用的东西,倒是通过GPS获取经纬度给弄出来了。各位朋友谁做过这样的,或者谁能搜到有用的网址,请回复我,只要是能真实的解决问题的,哪怕只是给出了一个网址,我也会给分,谢谢!!

获得经纬度后就相应的得到时间了!好像是我们项目就是用的这个时间。。。时间是unix的计算方法,就是1970年1月1日0点0分0秒到现在的秒数,用new Date(location.getTime())就得到当前时间了,不过你得根据你的特殊情况进行判断计算了,可以再找找详细的资料,祝你好运~追问

很头疼啊,虽然确实根据经纬度,可以知道手机是存在哪个时区内,然后计算出当前时间。可是一个是这样有点复杂,另外一个是,这样还缺少了IP地址这个数据。
在公司测试的时候,用的公司的内部网络,测试出来的地址就是192.168.1.xxx 这样的地址,完全不是我想要的,得到这样的地址毫无意义

追答

获取ip地址的就得先连接网络吧,这个就没搞过了。。

参考技术A 手机打开了通过网络同步时间(手机网络同步时间),应该可以直接通过JAVA的类取得时间、时区等地理信息
System.out.println("Current time zone: " + TimeZone.getDefault().getID());

IP地址,可以访问apnic来分析网页取真实的IP。追问

如果用户没有开启WIFI或者3G网络呢?或者用户自行设定了一个错误的时间,那么TimeZone.getDefault() 这样的方式,得到的数据就不是想要的了。
至于IP地址这个,给出这个思路倒是还行,不过其实直接访问百度,输入“IP”,就可以显示目前上网的IP了。不过这些操作是需要由android的app去操作,可行性有待诊断

参考技术B 还真没试过,我想两样设置,一个时区,一个打开GPS,两样同时运行应该可以追问

呀,想是这么想,不过不知道怎么实现代码,也没找到相关的网页。

php获取用户真实ip地址与地理位置

echo getcposition(getIP());

//获取用户真实ip 
function getIP()

    if (isset($_SERVER)) 
        if (isset($_SERVER[HTTP_X_FORWARDED_FOR])) 
            $realip = $_SERVER[HTTP_X_FORWARDED_FOR];
         elseif (isset($_SERVER[HTTP_CLIENT_IP])) 
            $realip = $_SERVER[HTTP_CLIENT_IP];
         else 
            $realip = $_SERVER[REMOTE_ADDR];
        
     else 
        if (getenv("HTTP_X_FORWARDED_FOR")) 
            $realip = getenv("HTTP_X_FORWARDED_FOR");
         elseif (getenv("HTTP_CLIENT_IP")) 
            $realip = getenv("HTTP_CLIENT_IP");
         else 
            $realip = getenv("REMOTE_ADDR");
        
    
    return $realip;



//获取ip地址的地理位置
function getcposition($ip)

//这个api不能频繁调用
    $res1 = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=$ip");
    $res1 = json_decode($res1, true);

    //print_r($res1);
    if ($res1["code"] == 0) 
        return $res1['data']["country"] . $res1['data']["region"] . $res1['data']["city"] . "_" . $res1['data']["isp"];
     else 
        return "未知";
    

以上是关于android获取手机真实时间与时区,IP地址的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式获取android手机的IP地址......? [复制]

如何通过PHP中的IP地址获取时区[重复]

CuteKe网站开发与安全5——真实IP地址与一次惨痛的经历

如何绕过用CDN的域名 获取真实IP地址

php获取用户真实ip地址与地理位置

如何以编程方式在android中获取连接的wifi路由器的IP地址?