Please file this as a bug. It has been noted before and should be fixed. On Mar 11, 8:40 pm, xt knight <[email protected]> wrote: > When using "geo fix" from the console, some information is truncated > due to poor casting in the code of external/qemu/android/console.c. I > came across that problem when plugging in coordinates for my house and > realizing whatever location was being sent to the emulator was off by > a few blocks. > > The stralloc_add_format statements were changed in order to print the > floating point values most accurately. > > Plus, the stralloc_add_format for altitude was changed to %.1lf (long > float/double) instead of %.1g. g may use scientific notation and I > don't think that's what they want when there's only one digit after > the decimal point. > > The original code was (~ line 2000): > --------------------------------------------- > /* then the latitude */ > hemi = 'N'; > val = params[1]; > if (val < 0) { > hemi = 'S'; > val = -val; > } > deg = (int) val; > min = 60*(val - deg); > val = val - min/60.; > stralloc_add_format( s, ",%02d%02d.%04d,%c", deg, min, (int) > (val * 10000), hemi ); > > /* the longitude */ > hemi = 'E'; > val = params[0]; > if (val < 0) { > hemi = 'W'; > val = -val; > } > deg = (int) val; > min = 60*(val - deg); > val = val - min/60.; > stralloc_add_format( s, ",%02d%02d.%04d,%c", deg, min, (int) > (val * 10000), hemi ); > > /* bogus fix quality, empty satellite count and dilutions */ > stralloc_add_str( s, ",1,,,," ); > > /* optional altitude */ > if (n_params >= 3) { > stralloc_add_format( s, "%.1g", params[2] ); > last_altitude = params[2]; > } else { > stralloc_add_str( s, "," ); > } > > --------------------------------------------- > Please fix the code to the following. > > --------------------------------------------- > /* first, the time */ > stralloc_add_format( s, "$GPGGA,%06d", last_time ); > last_time ++; > > /* then the latitude */ > hemi = 'N'; > val = params[1]; > if (val < 0) { > hemi = 'S'; > val = -val; > } > deg = (int) val; > min = 60.0 * (val - deg); > stralloc_add_format( s, ",%02d%07.4lf,%c", deg, min, hemi ); > > /* the longitude */ > hemi = 'E'; > val = params[0]; > if (val < 0) { > hemi = 'W'; > val = -val; > } > deg = (int) val; > min = 60.0 * (val - deg); > stralloc_add_format( s, ",%02d%07.4lf,%c", deg, min, hemi ); > > /* bogus fix quality, empty satellite count and dilutions */ > stralloc_add_str( s, ",1,,,," ); > > /* optional altitude */ > if (n_params >= 3) { > stralloc_add_format( s, "%.1lf", params[2] ); > last_altitude = params[2]; > } else { > stralloc_add_str( s, "," ); > } > --------------------------------------------- > > This code fixes the issue.
-- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en To unsubscribe, reply using "remove me" as the subject.

