I currently have WLAN enabled all the time for triangulation, even when I'm not near an access point I can use. Is there any way to automatically enable it whenever an app requests location information, like it is done with the GPS?
As far as I know this is not possible. IMHO, it contradicts Google's incentive to have an as best as possible geolocation service.
Some background information:
Google maintains a huge database for its geolocation service ("Access coarse location" permission). It consists of:
- Wifi access point mappings: Wifi MAC address resolve to a geolocation
- Cell tower mapping: Cell tower ID's resolve to a geolocation
- This database is "community" crowd-sourced by the huge Android user base, aka. everyone that has Google's location service enabled (see below)
- Google is interested to have a high quality database, i.e. convince you to opt in to allowing your phone to be part of the crowd-sourcing
- Hence: If you want to use 'coarse location' services from Google you opt in to constant data mining as long as it's enabled
- Disabling Wifi only cuts you off from one of the possible information sources. Having Cell tower ID's will still give you coarse location, but with lower accuracy
- Some may recall the Skyhook vs. Google dispute where Google seemingly pressured Motorola and Samsung to prefer Google's own geolocation service over that of Skyhook (out of fear for losing part of the crowdsourcing community if those two big players would have used the 3rd party Skyhook service). Source: TheVerge
There is now a feature that turns on WiFi for location purposes. Settings->Wi-Fi->Advanced->"Scanning always available"
You can turn WiFi off to save power, but still have location requests turn WiFi on temporarily.