移動 是手機與手持功能的最大特點,可以通過Eclipse的DDMS視圖,類比裝置的位置變化,改變經緯度後,點擊send,然後運行程式,在應用程式中,動態擷取裝置位置,然後顯示當前的位置資訊。
擷取位置資訊分為三步:
1. 添加系統許可權,來支援對LBS硬體的訪問
< uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
< /uses-permission>
2. 得到系統服務 的LocationManager 對象
LocationManager loctionManager;
String contextService=Context.LOCATION_SERVICE;
//通過系統服務,取得LocationManager對象
loctionManager=(LocationManager) getSystemService(contextService);
3. 得到位置提供器,通過位置提供器,得到位置資訊,可以指定具體的位置提供器,也可以提供一個標準集合,讓系統根據 標準匹配最適合的位置提供器,位置資訊是由位置提供其提供的。
a. 通過GPS位置提供器獲得位置(指定具體的位置提供器)
String provider=LocationManager.GPS_PROVIDER;
Location location = loctionManager.getLastKnownLocation(provider);
b. 使用標準集合,讓系統自動選擇可用的最佳位置提供器,提供位置
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 = loctionManager.getBestProvider(criteria, true);
//獲得最後一次變化的位置
Location location = loctionManager.getLastKnownLocation(provider);
最後將位置資訊顯示在TextView中,
監聽位置的變化
//監聽位置變化,2秒一次,距離10米以上
loctionManager.requestLocationUpdates(provider, 2000, 10, locationListener);
//位置監聽器
private final LocationListener locationListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
//當位置變化時觸發
@Override
public void onLocationChanged(Location location) {
//使用新的location更新TextView顯示
updateWithNewLocation(location);
}
};
通過改變位置經緯度,程式會自動更新TextView顯示的位置資訊