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 Version 0.0.2: name changed to spOSMroute, since on there had been another
OSMroute already. OSMroute already.
============================================================================= =============================================================================
(2013-05-28):
- fixed: on android devices gps seems to work now fine.
(2013-05-15): (2013-05-15):
- fixed: areas will be split into peaces if there is an angle above 180°. - fixed: areas will be split into peaces if there is an angle above 180°.
needed for displaying on GLES supported devices.. 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); glVertexAttribPointer (engine.gles_pos, 3, GL_FLOAT, GL_FALSE, 0, polygon);
glDrawArrays (GL_TRIANGLE_FAN, 0, pcnt); glDrawArrays (GL_TRIANGLE_FAN, 0, pcnt);
if (style.width < 1.0) style.width = 1.0; // if (style.width < 1.0) style.width = 1.0;
glLineWidth (style.width); // glLineWidth (style.width);
//
glUseProgram (engine.gles_prgobject); // glUseProgram (engine.gles_prgobject);
glUniform1i (engine.gles_txenabled, 0); // glUniform1i (engine.gles_txenabled, 0);
glUniform4fv(engine.gles_color, 1, style.c.c.array); // glUniform4fv(engine.gles_color, 1, style.c.c.array);
glVertexAttribPointer (engine.gles_pos, 3, GL_FLOAT, GL_FALSE, 0, polygon); // glVertexAttribPointer (engine.gles_pos, 3, GL_FLOAT, GL_FALSE, 0, polygon);
glDrawArrays (GL_LINE_LOOP, 0, pcnt); // glDrawArrays (GL_LINE_LOOP, 0, pcnt);
}; };

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

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

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

@ -92,7 +92,7 @@ int execwait (struct s_execcall *p) {
#endif #endif
#ifndef ANDROID // #ifndef ANDROID
void d_printf (char *fmt,...) { void d_printf (char *fmt,...) {
va_list args; va_list args;
char text1[1024]; char text1[1024];
@ -128,7 +128,7 @@ void d_printf (char *fmt,...) {
close (f); close (f);
} }
}; };
#endif // #endif
void d_print_init() { 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 LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "sposmroute", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "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 #else
extern void d_printf (char *fmt,...); extern void d_printf (char *fmt,...);

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

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

Loading…
Cancel
Save