解决方案 »

  1.   

    定位有很多办法,WIFI、GPS、基站,实在不行,IP地址也能定位啊,就是准确度差点
      

  2.   

    NetworkLocationProvider 只是走的网络,包括运营商提供的数据,wifi定位,2楼说的ip定位
      

  3.   

             这么跟你说吧,NetworkLocationService是安卓里面的一个定位模块,可以向App提供定位服务。但是对于百度高德地图来说,他们有自己的定位模块,可能比安卓内置的定位模块要好,所以他们可以选择用,也可以选择不用。据我所知,他们一般用自己的定位模块,不用安卓内置的。甚至百度可以提供NetworkLocationService给安卓厂商用。
             很简单,我用安卓手机,安卓有很多功能,但是很多功能我永远不会用,但是你不能说这些功能就没有意义,因为我不用别人会用啊。百度高德不用,自然有别人用啊。
      

  4.   

    可是我有一点不是很清楚,android本身是没有NetworkLocationProvider的,比如我现在使用的是高德地图那么NetworkLocationProvider 就由高德提供,framework层的LocationManagerService来管理GpsLocationProvider和NetworkLocationProvider对吧。那么为什么我关掉位置服务后,还是可以通过获取位置信息呢?相对的我关掉位置服务后就获取不到Gps服务。
      

  5.   

    或者可以换个角度来说,应该如何在android Framework层禁止掉一切的网络定位,也就是让高德,百度地图定位失效?
      

  6.   


    你的理解有问题。你手机的Android系统可能会提供也可能不会提供NetworkLocationProvider,这个是手机出厂的时候就确定的,你关掉的是这个。你用高德地图百度地图的时候,他们可能不会调用系统的NLP,而是直接和他们自己的服务器通信来获取位置,这就和你关不关NLP就没关系了。
      

  7.   

    你把NLP和百度高德地图自身定位搞混淆了。百度和高德都可能会提供NLP给手机厂商,手机厂商将NLP放在他们的系统ROM中。但是百度地图高德地图本身可以直接和服务器通信来获取位置,这两种方式本质的算法可能差不多,但是地图本身直接和服务器通信就不需要调用framework相关的模块了,也就不受你关闭或者打开NLP的限制了。