diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml
index 3f81ee4..ec3b44e 100644
--- a/android/AndroidManifest.xml
+++ b/android/AndroidManifest.xml
@@ -26,12 +26,9 @@
-
-
-
-
-
-
+
+
+
diff --git a/android/jni/main.c b/android/jni/main.c
index 6c1feb9..372d294 100644
--- a/android/jni/main.c
+++ b/android/jni/main.c
@@ -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);
};
diff --git a/android/src/de/gulpe/sposmroute/spOSMrNActivity.java b/android/src/de/gulpe/sposmroute/spOSMrNActivity.java
index 5d54a04..09731fd 100644
--- a/android/src/de/gulpe/sposmroute/spOSMrNActivity.java
+++ b/android/src/de/gulpe/sposmroute/spOSMrNActivity.java
@@ -1,28 +1,62 @@
package de.gulpe.sposmroute;
import android.app.NativeActivity;
-
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
-
+import android.content.Context;
+import android.location.GpsStatus.NmeaListener;
public class spOSMrNActivity extends NativeActivity {
private static final String TAG = "spOSMroute Java";
spOSMrNActivity _activity;
String gpsline;
+ String nmealine;
+ private LocationManager mLocMan;
+ private LocationListener mLocListener;
int i = 0;
public void onCreate(Bundle savedInstanceState) {
+ mLocMan = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+ mLocListener = new MyLocationListener();
+ mLocMan.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, mLocListener);
+ mLocMan.addNmeaListener(new NmeaListener() {
+ public void onNmeaReceived(long timestamp, String nmea) {
+ nmealine = nmea;
+ }
+ });
+
super.onCreate(savedInstanceState);
// Make your custom init here
_activity = this;
}
+
+
+ private class MyLocationListener implements LocationListener {
+ @Override
+ public void onLocationChanged(Location loc) {
+ }
+
+ @Override
+ public void onProviderDisabled(String provider) {
+ }
+
+ @Override
+ public void onProviderEnabled(String provider) {
+ }
+
+ @Override
+ public void onStatusChanged(String provider, int status, Bundle extras) {
+ }
+ }
// get gps data fill one line into gpsline
public void GPSDataGetLine() {
- i++;
- gpsline = "Number: " + i;
Log.i(TAG, "GPSDataGetLine called");
+ gpsline = nmealine;
+ nmealine = "";
}
// start gps part