63 Commits

Author SHA1 Message Date
Jean-Baptiste Queru
7e2b4f602a merge from open-source master 2009-11-11 08:26:31 -08:00
Alexey Tarasov
f2db9fb0f8 Typo fix in javadoc
@throw -> @throws
@Deprecated -> @deprecated
2009-11-09 16:07:14 -08:00
Mike Lockwood
86328a99bd LocationManagerService: clear calling identity in mock provider calls.
Fixes bug b/2198028 (testDirectionsFromScratchByTyping fails because of android.permission.ACCESS_WIFI_STATE)

Change-Id: I44e95981d805189ed6d906d388c5189ee788802f
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-10-26 16:18:58 -04:00
Mike Lockwood
03d246779e GPS: Fix problem with SUPL when SUPL APN is already active.
Use ConnectivityManager.CONNECTIVITY_ACTION broadcast in LocationManagerService
to notify GPS when SUPL connection is ready instead of TelephonyIntents.ACTION_ANY_DATA_CONNECTION_STATE_CHANGED,
which is not sent in all cases.
Expand LocationProvider.updateNetworkState() to include NetworkInfo object.

Fixes bug b/2155661

Change-Id: Iee227ace7d536b36cf7973e3e6a8b7a621ce6565
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-10-08 17:24:21 -04:00
Joshua Bartel
080b61ba17 LocationManagerService: Fix race when removing LocationListener
In LocationManagerService if a LocationListener is removed while it has
a pending broadcast the wake lock held while pending broadcasts are
outstanding do not get cleared properly.

There are 2 cases of this race that are fixed:

1. locationCallbackFinished was changed to check the mReceivers HashMap
directly instead of calling getReceiver.  getReceiver would add the
ILocationListener as a new Receiver if it did not exist which caused
a receiver that was removed when it still had a broadcast pending to
be added back in a bad state when the pending broadcast completed.

2. removeUpdatesLocked was changed to decrement the pending broadcasts
when a Receiver is removed that has pending broadcasts.

Fixes bug b/2163871

Change-Id: I50a321c9b3359bf69845236dc4a4b9e38e847335
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-10-08 10:09:41 -04:00
Joshua Bartel
9ff67a5f9b LocationManagerService: Fix race when removing LocationListener
In LocationManagerService if a LocationListener is removed while it has
a pending broadcast the wake lock held while pending broadcasts are
outstanding do not get cleared properly.

There are 2 cases of this race that are fixed:

1. locationCallbackFinished was changed to check the mReceivers HashMap
directly instead of calling getReceiver.  getReceiver would add the
ILocationListener as a new Receiver if it did not exist which caused
a receiver that was removed when it still had a broadcast pending to
be added back in a bad state when the pending broadcast completed.

2. removeUpdatesLocked was changed to decrement the pending broadcasts
when a Receiver is removed that has pending broadcasts.
2009-10-05 12:44:46 -04:00
Yusuf T. Mobile
5550ef4873 Fixed Android issue #2002: "Proximity alert detection logic is broken"
http://code.google.com/p/android/issues/detail?id=2002
2009-09-17 10:56:57 -07:00
Yusuf T. Mobile
2d2078aa1d LocationManagerService: Take fix accuracy into account in proximity zone logic.
Fixes http://code.google.com/p/android/issues/detail?id=2002

Change-Id: If2b0665c556269279c5813f2254f9624a556bd92
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-09-17 13:56:36 -04:00
Mike Lockwood
9aa1fa2d36 LocationManagerService: Remove caching of last known locations to flash.
Change-Id: Ibbab20a7c48823fb74c2e175824f55248f25bf8a
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-09-01 07:51:15 -04:00
Mike Lockwood
3a76fd6279 LocationManagerService: Add null pointer check and remove useless finalize() method.
Change-Id: I4017d38a1bea7564a85575486a7c2aef569dfe5d
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-09-01 07:26:56 -04:00
Jean-Baptiste Queru
72b1f379d5 donut snapshot 2009-08-31 09:17:57 -07:00
Mike Lockwood
18ad9f657b Only allow system code to call LocationManager.sendNiResponse()
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-08-27 14:22:27 -07:00
Danke Xie
22d1f9fb23 gps: Network initiated SUPL
Initial contribution from Qualcomm.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-08-27 14:18:30 -07:00
Mike Lockwood
49c22570bb am 7566c1de: LocationManager: Fix problem replacing GPS and network providers with a mock provider.
Merge commit '7566c1debebe072af76411e11d96810fd1409482' into eclair

* commit '7566c1debebe072af76411e11d96810fd1409482':
  LocationManager: Fix problem replacing GPS and network providers with a mock provider.
2009-08-27 09:25:36 -07:00
Mike Lockwood
7566c1debe LocationManager: Fix problem replacing GPS and network providers with a mock provider.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-08-26 23:34:18 -07:00
Mike Lockwood
c6cc836f88 LocationManagerService: Add NullPointerException to avoid change in behavior.
After fixing a null pointer check we were no longer throwing NullPointerExceptions
which caused a CTS test to fail.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-08-17 13:16:08 -04:00
Mike Lockwood
6ba7ae1e4c LocationManagerService: Fix null pointer check in sendExtraCommand().
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-08-17 08:39:12 -04:00
Jean-Baptiste Queru
cf4550c319 donut snapshot 2009-07-21 11:16:54 -07:00
Mike Lockwood
b7e9922722 LocationManagerService: Use Context.checkCallingOrSelfPermission for permission checks
so other services running in the system process can use the location manager.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-07-07 13:18:21 -04:00
Suchi Amalapurapu
fff2fda019 Fix memory leaks in system_server
unlink DeathRecipients in a whole bunch of places to avoid memory leaks
2009-07-01 12:55:30 -07:00
Simon Schoar
4686657cee LocationManagerService: Fix logic error removing multiple dead receivers.
If multiple receivers are dead, only the first one will be added.
found in http://code.google.com/p/android/issues/detail?id=2651

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-06-10 20:23:31 -04:00
Mike Lockwood
6ba283f726 LocationManagerService: Remove some unneeded imports.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-06-07 23:29:25 -04:00
Mike Lockwood
fd6e5f0dda location: Replace ILocationCollector interface with new ILocationProvider method
This change replaces ILocationCollector with a more general mechanism that
passes locations received from a provider to all other providers.
The network location provider now uses this to implement the location collector.
In the future, this could be used to inject network locations to the GPS
as aiding data.

This change also removes the now obsolete permission INSTALL_LOCATION_COLLECTOR.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-21 11:28:20 -04:00
Jean-Baptiste Queru
843ef36f7b donut snapshot 2009-05-20 11:28:04 -07:00
Mike Lockwood
3681f2614f LocationManager: Recover if process containing NetworkLocation provider crashes
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-12 10:52:03 -04:00
Mike Lockwood
95427cdbd8 location: Fix mock provider support
Allow mock providers to be used for proximity alerts.
Clear calling identity so mock provider support does not fail due to
lack of INSTALL_LOCATION_PROVIDER permission.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-07 13:27:54 -04:00
Mike Lockwood
8dfe5d8c6b location: Remove two unnecessary variables.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-07 11:49:01 -04:00
Mike Lockwood
0528b9b26a location: Location Manager wakelock cleanup
Location Providers are now responsible for their own wakelocks and scheduling.

Also fixed a deadlock in LocationManagerService in the code for releasing
wakelocks after client notifications have been received.
The fix is to use the Receiver object and mWakeLock for synchronization
 instead of the global mLock lock.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-07 11:02:22 -04:00
Mike Lockwood
275555c8eb location: Add support for location providers outside of the system process.
Also added new permissions android.permission.INSTALL_LOCATION_PROVIDER
and android.permission.INSTALL_LOCATION_COLLECTOR to the public API.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-01 15:06:31 -04:00
Mike Lockwood
15e3d0f082 location: Use ILocationProvider Binder interface for all location providers.
This change eliminates the LocationProviderImpl class which had been used
for location providers running in the system process.
Now the LocationProvider base class is only used to implement the
LocationManager.createProvider() method for retrieving provider information.
Added a new IGpsStatusProvider interface for providers that serve GPS status.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-05-01 08:24:47 -04:00
Mike Lockwood
662ea09a71 location: Optimize use of mProviders ArrayList.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-28 21:38:06 -04:00
Mike Lockwood
b8adcad61d location: Remove obsolete fake provider support.
Now that we have GPS support in the emulator and public APIs for mock providers,
the fake provider support is no longer needed.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-28 13:23:57 -04:00
Mike Lockwood
79762a3ee3 location: Move DummyLocationProvider.java and LocationProviderImpl.java to the internal package.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-28 12:42:08 -04:00
Mike Lockwood
3d12b51ee3 location: Run LocationManagerService in a separate thread.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-28 07:28:33 -04:00
Mike Lockwood
48f1751822 location: Location Manager wakelock cleanup, phase 2
Remove two second timeout for wakelock when broadcasting events to
location listeners. Instead, hold wakelock until receipt of the event
is acknowledged, either via a Binder call or the
PendingIntent.OnFinished interface.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-23 19:27:41 -07:00
Mike Lockwood
a0e3cd3853 Fix timing problem that was introduced when we removed location provider polling
The wake lock was not being held until after we enabled location tracking,
so the check to see if the wake lock was held before propogating a
new location prevented us from receiving a network location as soon as we
enabled the provider.
This check is not necessary anyway, so this change removes it.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-21 21:27:33 -07:00
Mike Lockwood
9ce7217c8e location: Remove support for a message that never actually gets sent.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-21 20:18:41 -07:00
Mike Lockwood
61fc286e8f location: Remove unnecessary code that monitors the screen on/off state.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-21 20:02:52 -07:00
Mike Lockwood
6de3154674 location: Add some null pointer checks.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-21 12:13:35 -07:00
Mike Lockwood
e2b44c5aaf location: Location Manager wakelock cleanup, phase 1
Move cell and wifi lock from LocationManagerService to NetworkLocationProvider

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-21 09:38:18 -07:00
Mike Lockwood
98cb667974 More Location Manager cleanup:
Move LocationCollector support out of GpsLocationProvider.
Don't disable GPS when screen is off.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-17 18:06:18 -04:00
Mike Lockwood
2f82c4eb0b location: Generalize support for location provider usage tracking.
This replaces two different mechanisms that were used for GPS and Netork
location provider tracking.
Move BatteryStats logging of GPS usage from LocationManagerService to
GpsLocationProvider.
Clean up tracking of location listeners in LocationManagerService and remove
some HashMaps that are no longer needed.

Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-17 17:00:32 -04:00
Mike Lockwood
a55c321329 location: Move geocoding support from ILocationProvider to a new interface.
Signed-off-by: Mike Lockwood <lockwood@android.com>
2009-04-15 11:17:37 -04:00
Mike Lockwood
e932f7f2a4 AI 144663: Use Binder interfaces between NetworkLocationManager and LocationManagerService.
This fixes a hack that was added when NetworkLocationManager was moved out of the framework.
  This also lays the groundwork for supporting location providers outside of the system process.
  BUG=1729031

Automated import of CL 144663
2009-04-06 10:51:26 -07:00
Mike Lockwood
f113fbe67b AI 144620: Clean up interface between NetworkLocationProvider and LocationManagerService (part 1)
Move broadcast receivers for wifi scan results and battery status
  from LocationManagerService to NetworkLocationProvider
  Add a Service for the NetworkLocationProvider, so we can install it from its
  own thread rather than from BOOT_COMPLETED or callback from LocationManagerService.
  (this Service was also required for receiving Intents in NetworkLocationProvider)
  BUG=1729031

Automated import of CL 144620
2009-04-06 05:17:28 -07:00
Mike Lockwood
66eb4acb89 AI 144599: Location Manager cleanup:
Move PhoneStateListener for listening to cell location changes from LocationManagerService
  to the NetworkLocationProvider.
  Move CellState class out of the core framework to the NetworkLocationProvider service.
  NetworkLocationManager now notifies the collector of its state, rather than LocationManagerService.
  BUG=1729031

Automated import of CL 144599
2009-04-05 14:50:22 -07:00
Mike Lockwood
4e50b78bda AI 144452: More Location Manager cleanup:
Remove 1 Hz "heartbeat" polling of location providers from LocationManagerService.
  Now location providers report their location to LocationManagerService via
  LocationManager.setLocation() rather than waiting to be polled.
  This reduces GPS fix latency by up to one second.
  Remove LocationProvderImpl.getLocation().
  Since we are no longer polling, this method is no longer necessary.
  BUG=1729031

Automated import of CL 144452
2009-04-03 08:24:43 -07:00
Mike Lockwood
9637d47489 AI 144372: Cleanup Settings support for enabling and disabling location providers:
LocationManagerService now listens for changes to settings,
  making LocationManager.updateProviders() unnecessary.
  Removed LocationManager.updateProviders()
  Added Settings.Secure.setLocationProviderEnabled(), which is a thread-safe way
  of enabling or disabling a single location provider.
  This is safer than reading, modifying and writing the LOCATION_PROVIDERS_ALLOWED directly.
  BUG=1729031

Automated import of CL 144372
2009-04-02 21:41:57 -07:00
Amith Yamasani
e1ccba2113 AI 144257: am: CL 144256 Need to show opt-in screen for location collection.
Added a screen to the setup wizard, after login, to ask user to
  opt-in for location collection.
  Added a dialog to Settings when user turns on Network location.
  Fixed a security permission issue in LocationManagerService related
  to this change.
  Original author: yamasani
  Merged from: //branches/cupcake/...

Automated import of CL 144257
2009-04-02 11:40:25 -07:00
Amith Yamasani
29c1c42e18 AI 144256: Need to show opt-in screen for location collection.
Added a screen to the setup wizard, after login, to ask user to
  opt-in for location collection.
  Added a dialog to Settings when user turns on Network location.
  Fixed a security permission issue in LocationManagerService related
  to this change.
  BUG=1752566

Automated import of CL 144256
2009-04-02 11:39:09 -07:00