Android Location
AndroidManifest.xml
We need permission to get location.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
To get location, we need these permissions. These are minimum settings.
Steps
We have 3 parts.
- Prepare
- Request
- Listener
Code
public class MeasureFragment extends Fragment implements LocationListener {
private LocationManager lmanager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Prepare
lmanager = (LocationManager)getActivity().getSystemService(Context.LOCATION_SERVICE);
setLocationLoader();
}
public void setLocationLoader () {
Criteria criteria = new Criteria();
// Set Accuracy
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
// Power Requirement
criteria.setPowerRequirement(Criteria.POWER_LOW);
// Get Location Provider
provider = lmanager.getBestProvider(criteria, true);
}
// LocationListener
@Override
public void onLocationChanged(Location location) {
// You can get latitude, longitude from Location
//location.getLatitude(), location.getLongitude());
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}
Accuracy
You can set accuracy. The way to get location changes according to accuracy setting.
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
Accuracy levels are Criteria.ACCURACY_FINE, Criteria.ACCURACY_HIGH, Criteria.ACCURACY_MEDIUM, Criteria.ACCURACY_LOW, Criteria.ACCURACY_COARSE
See Android Developer Criteria
Power
criteria.setPowerRequirement(Criteria.POWER_LOW);
Power levels are Criteria.POWER_HIGH, Criteria.POWER_MEDIUM, Criteria.POWER_LOW
