[Nexus 4 Android Development] ganachoco:
My opinions about location feature is.

1. GPS hal is working well on Stock Nexus 7(2013).

Nexus 7(2013) and Nexus 4 have same SoC (qcom msm8960), and share most of HAL libraries and binaries.

If there are some issues in my rom related hardware, These issues can be reproduced in Nexus 7(2013)

In backward mean, there is no issues in N7, my rom will have no issues. :P

2. In building, GPS CANNOT collect your location information, and ONLY google's network location provider can retrieve location information.

Google's Network Location Provider gathers various information such as GPS, Wifi APs, IP, Cell location, Bluetooth devices addresses. and guessing your location.

If you see location error when you are in building, there is something wrong in google's network location provider, I cannot fix it.

If you have some interests about this, you can see details with adb command.

$ [B]adb shell dumpsys location[/B]
blahblah
Historical Records by Provider:
com.google.android.gms: gps: Interval 0 seconds: Duration requested 0 out of the last 58 minutes
com.google.android.gms: passive: Interval 0 seconds: Duration requested 68 out of the last 68 minutes: Currently active
android: network: Interval 86400 seconds: Duration requested 68 out of the last 68 minutes: Currently active
android: passive: Interval 0 seconds: Duration requested 68 out of the last 68 minutes: Currently active
Last Known Locations:
network: Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, travelState=stationary, noGPSLocation=Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, coarseLocation=Location[network xx.xxx,yy.yyy acc=2000 et=+1h9m17s113ms], wifiScan=[B@65708fd, travelState=stationary, nlpVersion=2020}]}], nlpVersion=2020}]}]
passive: Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, travelState=stationary, noGPSLocation=Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, coarseLocation=Location[network xx.xxx,yy.yyy acc=2000 et=+1h9m17s113ms], wifiScan=[B@65708fd, travelState=stationary, nlpVersion=2020}]}], nlpVersion=2020}]}]
Last Known Locations Coarse Intervals:
network: Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, travelState=stationary, noGPSLocation=Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, coarseLocation=Location[network xx.xxx,yy.yyy acc=2000 et=+1h9m17s113ms], wifiScan=[B@65708fd, travelState=stationary, nlpVersion=2020}]}], nlpVersion=2020}]}]
passive: Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, travelState=stationary, noGPSLocation=Location[network xx.xxx,yy.yyy acc=96 et=+1h9m17s113ms {Bundle[{networkLocationType=wifi, coarseLocation=Location[network xx.xxx,yy.yyy acc=2000 et=+1h9m17s113ms], wifiScan=[B@65708fd, travelState=stationary, nlpVersion=2020}]}], nlpVersion=2020}]}]
Geofences:
Enabled Providers:
fused
passive
mWhitelist=[] mBlacklist=[]
fudger: offset: 439, -33 (meters)
passive Internal State:
mReportLocation=true
gps Internal State:
mFixInterval=0
mDisableGps (battery saver mode)=false
mEngineCapabilities=0x33 (SCHED MSB ON_DEMAND_TIME )