Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Enabling Location mode High Accuracy or Battery saving, programmatically, without user needing to visit Settings

Tags:

Why i ask this:(also the reason for trying it in an app)

It happens when we use Google Maps in Lollipop. Even if the Location is disabled, it is turned on, in high accuracy mode after user's input from the Maps app, without having to visit Settings.

A similar functionality can be achieved for enabling Bluetooth, where the action is initiated in my app; user needs to make a choice but user is not redirected to Settings, using:

startActivity(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE));

which could be found on BluetoothAdapter, now we know there is no LocationAdapter, so i looked around gms->LocationServices, basically almost everything under Location API references, android.location.LocationManager but doesn't seem anything like ACTION_REQUEST_ENABLE is available as yet.

Hope there is some other method for the same, and more people have tried it.

Please note:
context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)); does not work like that.

like image 522
Pararth Avatar asked Feb 27 '15 07:02

Pararth


People also ask

Where is high accuracy location Android?

Open your device's Settings app. Tap Security & location Location Mode. Choose High accuracy or Battery saving. Both options can use Wi-Fi, mobile networks, and sensors to determine location.

What location mode should I use?

Our recommendation is to use High accuracy mode when you need location services unless you see a significant loss in battery life. And remember, you can always turn location services Off if you would rather not let apps know where you are, but the apps may not work correctly.


1 Answers

UPDATE 3:

Prompt the user to change location settings as @patrickandroid, mentioned in comments, the link from second update is broken

GoogleSamples; android Location and options - for code reference.

UPDATE 2:

GoogleSamples; - for code reference.

This sample builds on the LocationUpdates sample included in this repo, and allows the user to update the device's location settings using a location dialog.

Uses the SettingsApi to ensure that the device's system settings are properly configured for the app's location needs.


UPDATE 1:

Google Play services, Version 7.0 (March 2015) released...

Location settings - While the FusedLocationProviderApi combines multiple sensors to give you the optimal location, the accuracy of the location your app receives still depends greatly on the settings enabled on the device (GPS, wifi, airplane mode, and others). Using the new SettingsApi class, you can bring up a Location Settings dialog which displays a one-touch control for users to change their settings without leaving your app.

Using the public interface SettingsApi

  • Determine if the relevant system settings are enabled on the device to carry out the desired location request.
  • Optionally, invoke a dialog that allows the user to enable the necessary location settings with a single tap.


Leaving the previous part for reference:
Update/Answer
For everybody looking for this answer, Google Play Services 7.0
It Adds APIs For Detecting Places And Connecting To Nearby Devices, Improves On Mobile Ads, Fitness Data, Location Settings, And More

In Google Play services 7.0, we’re introducing a standard mechanism to check that the necessary location settings are enabled for a given LocationRequest to succeed. If there are possible improvements, you can display a one touch control for the user to change their settings without leaving your app.

exactly this

This API provides a great opportunity to make for a much better user experience, particularly if location information is critical to the user experience of your app such as was the case with Google Maps when they integrated the Location Settings dialog and saw a dramatic increase in the number of users in a good location state.

Source: Android developers blog: Google Play services 7.0 - Places Everyone!

SDK Coming Soon!
We will be rolling out Google Play services 7.0 over the next few days. Expect an update to this blog post, published documentation, and the availability of the SDK once the rollout is completed.

will update the programmatic l-o-c after implementation

like image 166
Pararth Avatar answered Sep 22 '22 05:09

Pararth