移動 是手機與手持設備的最大特色,能夠經過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顯示的位置信息
服務器
WhereAmI.rar (42 KB)ide
下載次數: 2201ui
查看圖片附件spa