summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Mike Lockwood <lockwood@android.com> 2010-10-11 06:22:50 -0400
committer Mike Lockwood <lockwood@google.com> 2010-10-11 14:28:28 -0400
commit50130bbc884a7ad7db39dbc4f54e76e8be87761f (patch)
treea9cbbbc6767ca64c3fe38d5fe49fb5643c4185d1
parentc8511af04a442551a204b1f47fabb317bcf54be0 (diff)
GPS: Add update_network_state call to AGpsRillInterface
Change-Id: I404a7a45773f592de7dfe75a8287fef15515ea8b Signed-off-by: Mike Lockwood <lockwood@android.com>
-rwxr-xr-xservices/java/com/android/server/location/GpsLocationProvider.java8
-rwxr-xr-xservices/jni/com_android_server_location_GpsLocationProvider.cpp18
2 files changed, 26 insertions, 0 deletions
diff --git a/services/java/com/android/server/location/GpsLocationProvider.java b/services/java/com/android/server/location/GpsLocationProvider.java
index 87271e73fe59..f9c167943981 100755
--- a/services/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/java/com/android/server/location/GpsLocationProvider.java
@@ -493,6 +493,11 @@ public class GpsLocationProvider implements LocationProviderInterface {
+ " info: " + info);
}
+ if (info != null) {
+ native_update_network_state(info.isConnected(), info.getType(),
+ info.isRoaming(), info.getExtraInfo());
+ }
+
if (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE_SUPL
&& mAGpsDataConnectionState == AGPS_DATA_CONNECTION_OPENING) {
String apnName = info.getExtraInfo();
@@ -1601,4 +1606,7 @@ public class GpsLocationProvider implements LocationProviderInterface {
private native void native_agps_set_ref_location_cellid(int type, int mcc, int mnc,
int lac, int cid);
private native void native_agps_set_id(int type, String setid);
+
+ private native void native_update_network_state(boolean connected, int type,
+ boolean roaming, String extraInfo);
}
diff --git a/services/jni/com_android_server_location_GpsLocationProvider.cpp b/services/jni/com_android_server_location_GpsLocationProvider.cpp
index bd722d73b679..43e8467fb6dd 100755
--- a/services/jni/com_android_server_location_GpsLocationProvider.cpp
+++ b/services/jni/com_android_server_location_GpsLocationProvider.cpp
@@ -586,6 +586,23 @@ static jstring android_location_GpsLocationProvider_get_internal_state(JNIEnv* e
return result;
}
+static void android_location_GpsLocationProvider_update_network_state(JNIEnv* env, jobject obj,
+ jboolean connected, int type, jboolean roaming, jstring extraInfo)
+{
+ const AGpsRilInterface* interface = GetAGpsRilInterface(env, obj);
+ if (interface &&
+ (interface->size > ((char *)&interface->update_network_state - (char *)&interface)) &&
+ interface->update_network_state) {
+ if (extraInfo) {
+ const char *extraInfoStr = env->GetStringUTFChars(extraInfo, NULL);
+ interface->update_network_state(connected, type, roaming, extraInfoStr);
+ env->ReleaseStringUTFChars(extraInfo, extraInfoStr);
+ } else {
+ interface->update_network_state(connected, type, roaming, NULL);
+ }
+ }
+}
+
static JNINativeMethod sMethods[] = {
/* name, signature, funcPtr */
{"class_init_native", "()V", (void *)android_location_GpsLocationProvider_class_init_native},
@@ -611,6 +628,7 @@ static JNINativeMethod sMethods[] = {
{"native_send_ni_response", "(II)V", (void*)android_location_GpsLocationProvider_send_ni_response},
{"native_agps_ni_message", "([BI)V", (void *)android_location_GpsLocationProvider_agps_send_ni_message},
{"native_get_internal_state", "()Ljava/lang/String;", (void*)android_location_GpsLocationProvider_get_internal_state},
+ {"native_update_network_state", "(ZIZLjava/lang/String;)V", (void*)android_location_GpsLocationProvider_update_network_state },
};
int register_android_server_location_GpsLocationProvider(JNIEnv* env)