首先AndroidManifest中加入许可
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
通过系统服务获取LocationManager
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
设定定位需要的标准
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_COARSE);
//criteria.setAccuracy(Criteria.ACCURACY_FINE); 如果是fine,那就是调用GPS了,室内基本是没希望能定位了啦
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
接下来就可以获取定位信息
String provider = manager.getBestProvider(criteria, true);
Location location = manager.getLastKnownLocation(provider);
这里 location可能是null,如果是null那就需要更新定位信息
if (location != null) {
latitudeTxt.setText("latitude:" + location.getLatitude());
longitudeTxt.setText("longitude:" + location.getLatitude());
} else {
manager.requestLocationUpdates(provider, 1*1000, 1000, listener);
}
private LocationListener listener = new LocationListener() {
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
//定位设备启用是时
public void onProviderEnabled(String provider) {
Log.d(TAG, "onProviderEnabled");
}
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
//定位获得信息改变时
public void onLocationChanged(Location location) {
Log.d(TAG, "onLocationChanged");
latitudeTxt.setText("latitude:" + location.getLatitude());
longitudeTxt.setText("longitude:" + location.getLatitude());
}
};