I got nowhere with my previous question, so I did some experimenting
and am trying again. The following code is correct AFAIK, but reliably
crashes the emulator with a SIGSEGV. The build target is 2.3.1.
public class LocationUpdateDemoActivity extends Activity
{
private static final String NEW_SINGLE =
"com.androidbook.location.NEW_SINGLE";
LocationManager locMgr = null;
private BroadcastReceiver receiver;
private PendingIntent pIntent;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
locMgr = (LocationManager)
getSystemService(Context.LOCATION_SERVICE);
}
@Override
public void onResume() {
super.onResume();
pIntent = PendingIntent.getBroadcast(this,
0,
new Intent(NEW_SINGLE),
PendingIntent.FLAG_UPDATE_CURRENT);
IntentFilter iFilter = new IntentFilter(NEW_SINGLE);
receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.v("receiver", "Got intent: " +
intent.getAction());
}
};
this.registerReceiver(receiver, iFilter);
locMgr.requestSingleUpdate(
LocationManager.GPS_PROVIDER,
pIntent);
}
@Override
public void onPause() {
super.onPause();
locMgr.removeUpdates(pIntent);
this.unregisterReceiver(receiver);
}
}
The app starts up okay, displaying a black screen with the proper
title. I then go to the Emulator Control panel in DDMS and click the
Send button for the default GPS coordinates. LogCat then reports the
following, after which all apps die and the emulator starts to reboot
(it gets stuck restarting):
01-31 02:17:08.579: INFO/DEBUG(31): Build fingerprint: 'generic/sdk/
generic:2.3.1/GSI11/93351:eng/test-keys'
01-31 02:17:08.604: INFO/DEBUG(31): pid: 75, tid: 209 >>>
system_server <<<
01-31 02:17:08.626: INFO/DEBUG(31): signal 11 (SIGSEGV), code 1
(SEGV_MAPERR), fault addr 00000000
01-31 02:17:08.640: INFO/DEBUG(31): r0 00000000 r1 407a3b20 r2
41adfcbc r3 46528c74
01-31 02:17:08.650: INFO/DEBUG(31): r4 0000012d r5 00000000 r6
407a3b20 r7 41adfcbc
01-31 02:17:08.650: INFO/DEBUG(31): r8 84301321 r9 84302240 10
00100000 fp 00000001
01-31 02:17:08.669: INFO/DEBUG(31): ip 82f0e7d4 sp 46528c60 lr
82f0ab37 pc 82f07d0e cpsr 00000030
01-31 02:17:09.630: INFO/DEBUG(31): #00 pc 00007d0e /system/
lib/libandroid_servers.so
01-31 02:17:09.630: INFO/DEBUG(31): #01 pc 0000ab32 /system/
lib/libandroid_servers.so
01-31 02:17:09.660: INFO/DEBUG(31): #02 pc 000012ca /system/
lib/hw/gps.goldfish.so
01-31 02:17:09.692: INFO/DEBUG(31): #03 pc 000014ae /system/
lib/hw/gps.goldfish.so
01-31 02:17:09.692: INFO/DEBUG(31): #04 pc 00011a7c /system/
lib/libc.so
01-31 02:17:09.720: INFO/DEBUG(31): #05 pc 00011640 /system/
lib/libc.so
01-31 02:17:09.730: INFO/DEBUG(31): code around pc:
01-31 02:17:09.751: INFO/DEBUG(31): 82f07cec ab04b082 9301cb04
6f646804 b00247a0
01-31 02:17:09.751: INFO/DEBUG(31): 82f07cfc bc08bc10 4718b002
b510b40c ab04b082
01-31 02:17:09.751: INFO/DEBUG(31): 82f07d0c 6804cb04 34f89301
47a06824 bc10b002
01-31 02:17:09.751: INFO/DEBUG(31): 82f07d1c b002bc08 46c04718
b510b40c ab04b082
01-31 02:17:09.751: INFO/DEBUG(31): 82f07d2c 9301cb04 34986804
47a06824 bc10b002
01-31 02:17:09.792: INFO/DEBUG(31): code around lr:
01-31 02:17:09.792: INFO/DEBUG(31): 82f0ab14 91099008 f7fb6aa0
900aeb14 1c3a910b
01-31 02:17:09.792: INFO/DEBUG(31): 82f0ab24 6b646b23 930c1c28
1c31940d f7fd9b0f
01-31 02:17:09.792: INFO/DEBUG(31): 82f0ab34 4906f8e7 44791c28
f7ff3150 b011fe1d
01-31 02:17:09.792: INFO/DEBUG(31): 82f0ab44 46c0bdf0 0000454c
000042c8 00000786
01-31 02:17:09.792: INFO/DEBUG(31): 82f0ab54 f7fbb510 bd10ec7c
4802b510 f7fb4478
01-31 02:17:09.792: INFO/DEBUG(31): stack:
01-31 02:17:09.792: INFO/DEBUG(31): 46528c20 d97f62b7
01-31 02:17:09.792: INFO/DEBUG(31): 46528c24 40c7d685
01-31 02:17:09.792: INFO/DEBUG(31): 46528c28 0000000a
01-31 02:17:09.799: INFO/DEBUG(31): 46528c2c 00000000
01-31 02:17:09.799: INFO/DEBUG(31): 46528c30 0000ab90 [heap]
01-31 02:17:09.799: INFO/DEBUG(31): 46528c34 81d48bd3 /system/
lib/libdvm.so
01-31 02:17:09.799: INFO/DEBUG(31): 46528c38 0000ab90 [heap]
01-31 02:17:09.799: INFO/DEBUG(31): 46528c3c 46528c6c
01-31 02:17:09.799: INFO/DEBUG(31): 46528c40 00010004 [heap]
01-31 02:17:09.809: INFO/DEBUG(31): 46528c44 81d3761b /system/
lib/libdvm.so
01-31 02:17:09.809: INFO/DEBUG(31): 46528c48 00000000
01-31 02:17:09.809: INFO/DEBUG(31): 46528c4c afd0dcc4 /system/
lib/libc.so
01-31 02:17:09.809: INFO/DEBUG(31): 46528c50 00000000
01-31 02:17:09.809: INFO/DEBUG(31): 46528c54 46528e00
01-31 02:17:09.809: INFO/DEBUG(31): 46528c58 df002777
01-31 02:17:09.809: INFO/DEBUG(31): 46528c5c e3a070ad
01-31 02:17:09.809: INFO/DEBUG(31): #00 46528c60 00000001
01-31 02:17:09.809: INFO/DEBUG(31): 46528c64 8053bf25 /system/
lib/libandroid_runtime.so
01-31 02:17:09.809: INFO/DEBUG(31): 46528c68 0000012d
01-31 02:17:09.860: INFO/DEBUG(31): 46528c6c 82f0ab37 /system/
lib/libandroid_servers.so
01-31 02:17:09.860: INFO/DEBUG(31): 46528c70 41adfcbc /dev/
ashmem/dalvik-LinearAlloc (deleted)
01-31 02:17:09.860: INFO/DEBUG(31): 46528c74 00000003
01-31 02:17:09.891: INFO/DEBUG(31): #01 46528c78 4284dfce /data/
dalvik-cache/system@[email protected]@classes.dex
01-31 02:17:09.891: INFO/DEBUG(31): 46528c7c 4042b604 /dev/
ashmem/dalvik-heap (deleted)
01-31 02:17:09.891: INFO/DEBUG(31): 46528c80 cffeb075
01-31 02:17:09.891: INFO/DEBUG(31): 46528c84 c05e8561
01-31 02:17:09.891: INFO/DEBUG(31): 46528c88 00000000
01-31 02:17:09.891: INFO/DEBUG(31): 46528c8c 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528c90 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528c94 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528c98 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528c9c 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528ca0 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528ca4 00000000
01-31 02:17:09.939: INFO/DEBUG(31): 46528ca8 d95e6c00
01-31 02:17:09.969: INFO/DEBUG(31): 46528cac 0000012d
01-31 02:17:09.969: INFO/DEBUG(31): 46528cb0 46528e56
01-31 02:17:09.969: INFO/DEBUG(31): 46528cb4 00000003
01-31 02:17:09.969: INFO/DEBUG(31): 46528cb8 0000000a
01-31 02:17:09.969: INFO/DEBUG(31): 46528cbc 46528de8
01-31 02:17:09.969: INFO/DEBUG(31): 46528cc0 00000000
01-31 02:17:09.969: INFO/DEBUG(31): 46528cc4 46528e6c
01-31 02:17:09.969: INFO/DEBUG(31): 46528cc8 00000001
01-31 02:17:10.000: INFO/DEBUG(31): 46528ccc 843012cd /system/
lib/hw/gps.goldfish.so
01-31 02:17:43.249: DEBUG/Zygote(33): Process 75 terminated by signal
(11)
01-31 02:17:43.249: INFO/Zygote(33): Exit zygote because system server
(75) has terminated
01-31 02:17:43.340: INFO/ServiceManager(28): service 'usagestats' died
01-31 02:17:43.340: INFO/ServiceManager(28): service 'audio' died
Any ideas here? The documentation on this method appears to be
completely unrelated to what I would expect, and what I'm actually
seeing. My guess is that the GPS data is supposed to be added to the
Intent in extras, but this isn't clear from the description. It the
location or status information is being added as data, then my intent
filter won't match and maybe the device dies because of that
disconnect. Help please?
- dave
On Dec 26 2010, 3:31 am, farble1670 <[email protected]>
wrote:
> don't have the answer, but wondering this myself. my guess is the same
> as yours ... the docs must be incorrect.
>
> On Dec 7, 9:02 pm, davemac <[email protected]> wrote:
>
> > This is a new method in Android 2.3's LocationManager. It says
> > basically the same thing as what it says for requestLocationUpdates(),
> > except that there's no way to specify a minTime or minDistance. From
> > the name I would guess that my listener is going to be called once and
> > that's it, maybe as soon as a reliable location is available. But the
> > descriptions start with this:
>
> > Registers the current activity to be notified periodically by the
> > named provider. Periodically, the supplied LocationListener will be
> > called with the current Location or with status updates.
>
> > "Periodically" is not defined nor settable it seems. And why would
> > this method be calledrequestSingleUpdateif it gets multiple updates?
> > Does anyone know how to use these methods?
>
> > Thanks.
--
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