@@ -253,6 +253,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
253253
254254 private String mAGpsApn ;
255255 private int mAGpsDataConnectionState ;
256+ private int mAGpsDataConnectionIpAddr ;
256257 private final ConnectivityManager mConnMgr ;
257258 private final GpsNetInitiatedHandler mNIHandler ;
258259
@@ -503,6 +504,14 @@ private void handleUpdateNetworkState(int state, NetworkInfo info) {
503504 apnName = "dummy-apn" ;
504505 }
505506 mAGpsApn = apnName ;
507+ if (DEBUG ) Log .d (TAG , "mAGpsDataConnectionIpAddr " + mAGpsDataConnectionIpAddr );
508+ if (mAGpsDataConnectionIpAddr != 0xffffffff ) {
509+ boolean route_result ;
510+ if (DEBUG ) Log .d (TAG , "call requestRouteToHost" );
511+ route_result = mConnMgr .requestRouteToHost (ConnectivityManager .TYPE_MOBILE_SUPL ,
512+ mAGpsDataConnectionIpAddr );
513+ if (route_result == false ) Log .d (TAG , "call requestRouteToHost failed" );
514+ }
506515 if (DEBUG ) Log .d (TAG , "call native_agps_data_conn_open" );
507516 native_agps_data_conn_open (apnName );
508517 mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN ;
@@ -1230,7 +1239,7 @@ private void reportSvStatus() {
12301239 /**
12311240 * called from native code to update AGPS status
12321241 */
1233- private void reportAGpsStatus (int type , int status ) {
1242+ private void reportAGpsStatus (int type , int status , int ipaddr ) {
12341243 switch (status ) {
12351244 case GPS_REQUEST_AGPS_DATA_CONN :
12361245 if (DEBUG ) Log .d (TAG , "GPS_REQUEST_AGPS_DATA_CONN" );
@@ -1239,9 +1248,19 @@ private void reportAGpsStatus(int type, int status) {
12391248 mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPENING ;
12401249 int result = mConnMgr .startUsingNetworkFeature (
12411250 ConnectivityManager .TYPE_MOBILE , Phone .FEATURE_ENABLE_SUPL );
1251+ mAGpsDataConnectionIpAddr = ipaddr ;
12421252 if (result == Phone .APN_ALREADY_ACTIVE ) {
12431253 if (DEBUG ) Log .d (TAG , "Phone.APN_ALREADY_ACTIVE" );
12441254 if (mAGpsApn != null ) {
1255+ Log .d (TAG , "mAGpsDataConnectionIpAddr " + mAGpsDataConnectionIpAddr );
1256+ if (mAGpsDataConnectionIpAddr != 0xffffffff ) {
1257+ boolean route_result ;
1258+ if (DEBUG ) Log .d (TAG , "call requestRouteToHost" );
1259+ route_result = mConnMgr .requestRouteToHost (
1260+ ConnectivityManager .TYPE_MOBILE_SUPL ,
1261+ mAGpsDataConnectionIpAddr );
1262+ if (route_result == false ) Log .d (TAG , "call requestRouteToHost failed" );
1263+ }
12451264 native_agps_data_conn_open (mAGpsApn );
12461265 mAGpsDataConnectionState = AGPS_DATA_CONNECTION_OPEN ;
12471266 } else {
0 commit comments