|
|
|
|
@ -451,27 +451,23 @@ int gps_android_device_read (char *ptr, int ptrsize) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
d_printf ("gps_android_device_read:");
|
|
|
|
|
|
|
|
|
|
/* call up the java method to prepare a new line */
|
|
|
|
|
// d_printf ("gps_android_device_read: call java");
|
|
|
|
|
jclass clazz = (*env)->GetObjectClass(env, activity->clazz);
|
|
|
|
|
jmethodID methodID = (*env)->GetMethodID(env, clazz, "GPSDataGetLine", "()V");
|
|
|
|
|
(*env)->CallVoidMethod(env, activity->clazz, methodID);
|
|
|
|
|
|
|
|
|
|
d_printf ("try to get line");
|
|
|
|
|
// d_printf ("gps_android_device_read: finished java call");
|
|
|
|
|
/* retrieve the new line, copy new line, release new line */
|
|
|
|
|
jfieldID fid = (*env)->GetFieldID(env, clazz, "gpsline", "Ljava/lang/String;");
|
|
|
|
|
jobject obj = (*env)->AllocObject(env, clazz);
|
|
|
|
|
if (!obj) {
|
|
|
|
|
d_printf ("error getting obj");
|
|
|
|
|
exit (1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
jstr = (*env)->GetObjectField(env, obj, fid);
|
|
|
|
|
jstr = (*env)->GetObjectField(env, activity->clazz, fid);
|
|
|
|
|
str = (*env)->GetStringUTFChars(env, jstr, 0);
|
|
|
|
|
d_printf(" c.s = \"%s\"\n", str);
|
|
|
|
|
// d_printf ("str:%p", str);
|
|
|
|
|
if (str != NULL)
|
|
|
|
|
strncpy (ptr, str, ptrsize);
|
|
|
|
|
else ptr[0] = 0;
|
|
|
|
|
d_printf ("NMEA:%s", ptr);
|
|
|
|
|
(*env)->ReleaseStringUTFChars(env, jstr, str);
|
|
|
|
|
d_printf ("release string");
|
|
|
|
|
|
|
|
|
|
(*jvm)->DetachCurrentThread(jvm);
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
return strlen (ptr);
|
|
|
|
|
};
|
|
|
|
|
|