gps seems to work on android now.

master
steffen 13 years ago
parent bfbfe09312
commit 56379bb493

@ -1,6 +1,9 @@
Version 0.0.2: name changed to spOSMroute, since on there had been another
OSMroute already.
=============================================================================
(2013-05-28):
- fixed: on android devices gps seems to work now fine.
(2013-05-15):
- fixed: areas will be split into peaces if there is an angle above 180°.
needed for displaying on GLES supported devices..

@ -266,14 +266,14 @@ void gfx_draw_polygon (struct image *dimg, iPoint *p, int pcnt, struct line_styl
glVertexAttribPointer (engine.gles_pos, 3, GL_FLOAT, GL_FALSE, 0, polygon);
glDrawArrays (GL_TRIANGLE_FAN, 0, pcnt);
if (style.width < 1.0) style.width = 1.0;
glLineWidth (style.width);
glUseProgram (engine.gles_prgobject);
glUniform1i (engine.gles_txenabled, 0);
glUniform4fv(engine.gles_color, 1, style.c.c.array);
glVertexAttribPointer (engine.gles_pos, 3, GL_FLOAT, GL_FALSE, 0, polygon);
glDrawArrays (GL_LINE_LOOP, 0, pcnt);
// if (style.width < 1.0) style.width = 1.0;
// glLineWidth (style.width);
//
// glUseProgram (engine.gles_prgobject);
// glUniform1i (engine.gles_txenabled, 0);
// glUniform4fv(engine.gles_color, 1, style.c.c.array);
// glVertexAttribPointer (engine.gles_pos, 3, GL_FLOAT, GL_FALSE, 0, polygon);
// glDrawArrays (GL_LINE_LOOP, 0, pcnt);
};

@ -363,6 +363,7 @@ int gps_android_device_open () {
};
void gps_android_device_close () {
d_printf ("gps_android_device_close:");
ANativeActivity* activity = engine.app->activity;
JavaVM* jvm = engine.app->activity->vm;
JNIEnv* env = NULL;
@ -388,6 +389,8 @@ int gps_android_device_read (char *ptr, int ptrsize) {
jstring jstr;
const char *str;
d_printf ("gps_android_device_read:");
(*jvm)->GetEnv(jvm, (void **)&env, JNI_VERSION_1_6);
jint res = (*jvm)->AttachCurrentThread(jvm, &env, NULL);
if (res == JNI_ERR) {
@ -410,8 +413,8 @@ int gps_android_device_read (char *ptr, int ptrsize) {
}
else ptr[0] = 0;
(*env)->ReleaseStringUTFChars(env, jstr, str);
(*jvm)->DetachCurrentThread(jvm);
return strlen (ptr);
};

@ -27,7 +27,7 @@ public class spOSMrNActivity extends NativeActivity {
if (started) {
nmealine = nmealine + nmea;
}
// Log.i(TAG, "GPSData (cur nmea:"+nmealine+")");
// Log.i(TAG, "GPSData (cur nmea:"+nmealine+")");
}
});
@ -56,7 +56,7 @@ public class spOSMrNActivity extends NativeActivity {
// get gps data fill one line into gpsline
public void GPSDataGetLine() {
// Log.i(TAG, "GPSDataGetLine called");
// Log.i(TAG, "GPSDataGetLine called sending:'"+nmealine+"'");
gpsline = nmealine;
nmealine = "";
}

@ -68,10 +68,14 @@ void config_init () {
/* Android version will not need config and log path.. */
#if defined(ANDROID)
strcpy (cfg.appdatapath, "android/assets");
if (engine.app->activity->internalDataPath == NULL)
if (engine.app->activity->internalDataPath == NULL) {
strncpy (cfg.configpath, "/data/data/de.gulpe.sposmroute/", LEN_FILENAME);
else
strncpy (cfg.logpath, "/data/data/de.gulpe.sposmroute/", LEN_FILENAME);
}
else {
strncpy (cfg.configpath, engine.app->activity->internalDataPath, LEN_FILENAME);
strncpy (cfg.logpath, engine.app->activity->internalDataPath, LEN_FILENAME);
}
/* std::string dataPath(internalPath);
// internalDataPath points directly to the files/ directory
std::string configFile = dataPath + "/app_config.xml";

@ -92,7 +92,7 @@ int execwait (struct s_execcall *p) {
#endif
#ifndef ANDROID
// #ifndef ANDROID
void d_printf (char *fmt,...) {
va_list args;
char text1[1024];
@ -128,7 +128,7 @@ void d_printf (char *fmt,...) {
close (f);
}
};
#endif
// #endif
void d_print_init() {

@ -90,7 +90,8 @@ extern int cmpd (double d1, double d2);
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "sposmroute", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "sposmroute", __VA_ARGS__))
#define d_printf(...) ((void)__android_log_print(ANDROID_LOG_INFO, "sposmroute", __VA_ARGS__))
// #define d_printf(...) ((void)__android_log_print(ANDROID_LOG_INFO, "sposmroute", __VA_ARGS__))
extern void d_printf (char *fmt,...);
#else
extern void d_printf (char *fmt,...);

@ -660,6 +660,7 @@ struct gps_data *gps_loop () {
else dataread = -1;
if (dataread < 0) {
d_printf ("gps_loop data read < 0");
gps_stop();
gpsstatus = -1;
return NULL;
@ -667,7 +668,6 @@ struct gps_data *gps_loop () {
else if (dataread+gpsdatalen > GPS_INBUFSIZE) {
d_printf ("%s:%d gps_loop: ERROR datapos(%d) > GPS_INBUFSIZE(%d)", __FILE__, __LINE__, gpsdatalen + dataread, GPS_INBUFSIZE);
gpsdatalen = GPS_INBUFSIZE;
gps_stop ();
}
else gpsdatalen += dataread;

@ -37,7 +37,7 @@
#define GPS_DEVICELEN 256
#define GPS_ROUTEPOILEN 128
#define GPS_INBUFSIZE 1024
#define GPS_INBUFSIZE 2048
#define GPS_LINELEN 100
#define GPS_MAXSAT 32

Loading…
Cancel
Save