android是怎么通过GPS和网络提供者来获取位置信息的

android是如何通过GPS和网络提供者来获取位置信息的?
我们获取位置基本采用以下三步:
1. 获取LocationManager 实例 
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);  
2. 获取LocationListener 实例
LocationListener locationListener = new LocationListener() {  
  public void onLocationChanged(Location location) {  
  // 获取localtion信息
  }  
  public void onStatusChanged(String provider, int status, Bundle extras) {}  
  public void onProviderEnabled(String provider) {}  
  public void onProviderDisabled(String provider) {}  
  };  
3. 设置监听,反复更新
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);  

在应用层上来看,好像是很简单。
我想知道的是, NETWORK_PROVIDER 和 GPS_PROVIDER具体是如何来获取到localtion信息的,在那里可以看到android是如何通过NETWORK_PROVIDER方式来返回的localtion呢??涉及到哪些源码?求指点
 

------解决方案--------------------
自己去看如何实现吧