Hi I am going to porting a USB-based GPS module to Android 2.3 on arm device. In the Android2.3 source,I find the file (sdk/emulator/gps/ gps_qemu.c). So i change the file and Android.mk, making them been builded to gps.default.so and been copied to the directory (/system/ lib/hw/). By doing these, i can grab the NMEA data and callback them to JNI. However , When callback to GpsLocationProvider,
env->CallVoidMethod(mCallbacksObj, method_reportLocation, location- >flags, (jdouble)location->latitude, (jdouble)location->longitude, (jdouble)location->altitude, (jfloat)location->speed, (jfloat)location->bearing, (jfloat)location->accuracy, (jlong)location->timestamp); make the VM restart. What happen? D/GpsLocationProvider( 1429): startNavigating D/GpsLocationProvider( 1429): start GPS...................... D/gps_nfs ( 1429): Start send CMD_START command: D/gps_nfs ( 1429): gps thread received 1 events D/gps_nfs ( 1429): gps control fd event D/gps_nfs ( 1429): gps thread starting location_cb=0x8380a67d D/gps_nfs ( 1429): entery nmea_reader_set_callback D/gps_nfs ( 1429): nmea_reader_set_callback: sending latest fix to new callback D/gps_nfs ( 1429): location callback 0X39.978600 I/ActivityManager( 1429): Displayed org.gps.GPSTest/.GPSTest: +1s688ms E/gralloc.mini6410( 1429): [unregister] handle 0x1aaf30 still locked (state=40000001) D/gps_nfs ( 1429): gps thread received 1 events D/gps_nfs ( 1429): gps fd event D/gps_nfs ( 1429): received 32 bytes: $GPGGA,062150.026,3958.7160,N,11 D/gps_nfs ( 1429): received 32 bytes: 619.8405,E,0,0,,35.0,M,-6.5,M,,* D/gps_nfs ( 1429): received 32 bytes: 6F D/gps_nfs ( 1429): D/gps_nfs ( 1429): $GPRMC,062150.026,V,3958.716 D/gps_nfs ( 1429): Received: '$GPGGA,062150.026,3958.7160,N, 11619.8405,E,0,0,,35.0,M,-6.5,M,,*6F D/gps_nfs ( 1429): ' D/gps_nfs ( 1429): Found 12 tokens D/gps_nfs ( 1429): 0: 'GPGGA' D/gps_nfs ( 1429): 1: '062150.026' D/gps_nfs ( 1429): 2: '3958.7160' D/gps_nfs ( 1429): 3: 'N' D/gps_nfs ( 1429): 4: '11619.8405' D/gps_nfs ( 1429): 5: 'E' D/gps_nfs ( 1429): 6: '0' D/gps_nfs ( 1429): 7: '0' D/gps_nfs ( 1429): 8: '35.0' D/gps_nfs ( 1429): 9: 'M' D/gps_nfs ( 1429): 10: '-6.5' D/gps_nfs ( 1429): 11: 'M' D/gps_nfs ( 1429): callback, keeping data needed ! D/GpsLocationProvider( 1429): entry the JNI and the location is 39.978600 I/DEBUG ( 1015): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** I/DEBUG ( 1015): Build fingerprint: 'FriendlyARM/mini6410/ mini6410:2.3.2/GRH78C/eng.root.20110503.151546:eng/test-keys' I/DEBUG ( 1015): pid: 1429, tid: 1550 >>> system_server <<< I/DEBUG ( 1015): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000 I/DEBUG ( 1015): r0 00000000 r1 407d1b60 r2 41645ab4 r3 47defc54 I/DEBUG ( 1015): r4 00000000 r5 8380c7cf r6 00000000 r7 407d1b60 I/DEBUG ( 1015): r8 849015f1 r9 84903250 10 00100000 fp 00000001 I/DEBUG ( 1015): ip 8380e7d4 sp 47defc40 lr 8380a6f9 pc 83807d0e cpsr 00000030 I/DEBUG ( 1015): #00 pc 00007d0e /system/lib/ libandroid_servers.so I/DEBUG ( 1015): #01 pc 0000a6f4 /system/lib/ libandroid_servers.so I/DEBUG ( 1015): #02 pc 000015be /system/lib/hw/ gps.default.so I/DEBUG ( 1015): #03 pc 00001822 /system/lib/hw/ gps.default.so I/DEBUG ( 1015): #04 pc 00011a7c /system/lib/libc.so I/DEBUG ( 1015): #05 pc 00011640 /system/lib/libc.so I/DEBUG ( 1015): I/DEBUG ( 1015): code around pc: I/DEBUG ( 1015): 83807cec ab04b082 9301cb04 6f646804 b00247a0 I/DEBUG ( 1015): 83807cfc bc08bc10 4718b002 b510b40c ab04b082 I/DEBUG ( 1015): 83807d0c 6804cb04 34f89301 47a06824 bc10b002 I/DEBUG ( 1015): 83807d1c b002bc08 46c04718 b510b40c ab04b082 I/DEBUG ( 1015): 83807d2c 9301cb04 34986804 47a06824 bc10b002 I/DEBUG ( 1015): -- unsubscribe: android-porting+unsubscr...@googlegroups.com website: http://groups.google.com/group/android-porting