基于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设备进行编码,其融合提供商已经简化了这一过程。
任何帮助将不胜感激
萨赫勒
答案 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