History log of /frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
b34b3211e01b0ae946f786b220f73d340159503b 16-Apr-2013 Stan Chesnutt <chesnutt@google.com> Merge "Re-introduce single-shot mode, set MS Assist Mode A when in single-shot mode." into jb-mr2-dev
1d72d8c33d1ecba5b06a87aa06211477345fd4c5 16-Apr-2013 Stan Chesnutt <chesnutt@google.com> Re-introduce single-shot mode, set MS Assist Mode A when in
single-shot mode.

Fixes bug http://b.corp.google.com/issue?id=8204392

Change-Id: I5594447c75abab6b71bd12706409666bb75736c5
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
8ce470dd4ba0608abb6b5eae117cefca927af96b 03-Apr-2013 Jaikumar Ganesh <jaikumar@google.com> GPS Hardware geofencing.

Add support for doing geofencing in hardware.

Change-Id: I6d5015190e8d84e1f4beb1010ed977a71c1622d0
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
e11f058ee0c04be308126bb4fbc0c8e9901164c5 07-Feb-2013 Jaikumar Ganesh <jaikumarg@android.com> am d080bb07: am b9620a89: am 9434c112: Merge "Services: Adding HSPAP info in Android"

# By Arun Ravindran
# Via Android Git Automerger (2) and others
* commit 'd080bb07c88ca5ccf99f326789ed472448b50832':
Services: Adding HSPAP info in Android
9434c112d1fef52ade78d7ef818daf981bf63bef 07-Feb-2013 Jaikumar Ganesh <jaikumarg@android.com> Merge "Services: Adding HSPAP info in Android"
03cdd3d275499df3ef1059905899dcc5aaf2ab01 02-Feb-2013 Victoria Lease <violets@google.com> dual-mode switching single/multiuser ServiceWatcher

This changelist revises LocationManager's previous multiuser system.

Location provider services that are not multiuser-aware continue to
run as before: ServiceWatcher binds to location provider services as
the current active user. When the device switches from one user to
another, ServiceWatcher unbinds from the old user's location provider
service and binds to the new user's instance.

Now, location provider services that are multiuser-aware or
user-agnostic can declare "serviceIsMultiuser" metadata in their
AndroidManifest.xml to prevent ServiceWatcher from performing this
switching. These services will run as singleton services and will be
expected to handle user switches on their own.

With this feature in, I was able to switch FusedLocationProvider to
run in multiuser mode, sharing the system_server process instead of
running in its own process. The NetworkLocationProvider is unchanged,
still running in singleuser mode, cheerfully oblivious to the
possibility that there might be any user on the device besides the
one it services.

Bug: 8028045
Change-Id: I1a5bd032918419bab6edb46c62ff8c6811170654
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
7b5aeca50b3069b1f8bd4db0317a3829c4b540a2 25-Jan-2013 Laurent Tu <laurentt@google.com> Fix GpsLocationProvider.enable/disable/isEnabled

Fix the issue where GpsLocationProvider.isEnabled() returns true when it
is really false (and the other way around), when the handler hasn't
processed the enable/disable messages yet.

This can be systematically reproduced when the caller code is using the
same thread as the thread of the handler in GpsLocationProvider.

For example, this was happening in LocationManagerService.switchUser().
It would start by disabling all the providers (with
updateProviderListenersLocked()), then re-enable them in
updateProvidersLocked() only when isEnalbed()==false, which was in the
wrong state since the GpsLocationProvider.ENABLE message hadn't been
processed yet. As a result, the GpsLocationProvider was disabled upon
startup of the phone.

This is a slight problem for the enable() contract, which specifies that
getStatus() must be handled, getStatus() will be handled but might have
slighty not-up-to-date info in this case.

Bug: 8028017

Change-Id: Iff91a11cc150e9029a6db85b64a10a926e12b0ba
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
ea78b85bb7b688a513fcf456f0e1aeee11e106ea 15-Jan-2013 Victoria Lease <violets@google.com> fix NPE in updateClientUids

Bug: 8009908
Change-Id: I54d97c587a3fa9d003f654f98fdfdbe21af791d6
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
002a54e2291eeb3a3fd0b6b3f9dbc96a7c805062 11-Jan-2013 Dianne Hackborn <hackbod@google.com> WorkSource can now track package names.

Use this to track the package name of applications
accessing GPS.

And now the app ops service can enforce that callers
must provide valid package names.

Change-Id: I842a0abe236ea85f77926d708547f0f95c24bd49
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
a06de0f29b58df9246779cc4bfd8f06f7205ddb6 12-Dec-2012 Dianne Hackborn <hackbod@google.com> New "app ops" service.

Initial implementation, tracking use of the vibrator, GPS,
and location reports.

Also includes an update to battery stats to also keep track of
vibrator usage (since I had to be in the vibrator code anyway
to instrument it).

The service itself is only half-done. Currently no API to
retrieve the data (which once there will allow us to show you
which apps are currently causing the GPS to run and who has
recently accessed your location), it doesn't persist its data
like it should, and no way to tell it to reject app requests
for various operations.

But hey, it's a start!

Change-Id: I05b8d76cc4a4f7f37bc758c1701f51f9e0550e15
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
5cd731a2333479d85b1bdf6dbf8a185df2877146 20-Dec-2012 Victoria Lease <violets@google.com> prevent concurrency issues during LocationManager init

systemReady() was returning before the LocationManagerService was
actually ready. Applications making LocationManager transactions
during their startup could possibly hit a race condition with the
yet-uninitialised LocationManagerService.

To guarantee that LocationManagerService is actually ready before
returning from systemReady(), we simply do the startup work on the
thread that called systemReady(), rather than spin up a secondary
thread to do the work asynchronously.

LocationWorkerHandler still needs a thread to do its work on, so
rather than have it run on the secondary thread that was
previously used for systemReady()'s work, we create a HandlerThread
for it.

Additionally, LocationManagerService.init() really needed to grab
lock for some of the things it was doing. I moved all of the code
that could benefit from mutex protection to a single section of
systemReady() and wrapped it up with a lock while I was at it.

Bug: 7723944
Change-Id: I51d480e2781622c3a14769c3a2019a2407dcfd8a
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
7b172a49a90ea6784dbfe0002474f9d4fd4ace1a 07-Nov-2012 Kenny Root <kroot@google.com> am 58ed5d74: am 768d9e1a: Merge "Correct executable bit for source files"

* commit '58ed5d748c0b9b64845975ef5844ad313de7c3f6':
Correct executable bit for source files
58ed5d748c0b9b64845975ef5844ad313de7c3f6 07-Nov-2012 Kenny Root <kroot@google.com> am 768d9e1a: Merge "Correct executable bit for source files"

* commit '768d9e1a72ceee7d4a5f608776b87b62d6ce4a04':
Correct executable bit for source files
3a084af2e90849aaa8beb3a610189e3399c63ea0 07-Nov-2012 Kenny Root <kroot@google.com> Correct executable bit for source files

Many media files and source code files were marked as executable in Git.
Remove those.

Also a shell script and python script were not marked as executable.

Change-Id: Ieb51bafb46c895a21d2e83696f5a901ba752b2c5
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
d50d0c31d4c4472c91bad64d23d2adcaeec010c6 29-Oct-2012 Victoria Lease <violets@google.com> don't complain about CDMA support on non-CDMA devices

GpsLocationProvider emits a message on CDMA phones, warning about
lack of CDMA support. It also emits this message on every other
non-GSM device. I've pulled the conditions in a bit for this so that
it only happens on actual CDMA devices.

Change-Id: I1a122e2599c83c730be014c61385e60ef819b5a1
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b711d57ca4e2c6a1befbfa1a41f4b8094755a93f 02-Oct-2012 Victoria Lease <violets@google.com> Multiuser love for LocationManager

LocationManagerService now keeps track of the current user ID and
denies location requests made by all but the foreground user.

Additionally, location settings are now user-specific, rather than
global to the device. Location provider services now run as specific
users, and when the device's foreground user changes, we rebind to
appropriately-owned providers.

Bug: 6926385
Bug: 7247203
Change-Id: I346074959e96e52bcc77eeb188dffe322b690879
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
5c24fd03426db58b63e1a792c2595447cb722d46 01-Oct-2012 Victoria Lease <violets@google.com> Avoid NPE in GpsLocationProvider

Oops, looks like we were spinning up a secondary thread to run some
tasks that will just happen on the main thread regardless. Removed
the secondary thread and fixed up initialisation order regarding
mHandler and things that post to it. Also reordered GPS and
PASSIVE provider initialisation order since GPS depends on PASSIVE.

This should be both safer and easier to read.

Bug: 7248029
Change-Id: I8630caf0a7bd1b2c401603075676f13dda5be4fa
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
4118012da9a22694b3353040a485f8cdc27e2f17 26-Sep-2012 Philip Milne <pmilne@google.com> Fix for bug: #7173350. elapsedRealtimeNano() -> elapsedRealtimeNanos()

Change-Id: Ie38952bbaace080e81e41e61350cda172951d548
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
bf6f6f9de72c9fd15e6bda9f228c05a9b37d6324 26-Sep-2012 Jeff Brown <jeffbrown@google.com> Update references to migrated global settings.

Fixed one setting that was migrated but not marked deprecated.

Removed a hidden setting that is no longer used by the new
power manager service.

Bug: 7231172
Change-Id: I332f020f876a18d519a1a20598a172f1c98036f7
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
53fe75677212d0eb45e256a78599d7866256bc6a 24-Sep-2012 Philip Milne <pmilne@google.com> Revert "Fix for bug: #7173350. elapsedRealtimeNano() -> elapsedRealtimeNanos()"

This reverts commit 2f6d8829524dfca3a77e9a57c3b9c3862209877d

Change-Id: Id5af767a09fc319127c4ebef837c5b7a7f75cb01
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
2f6d8829524dfca3a77e9a57c3b9c3862209877d 21-Sep-2012 Philip Milne <pmilne@google.com> Fix for bug: #7173350. elapsedRealtimeNano() -> elapsedRealtimeNanos()

Change-Id: I71c24ea10093ece07a0780e97bc641ff548c1a44
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
58d46126e4d11e0cc5f6a1192829511bd5850ce2 30-Jul-2012 Arun Ravindran <arun.ravindran@intel.com> Services: Adding HSPAP info in Android

HSPA+ management is missing in GPS Loc service.

Change-Id: If828c1b078d5989f501c3eb917a573a6db773453
Author: Arun Ravindran <arun.ravindran@intel.com>
Signed-off-by: Arun Ravindran <arun.ravindran@intel.com>
Signed-off-by: Regnier, PhilippeX <philippex.regnier@intel.com>
Signed-off-by: Shuo Gao <shuo.gao@intel.com>
Signed-off-by: Bruce Beare <bruce.j.beare@intel.com>
Signed-off-by: Jack Ren <jack.ren@intel.com>
Author-tracking-BZ: 41786
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
5ac72a29593ab9a20337a2225df52bdf4754be02 30-Aug-2012 Dianne Hackborn <hackbod@google.com> Improve multi-user broadcasts.

You can now use ALL and CURRENT when sending broadcasts, to specify
where the broadcast goes.

Sticky broadcasts are now correctly separated per user, and registered
receivers are filtered based on the requested target user.

New Context APIs for more kinds of sending broadcasts as users.

Updating a bunch of system code that sends broadcasts to explicitly
specify which user the broadcast goes to.

Made a single version of the code for interpreting the requested
target user ID that all entries to activity manager (start activity,
send broadcast, start service) use.

Change-Id: Ie29f02dd5242ef8c8fa56c54593a315cd2574e1c
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
028872fe07f9b3468aa1506c658d6aae25f53015 25-Aug-2012 Jeff Brown <jeffbrown@google.com> Fix GpsLocationProvider wake lock book keeping.

The GpsLocationProvider typically acquires a wake lock
before sending a message to its handler then releases it
after the message has been handled.

There were two cases where messages might be removed from
the handler, resulting in the wake lock being released.

There were also two cases where background tasks were being
started while not holding a wake lock for the duration.

Fixed these issues and marked the GpsLocationProvider handler
as asynchronous too so that it doesn't accidentally get
blocked by traversals if it happens to share a thread with some UI.

Bug: 7057752
Change-Id: I8e12fc91ae943e84db068c08ec809879537503c6
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
40e1bafc37e2a83453535132c62aeb7ef706de25 10-Jan-2012 Kevin Tang <zhikait@codeaurora.org> Fix GPS provider thread blocked by NTP and XTRA

Currently, the NTP and XTRA downloads block on the GPS provider thread.
This could potentially block the next tasks for over a minute of time.
If the upcoming task happens to be AGPS, AGPS will time out.

Placed the NTP and XTRA downloads in separate threads.

Bug: 6980618

Change-Id: I57a6aaf5348212bc1246813f6d941da7d5b19136
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b94b41f516e69e137553157064f9619e1a2188e3 22-Aug-2012 Brian Muramatsu <btmura@google.com> Listen for CONNECTIVITY_ACTION in GPS Provider

Bug: 7020678

The broadcast receiver in GpsLocationProvider now listens for
CONNECTIVITY_ACTION changes. Set the intent filter so that
it catches those actions and updates the network state.

Change-Id: I7efd393dfe2aa8b172dd6701d42ff9ed687648a2
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
f2033e473aea4bfd0152feee51129fc4748e6f79 17-Aug-2012 Nick Pelly <npelly@google.com> Fix regression from location changes: GPS battery tracking.

The client UID list wasn't being saved, so we never removed
client UID's. As a result apps get blamed for GPS even when
they are no longer using it.

Bug: 7007314
Change-Id: Idff3b7c8c0ee87b99c9bdd7bd20d8391d0b1ac0f
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
6fa9ad4afcd762aea519ff61811386c23d18ddb2 16-Jul-2012 Nick Pelly <npelly@google.com> Location overhaul, major commit.

Themes: Fused Location, Geofencing, LocationRequest.

API changes
o Fused location is always returned when asking for location by Criteria.
o Fused location is never returned as a LocationProvider object, nor returned
as a provider String. This wouldn't make sense because the current API
design assumes that LocationProvider's have fixed properties (accuracy, power
etc).
o The fused location engine will tune itself based on the criteria passed
by applications.
o Deprecate LocationProvider. Apps should use fused location (via Criteria
class), instead of enumerating through LocationProvider objects. It is
also over-engineered: designed for a world with a plethora of location
providers that never materialized.
o The Criteria class is also over-engineered, with many methods that aren't
currently used, but for now we won't deprecate them since they may have
value in the future. It is now used to tune the fused location engine.
o Deprecate getBestProvider() and getProvider().
o Add getLastKnownLocation(Criteria), so we can return last known
fused locations.
o Apps with only ACCESS_COARSE_LOCATION _can_ now use the GPS, but the location
they receive will be fudged to a 1km radius. They can also use NETWORK
and fused locatoins, which are fudged in the same way if necessary.
o Totally deprecate Criteria, in favor of LocationRequest.
Criteria was designed to map QOS to a location provider. What we
really need is to map QOS to _locations_.
The death knell was the conflicting ACCURACY_ constants on
Criteria, with values 1, 2, 3, 1, 2. Yes not a typo.
o Totally deprecate LocationProvider.
o Deprecate test/mock provider support. They require a named provider,
which is a concept we are moving away from. We do not yet have a
replacement, but I think its ok to deprecate since you also
need to have 'allow mock locations' checked in developer settings.
They will continue to work.
o Deprecate event codes associated with provider status. The fused
provider is _always_ available.
o Introduce Geofence data object to provide an easier path fowards
for polygons etc.

Implementation changes
o Fused implementation: incoming (GPS and NLP) location fixes are given
a weight, that exponentially decays with respect to age and accuracy.
The half-life of age is ~60 seconds, and the half-life of accuracy is
~20 meters. The fixes are weighted and combined to output a fused
location.
o Move Fused Location impl into
frameworks/base/packages/FusedLocation
o Refactor Fused Location behind the IProvider AIDL interface. This allow us
to distribute newer versions of Fused Location in a new APK, at run-time.
o Introduce ServiceWatcher.java, to refactor code used for run-time upgrades of
Fused Location, and the NLP.
o Fused Location is by default run in the system server (but can be moved to
any process or pacakge, even at run-time).
o Plumb the Criteria requirements through to the Fused Location provider via
ILocation.sendExtraCommand(). I re-used this interface to avoid modifying the
ILocation interface, which would have broken run-time upgradability of the
NLP.
o Switch the geofence manager to using fused location.
o Clean up 'adb shell dumpsys location' output.
o Introduce config_locationProviderPackageNames and
config_overlay_locationProviderPackageNames to configure the default
and overlay package names for Geocoder, NLP and FLP.
o Lots of misc cleanup.
o Improve location fudging. Apply random vector then quantize.
o Hide internal POJO's from clients of com.android.location.provider.jar
(NLP and FLP). Introduce wrappers ProviderRequestUnbundled and
ProviderPropertiesUnbundled.
o Introduce ProviderProperties to collapse all the provider accuracy/
bearing/altitude/power plumbing (that is deprecated anyway).
o DELETE lots of code: DummyLocationProvider,
o Rename the (internal) LocationProvider to LocationProviderBase.
o Plumb pid, uid and packageName throughout
LocationManagerService#Receiver to support future features.

TODO: The FLP and Geofencer have a lot of room to be more intelligent
TODO: Documentation
TODO: test test test

Change-Id: Iacefd2f176ed40ce1e23b090a164792aa8819c55
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
1715cb36d9231f08f244ec6c0a373f1a46d66cc7 09-Aug-2012 Brian Muramatsu <btmura@google.com> Control GPS logging with property

This allows users of the PDK to debug GPS issues.

Change-Id: I4aff12e124f4264abd1a0be012df4c431044189c
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
2eeeec248a38ff33999c83f4b8d5bab7d50e79d2 18-Jul-2012 Nick Pelly <npelly@google.com> Improve Location object.

Add getElapsedRealtimeNano():

Currently Location just has getTime() and setTime() based on UTC time.
This is entirely unreliable since it is not guaranteed monotonic.
There is a lot of code that compares fix age based on deltas -
and it is all broken in the case of a system clock change. System
clock can change when switching cellular networks (and in some
cases when switching towers).

Document the meaning of getAccuracy():
It is the horizontal, 95% confidence radius.

Make some fields mandatory if they are reported by a LocationProvider:

All Locations returned by a LocationProvider must include at the
minimum a lat, long, timestamps, and accuracy. This is necessary
to perform fused location. There are no public API's for applications
to feed locations into a location provider so this should not cause
any breakage.

If a LocationProvider does not fill in enough fields on a Location
object then it is dropped, and logged.

Bug: 4305998
Change-Id: I7df77125d8a64e174d7bc8c2708661b4f33461ea
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
33034b13cae1429d526722374bd39be3f9605ae4 10-Jul-2012 Wink Saville <wink@google.com> Create telephony-common and mms-common - DO NOT MERGE

These have been created to reduce the size and complexity
of frameworks/base.

mms-common was created by moving all of
frameworks/base/core/java/com/google/android/mms
to:
frameworks/opt/mms

telephony-common was created by moving some of
frameworks/base/telephony
to:
frameworks/opt/telephony

Change-Id: If6cb3c6ff952767fc10210f923dc0e4b343cd4ad
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
a639b311e93ad14d9ee5c2b2c215ed2d86c32d2a 10-Jul-2012 Wink Saville <wink@google.com> Create telephony-common and mms-common

These have been created to reduce the size and complexity
of frameworks/base.

mms-common was created by moving all of
frameworks/base/core/java/com/google/android/mms
to:
frameworks/opt/mms

telephony-common was created by moving some of
frameworks/base/telephony
to:
frameworks/opt/telephony

Change-Id: If6cb3c6ff952767fc10210f923dc0e4b343cd4ad
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b041f23026536dd287c1a9a962642c84ebd10004 08-May-2012 Nick Pelly <npelly@google.com> Increase interval threshold below which we just leave the GPS on.

Hot TTTF is about 5 seconds, so don't cycle the GPS hardware until
the interval is 10 seconds.

Also add some more dumpsys logging.

Bug: 6367964
Change-Id: I39402fc61f34458a1639c8814610a02606a8eb79
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
973481d6677ba89721558cb245fa8c701bf5463b 28-Feb-2012 Jean-Baptiste Queru <jbq@google.com> am ccd08b8d: am e939edb5: am f418738c: am d7fa7dee: Merge "Fixes update of extras Bundle in new Locations for GPS Provider"

* commit 'ccd08b8de9dc4c9cfaee93cbbcc7053cc9e8d96f':
Fixes update of extras Bundle in new Locations for GPS Provider
ced2b2c09a209e017f02cf28ddd9d35b2d8b8ada 19-Dec-2011 Sean Barbeau <sjbarbeau@gmail.com> Fixes update of extras Bundle in new Locations for GPS Provider

This patch fixes the update of the extras Bundle in the Location object
each time the platform derives a new GPS location and passes it to
listening applications via LocationListener.onLocationChanged().

Sometime between Android 1.6 and 2.1 a bug was introduced that stopped
any extras calculated by the platform from being added into the Location
object, which means they were never passed up to any LocationListeners
for the GPS Provider. This manifested as an issue where the number of
satellites used to derive a fix always reported “0” when retrieved from
Location.getExtras() (Issue 4810 on the Android Issues page -
http://code.google.com/p/android/issues/detail?id=4810).

Sample code to be used within
LocationListener.onLocationChanged(Location location) which demonstrates
this problem:

Bundle extras = location.getExtras();

Int numSats = extras.getInt("satellites"); //This always reports “0”
//post 1.5, although in 1.5
//it properly reported the
//number of satellites used
//to derive this location

The “satellites” extra key/value pair for Locations is defined in
http://developer.android.com/reference/android/location/Location.html#getExtras()

This patch modifies GPSLocationProvider.java to properly update the
Location object with the extras Bundle before the Location object is
passed to any listening applications, and therefore the number of
satellites used to derive a fix can now be retrieved properly through
location.getExtras() (as shown in sample code above). Therefore, this
patch fixes Issue 4810.

Change-Id: Ief21056a3623269bb3149ec78ab92738a234f57f
Signed-off-by: Sean Barbeau <sjbarbeau@gmail.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
2ffe0ad39127950074dc74bc5d15a284975da5ae 25-Oct-2011 Mike Lockwood <lockwood@android.com> Always use fresh NTP time for GPS

This is especially important when AGPS is disabled

Bug: 5355661

Change-Id: I072dbe1ddf43aa24c8fc39b750040504a1633c53
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
2b15cb21b313f83f7cccdc6f9116ba31ddc190ad 04-Aug-2011 Mike Lockwood <lockwood@android.com> Resolve merge conflict for '75f1fdec':

GPS Provider Service changes

GPS engine needs to receive network state changes from Android fw.

Added db query for the current APN, also added a new parameter
between JNI / HAL to the new method in AGpsRilInterface struct
for gps engine to receive APN from GPSLocationService

Conflicts:
services/java/com/android/server/location/GpsLocationProvider.java

Change-Id: I33c45027f1571493d3525324f62d199517c4960c
Signed-off-by: Mike Lockwood <lockwood@android.com>
75f1fdec3e95e9c8b5add02ba6e9b14913058f22 04-Aug-2011 Mike Lockwood <lockwood%android.com@gtempaccount.com> am 0b3af353: am a82ee49a: am 8f5dd9ad: Merge "GPS Provider Service changes"

* commit '0b3af353dcf61177158934a11404cf2914038696':
GPS Provider Service changes
a5fe6b2efee02ab11c35e80ec50fec62be227273 05-Jun-2011 Kevin Tang <zhikait@codeaurora.org> GPS Provider Service changes

GPS engine needs to receive network state changes from Android fw.

Added db query for the current APN, also added a new parameter
between JNI / HAL to the new method in AGpsRilInterface struct
for gps engine to receive APN from GPSLocationService

Change-Id: I62e35c948d2ac1961771d1a10581a3b8e695c05a
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b7d95a46dfacf04896d5b084f13bcbe6eab33633 28-Jul-2011 Mike Lockwood <lockwood%android.com@gtempaccount.com> am 21700fed: am 5f7203eb: am 5a27a754: am bd1dee94: Merge "gps: Adding ip address for AGps"

* commit '21700fedfe29f6a0a752d2bea46142038e69136c':
gps: Adding ip address for AGps
21700fedfe29f6a0a752d2bea46142038e69136c 28-Jul-2011 Mike Lockwood <lockwood%android.com@gtempaccount.com> am 5f7203eb: am 5a27a754: am bd1dee94: Merge "gps: Adding ip address for AGps"

* commit '5f7203eb258503bc5d2ba29176bdf483a68a93b8':
gps: Adding ip address for AGps
8efd74dbedb65f69734318d9d6be70767f30b57a 02-Mar-2011 Stephen Li <stephenl@codeaurora.org> gps: Adding ip address for AGps

Change-Id: Ic590187d159853de2f1bd2912e159f0a00d8fb10
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
3885228457bc61a86fe4e91ff18fb331fc3ee777 28-Jul-2011 Mike Lockwood <lockwood%android.com@gtempaccount.com> am f8d13e53: am bf676d46: am 7083ed44: am 0ff79e88: Merge "GPS: Changes to enable on-demand data call flow for CDMA connections"

* commit 'f8d13e535c3e6166c2386adac3b3a2f115d2b79d':
GPS: Changes to enable on-demand data call flow for CDMA connections
f8d13e535c3e6166c2386adac3b3a2f115d2b79d 28-Jul-2011 Mike Lockwood <lockwood%android.com@gtempaccount.com> am bf676d46: am 7083ed44: am 0ff79e88: Merge "GPS: Changes to enable on-demand data call flow for CDMA connections"

* commit 'bf676d460d1d1fc8923982006c38d0f6785daea8':
GPS: Changes to enable on-demand data call flow for CDMA connections
104344e507610be42fb70c7deda3c422c543bfcb 10-Jul-2011 Jeff Sharkey <jsharkey@android.com> Cached NTP time for system services.

Uses NTP server and timeout from secure settings, or fallback to
defaults in resources. Update various system services to use cached
NTP time when fresh enough, or force updates as needed.

Bug: 4517273
Change-Id: Ie1c4c4883836013d02ca0bbd850cf8949f93b34b
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
9b9fb5cc08eaa0b66a80eba2f03168531544f65a 29-Jun-2011 Mike Lockwood <lockwood@android.com> GPS: Support for on-demand NTP time injection

Change-Id: I83db0249c13598070ed70b9f90207305b60b468f
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
83b69713f2dbeee7ff5e07836673a9a477be236f 26-Jan-2011 Stephen Li <stephenl@codeaurora.org> GPS: Changes to enable on-demand data call flow for CDMA connections

In the CDMA case we do not get a valid APN on a data connection request
to the connectivity manager. A fix is put in so that even if we get a
null APN we populate this field before we call native_agps_data_conn_open()
method to avoid a run time exception.

Change-Id: I134ead5d8b177fced9b14756c6bd8199a2b9c35d
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
859443f2a4d6a2b72c3e9c75720d32d4e4c09489 24-May-2011 Mike Lockwood <lockwood@android.com> am c0d9834a: am 5d78e0b8: Merge "GPS: Change NTP polling interval from 4 to 24 hours" into honeycomb-mr2

* commit 'c0d9834a1c6dd8d9cd0b7fe9b50495578c104405':
GPS: Change NTP polling interval from 4 to 24 hours
4c126068527c9adba45aa227d40e245ee8e7c9a4 24-May-2011 Mike Lockwood <lockwood@android.com> GPS: Change NTP polling interval from 4 to 24 hours

4 hours is excessive, and we want to save bandwidth on the NTP servers

Change-Id: Ic5ac4f4a8e62167206f3f620ea51635a2ea771d6
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b49a73dfc4c9817bba1f227e9330555acdf9b56f 16-Mar-2011 Jake Hamby <jhamby@google.com> Enable support for SMS national language shift tables.

Add support for encoding and decoding SMS 7 bit user data using the
national language shift tables defined in 3GPP TS 23.038 (GSM/UMTS only),
including the new tables added in Release 9 for Indic languages.

Decoding is always supported, but encoding is only enabled for the
specific language tables added to the new integer array resources
"config_sms_enabled_single_shift_tables" and
"config_sms_enabled_locking_shift_tables" defined in
frameworks/base/core/res/res/values/config.xml. The default empty arrays
should be overridden in an OEM overlay for the specific nationalities where
SMS national language shift table encoding is allowed/mandated (e.g. Turkey).
GsmAlphabet.countGsmSeptets() will try to find the most efficient encoding
among all combinations of enabled locking shift and single shift tables.
If no 7 bit encoding is possible, 16 bit UCS-2 encoding will be used.

This change also fixes a bug in the decoder: when an escape septet
is followed by a septet with no entry in the extension (single shift)
table, TS 23.038 Table 6.2.1.1 states that the MS shall display
the character in the main GSM 7 bit default alphabet table, or the
active national language locking shift table. Previously, we were
decoding this sequence as a space character. Two consecutive escape
septets will continue to decode as a space character, according to
Note 1 of table 6.2.1.1.

Change-Id: I4dab3f0ffe39f3df2064ed93c9c05f26e274d18b
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
5982bf66d4fdea38105d91ff0f9d38660ac87581 17-Mar-2011 Mike Lockwood <lockwood@android.com> GPS: Restore XTRA downloading at boot.

Between Froyo and Gingerbread we disabled scheduling an XTRA data download
at boot because the Qualcomm engineers thought it should not be necessary.
However, some users noticed a GPS performance degradation after receiving
their Gingerbread update, and some reported forcing an XTRA download cleared
up the problem. This change restores the Froyo behavior of downloading
XTRA data after boot.

Bug: 3509901

Change-Id: I5a52201a2b24ce4a5d3ddb1f86340e3d5387f603
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
4a7b65e0d544ef1feff8e1e5789f469f89ebb85c 25-Oct-2010 Mike Lockwood <lockwood@android.com> GPS: Disable verbose logging

BUG: 3127049

Change-Id: I9efd9eb7ff69724b133f3b70c52e173f49ddfbc5
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
edc0f3876ce6e14f0ce35ad950c55031694fd4f8 22-Oct-2010 Mike Lockwood <lockwood@android.com> GPS: Fix network type logic in requestRefLocation

Change-Id: I20ef81bcf029b289389dba57e6cf457fda5acbf4
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b8d9033d9928209e68518c4b12fea74187ddb382 18-Oct-2010 Mike Lockwood <lockwood@google.com> GPS: Enable some more logging

Change-Id: I7d13c859002fa96fa8c361c0c709931c6b12eb99
Signed-off-by: Mike Lockwood <lockwood@google.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
2d4d1bf14b531de9d4238b1e41b53c77f8976405 18-Oct-2010 Mike Lockwood <lockwood@google.com> Enable framework GPS and location manager logging

Change-Id: Id54fc01e7288e7d90d7b76824b708bcb2ee88333
Signed-off-by: Mike Lockwood <lockwood@google.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
50130bbc884a7ad7db39dbc4f54e76e8be87761f 11-Oct-2010 Mike Lockwood <lockwood@android.com> GPS: Add update_network_state call to AGpsRillInterface

Change-Id: I404a7a45773f592de7dfe75a8287fef15515ea8b
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
b6e5fa895c03eeefaa810eaceb498254096c093d 10-Oct-2010 Mike Lockwood <lockwood@android.com> GPS: Do not call sGpsInterface->init() multiple times

Change-Id: I5f2b55959bd67864168690c1fe619e55edc18268
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
1e84da822e7aa4d494b31c8759917d2751611f84 27-Jul-2010 Miguel Torroja <migueltb@broadcom.com> GPS: Add support for AGpsRilInterface.

Adding changes to be able to have access to missing data to SUPL
(celld, imsi, WAP_PUSH and SMS)

Change-Id: I0207f7f7ea6595ed3fd7021cb732feddf52e4cf9
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
2acfd34ccbd39258422333c9c66c586297c97683 22-Sep-2010 Mike Lockwood <lockwood@android.com> GpsLocationProvider: Fix race condition while bringing up APN for SUPL.

If handleUpdateNetworkState() is called before
ConnectivityManager.startUsingNetworkFeature() returns, then we will not
call native_agps_data_conn_open() to inform the GPS that the APN is up.
So we now set mAGpsDataConnectionState to AGPS_DATA_CONNECTION_OPENING
before calling ConnectivityManager.startUsingNetworkFeature() to avoid
this problem.

Change-Id: I5e1597d6494dc8ab68e608911c546a7a04f2ea07
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
7e9f4eb2608148436cef36c9969bf8a599b39e72 11-Sep-2010 Dianne Hackborn <hackbod@google.com> Track client requests through location manager.

This fixes a problem where applications could ask the location
manager to do very heavy-weight things (like... say... update
location every minute), which would get accounted against the
system instead of the application because ultimately it is the
system making the heavy calls (wake locks, etc).

To solve this, we introduce a new class WorkSource representing
the source of some work. Wake locks and Wifi locks allow you
to set the source to use (but only if you are system code and thus
can get the permission to do so), which is what will be reported
to the battery stats until the actual caller.

For the initial implementation, the location manager keeps track
of all clients requesting periodic updates, and tells its providers
about them as a WorkSource param when setting their min update time.
The network location provider uses this to set the source on the
wake and wifi locks it acquires, when doing work because of the
update period.

This should also be used elsewhere, such as in the GPS provider,
but this is a good start.

Change-Id: I2b6ffafad9e90ecf15d7c502e2db675fd52ae3cf
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
1a1cd3a878b6389c097e34d114b60cf953edaeaa 17-Aug-2010 Mike Lockwood <lockwood@android.com> GPS: Initialize XTRA support when GPS is enabled

BUG: 2923148

Change-Id: If9a643e385c6c567b30f47d4caa35fa812a2ba43
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
5723dfe8c87d0887b8926f43637ed300466890d2 06-Aug-2010 Mike Lockwood <lockwood@android.com> GPS: Don't set XTRA download pending flag at boot time.

XTRA data downloads are now strictly on demand from the GPS engine.
Also fix typo in handleDownloadXtraData()

Change-Id: Ied1a6e2e62134add4d965326aae909c86f834682
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
8dc16c27e23dae5bdf65fd2a2ced97c2f645a633 29-Jul-2010 Mike Lockwood <lockwood@android.com> Fix typo in GPS mode logic.

MS-Assisted support should not be required for using MS-Based mode.

Change-Id: Ia6ee219674de3e9cc13190b753f8776305a4fa90
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
f602d362ba4bb3adbf1eb4e38a794fb14274293a 20-Jun-2010 Mike Lockwood <lockwood@android.com> GPS: remove GpsEventThread from GpsLocationProvider

Rather than polling for events from the native code in an event thread,
we now require the GPS HAL libraries to call our callbacks from a thread
that is registered with the JVM to call directly into Java.
This eliminates a thread from our code and removes one step in the chain
of message passing from the GPS to the Location Manager client.

Change-Id: I2745a157690310ba9a699a8369f54a7366c6b1ba
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
0881f4f9339febee85c9ab4cba69970ac5cbde55 21-May-2010 Kevin.KY Tsai <kevin.ky_tsai@htc.com> Report number of satellites used in fix instead of total for GPS Location extra

Change-Id: Ibffc8d21b31b02a91c8506733002e4a778556978
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
03ca216ac19ea4e7afcb183c20c7c780f0d97756 01-Apr-2010 Mike Lockwood <lockwood@android.com> New Location Manager APIs for Criteria based requests and single shot mode.

Use MS-Assisted mode for single shot GPS fixes if it is supported.

Add finer grained control over accuracy to the android.location.Criteria class
and location criteria logic from LocationManager to LocationManagerService

Change-Id: I156b1f6c6a45d255c87ff917cf3e9726a6d7a75b
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
9d164dc5c1be55287725343349923f705a5bf8d4 07-May-2010 The Android Open Source Project <initial-contribution@android.com> am f4dffd8a: merge from open-source master

Merge commit 'f4dffd8a45386b5a5f0e6de4f30facc9eaac4001' into kraken

* commit 'f4dffd8a45386b5a5f0e6de4f30facc9eaac4001':
GpsLocationProvider: Store new Location before onGpsStatusChanged is sent
Telephony: Add PUK MMI code support for CDMA RUIM phones
Type Zero Sms should not be displayed/stored/notified.
d53ba017ee2381383b4bb4d92e6e0e661431660f 16-Apr-2010 Mike Lockwood <lockwood@android.com> GpsLocationProvider: Eliminate MIN_FIX_COUNT.

Now we stop after one fix rather than waiting for 10 when requesting occasional
fixes to conserve power.

Change-Id: Ic420f2d20780db983fc4db22246e0a486eecc58e
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
1879d284bf3dd704dbc8c95aad262ebbe3c3c0a4 16-Apr-2010 Mike Lockwood <lockwood@android.com> GpsLocationProvider: Remove NTP sanity checking now that the NTP client has been fixed.

Change-Id: Iedf3f5ff333db7298de6cd6e86fface1f8421738
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
63aa5a6f98b1016863e4f6edd87eb471b28dc28f 15-Apr-2010 Mike Lockwood <lockwood@android.com> clear calling identity in GpsLocationProvider.sendExtraCommand().

This fixes problems with wakelock permissions introduced in an earlier change.

Change-Id: If0f4761ac27525d1eece0613c96be62f9e370a14
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
04598b67a58fad93e5060bb77756ba4863013aed 14-Apr-2010 Mike Lockwood <lockwood@android.com> GPS: Support for GPS HAL managing its own scheduling

Also update to support new position mode API.

Change-Id: I00acc094d3e85bc5c0cd431af517064bfa8f2b1a
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
98e48691f738680fe59e7383a41458e7337daccd 07-Apr-2010 Mike Lockwood <lockwood@android.com> GpsLocationProvider: optimize wake lock usage.

Rather than holding a wake lock the entire time the GPS is active, we now
hold it only when messages are pending for GpsLocationProvider's Handler
and rely on the lower level implementation holding a wake lock when calling
into the provider.

Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java
00b74270c9f136a8727c5f6cda0997a3a905f385 26-Mar-2010 Mike Lockwood <lockwood@android.com> Move files internal to LocationManagerService from framework.jar to services.jar

Change-Id: Iebbfc49b8300ab59730733efdf489ec87ea45a25
Signed-off-by: Mike Lockwood <lockwood@android.com>
/frameworks/base/services/java/com/android/server/location/GpsLocationProvider.java