实现位置服务的技术有GPS和google网络地图,将这些不同的定位技术统称为LBS,
LocationManager 有两种定位,GPS和NETWORK
locationProvider
通过他们可以得到某人的当前位置或者进行位置跟踪,和设定区域提醒功能。
1 示例:获取位置信息
androidmanifest.xml
gps方法
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
NETWORK方式
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
定位用户的位置:
//得到LocationManager对象
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//设定定位方式为GPS_PROVIDER,得到位置对象Location
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "纬度:" + lat + "\n经度:" + lng;
myLocationText.setText("您当前的位置是:\n" +latLongString);
设定模拟器 显示位置信息。
处理制定定位方式以外还可以使用Criteria让系统选择最符合条件的LOCATIONPROVIDER.
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
可以同时存在多个,根据相关程度系统自行决定
可以用下个方法返回所有与查询条件想符合的locationProvider
List<String> matchProvider = locationManager.getProvider(criteria, false);
2 跟踪位置变化
设定监听器 locationListener
LocationManager 有两种定位,GPS和NETWORK
locationProvider
通过他们可以得到某人的当前位置或者进行位置跟踪,和设定区域提醒功能。
1 示例:获取位置信息
androidmanifest.xml
gps方法
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
NETWORK方式
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
定位用户的位置:
//得到LocationManager对象
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
//设定定位方式为GPS_PROVIDER,得到位置对象Location
Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double lat = location.getLatitude();
double lng = location.getLongitude();
latLongString = "纬度:" + lat + "\n经度:" + lng;
myLocationText.setText("您当前的位置是:\n" +latLongString);
设定模拟器 显示位置信息。
处理制定定位方式以外还可以使用Criteria让系统选择最符合条件的LOCATIONPROVIDER.
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
可以同时存在多个,根据相关程度系统自行决定
可以用下个方法返回所有与查询条件想符合的locationProvider
List<String> matchProvider = locationManager.getProvider(criteria, false);
2 跟踪位置变化
设定监听器 locationListener
locationManager.requestLocationUpdates(provider, 2000, 10,
locationListener);
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider){
updateWithNewLocation(null);
}
public void onProviderEnabled(String provider){ }
public void onStatusChanged(String provider, int status,
Bundle extras){ }
};