Android:基于Cell ID的位置

时间:2014-06-17 16:05:20

标签: android android-source

基于LocationManager.NETWORK_PROVIDER的位置基于android将连接的小区ID发送到地理定位服务器。这需要积极的互动关系。查询单元格id将返回存储在服务器上的塔的大致位置。

locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, TWO_MINUTES, MIN_DISTANCE, mLocation);
    Location current = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    if(current != null)
        Log.d("Location", "Lat: " + current.getLatitude() + ", Lon: " + current.getLongitude() + ", Acc: " + current.getAccuracy());

使用此代码我可以从服务器获取位置。但是,我想了解它的机制。

我一直在搜索android源代码,系统向服务器发送请求以获取该位置而没有任何运气。

我在位置和服务文件夹中搜索了框架。我为KitKat之前的KitKat设备进行编码,其融合提供商已经简化了这一过程。

任何帮助将不胜感激

萨赫勒

1 个答案:

答案 0 :(得分:0)

该功能在google play服务中实现,该服务不是开源的,需要互联网连接。

一个Android应用程序可以通过

获取细胞信息更新
 telephonyManager.listen(mListener, PhoneStateListener.LISTEN_CELL_LOCATION | PhoneStateListener.LISTEN_CELL_INFO);

答案来自

PhoneStateListener mListener = new PhoneStateListener() {
    @Override
    public void onCellLocationChanged(android.telephony.CellLocation androidItem) {
        ....
    }

    @Override
    public void onCellInfoChanged(List<CellInfo> androidCellInfo) {
        ....
    }
};

我不知道google playservices如何更新位置。也许他们有自己的locationmanager-implementation