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.content.pm.ResolveInfo;
|
||||||
import android.location.Criteria;
|
import android.location.Criteria;
|
||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
|
import android.location.LocationListener;
|
||||||
import android.location.LocationManager;
|
import android.location.LocationManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.EditTextPreference;
|
import android.preference.EditTextPreference;
|
||||||
|
@ -143,17 +144,30 @@ public class SettingsActivity extends AbstractSettingsActivity {
|
||||||
if (provider != null) {
|
if (provider != null) {
|
||||||
Location location = locationManager.getLastKnownLocation(provider);
|
Location location = locationManager.getLastKnownLocation(provider);
|
||||||
if (location != null) {
|
if (location != null) {
|
||||||
String latitude = String.format(Locale.US, "%.6g", location.getLatitude());
|
setLocationPreferences(location);
|
||||||
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);
|
|
||||||
} else {
|
} 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 {
|
} else {
|
||||||
LOG.warn("No location provider found, did you deny location permission?");
|
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_latitude">Latitude</string>
|
||||||
<string name="pref_title_location_longitude">Longitude</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_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_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>
|
<string name="pref_title_pebble_forceuntested">Enable untested features</string>
|
||||||
|
|
Loading…
Reference in New Issue