mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-28 04:46:51 +01:00
Properly acquire network location if last location is not known
A toast will be shown if the network location provider is disabled. Location will be automatically acquired after enabling it. Fixes #346
This commit is contained in:
parent
20d8732d10
commit
4de45787c3
@ -7,6 +7,7 @@ import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.location.Criteria;
|
||||
import android.location.Location;
|
||||
import android.location.LocationListener;
|
||||
import android.location.LocationManager;
|
||||
import android.os.Bundle;
|
||||
import android.preference.EditTextPreference;
|
||||
@ -143,17 +144,30 @@ public class SettingsActivity extends AbstractSettingsActivity {
|
||||
if (provider != null) {
|
||||
Location location = locationManager.getLastKnownLocation(provider);
|
||||
if (location != null) {
|
||||
String latitude = String.format(Locale.US, "%.6g", location.getLatitude());
|
||||
String longitude = String.format(Locale.US, "%.6g", location.getLongitude());
|
||||
LOG.info("got location. Lat: " + latitude + " Lng: " + longitude);
|
||||
EditTextPreference pref_latitude = (EditTextPreference) findPreference("location_latitude");
|
||||
EditTextPreference pref_longitude = (EditTextPreference) findPreference("location_longitude");
|
||||
pref_latitude.setText(latitude);
|
||||
pref_longitude.setText(longitude);
|
||||
pref_latitude.setSummary(latitude);
|
||||
pref_longitude.setSummary(longitude);
|
||||
setLocationPreferences(location);
|
||||
} else {
|
||||
GB.toast(SettingsActivity.this, "no last known position", 3000, 0);
|
||||
locationManager.requestSingleUpdate(provider, new LocationListener() {
|
||||
@Override
|
||||
public void onLocationChanged(Location location) {
|
||||
setLocationPreferences(location);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStatusChanged(String provider, int status, Bundle extras) {
|
||||
LOG.info("provider status changed to " + status + " (" + provider + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderEnabled(String provider) {
|
||||
LOG.info("provider enabled (" + provider + ")");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onProviderDisabled(String provider) {
|
||||
LOG.info("provider disabled (" + provider + ")");
|
||||
GB.toast(SettingsActivity.this, getString(R.string.toast_enable_networklocationprovider), 3000, 0);
|
||||
}
|
||||
}, null);
|
||||
}
|
||||
} else {
|
||||
LOG.warn("No location provider found, did you deny location permission?");
|
||||
@ -255,4 +269,16 @@ public class SettingsActivity extends AbstractSettingsActivity {
|
||||
};
|
||||
}
|
||||
|
||||
private void setLocationPreferences(Location location) {
|
||||
String latitude = String.format(Locale.US, "%.6g", location.getLatitude());
|
||||
String longitude = String.format(Locale.US, "%.6g", location.getLongitude());
|
||||
LOG.info("got location. Lat: " + latitude + " Lng: " + longitude);
|
||||
GB.toast(SettingsActivity.this, getString(R.string.toast_aqurired_networklocation), 2000, 0);
|
||||
EditTextPreference pref_latitude = (EditTextPreference) findPreference("location_latitude");
|
||||
EditTextPreference pref_longitude = (EditTextPreference) findPreference("location_longitude");
|
||||
pref_latitude.setText(latitude);
|
||||
pref_longitude.setText(longitude);
|
||||
pref_latitude.setSummary(latitude);
|
||||
pref_longitude.setSummary(longitude);
|
||||
}
|
||||
}
|
||||
|
@ -95,6 +95,9 @@
|
||||
<string name="pref_title_location_latitude">Latitude</string>
|
||||
<string name="pref_title_location_longitude">Longitude</string>
|
||||
|
||||
<string name="toast_enable_networklocationprovider">Please enable network location</string>
|
||||
<string name="toast_aqurired_networklocation">location acquired</string>
|
||||
|
||||
<string name="pref_title_pebble_forceprotocol">Force Notification Protocol</string>
|
||||
<string name="pref_summary_pebble_forceprotocol">This option forces using the latest notification protocol depending on the firmware version. ENABLE ONLY IF YOU KNOW WHAT YOU ARE DOING!</string>
|
||||
<string name="pref_title_pebble_forceuntested">Enable untested features</string>
|
||||
|
Loading…
Reference in New Issue
Block a user