溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Android編程實(shí)現(xiàn)GPS位置獲取的方法

發(fā)布時(shí)間:2020-09-06 03:03:02 來(lái)源:腳本之家 閱讀:342 作者:只要你能好 欄目:移動(dòng)開(kāi)發(fā)

本文實(shí)例講述了Android編程實(shí)現(xiàn)GPS位置獲取的方法。分享給大家供大家參考,具體如下:

public class GPSInfoService {
  private static GPSInfoService mInstance;
  private LocationManager locationManager;//定位服務(wù)
  private GPSInfoService(Context context) {
    // TODO Auto-generated constructor stub
    locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
  }
  public static GPSInfoService getInstance(Context context){
    if(mInstance == null){
      mInstance = new GPSInfoService(context);
    }
    return mInstance;
  }
  //注冊(cè)定位監(jiān)聽(tīng)
  public void registenerLocationChangeListener(){
    //得到所有的定位服務(wù)
//   List<String> providers = locationManager.getAllProviders();
//   for(String provider:providers){
//     Log.i("i", provider);
//   }
    //查詢條件
    Criteria criteria = new Criteria();
    //定位的精準(zhǔn)度
    criteria.setAccuracy(Criteria.ACCURACY_FINE);
    //海拔信息是否關(guān)注
    criteria.setAltitudeRequired(false);
    //對(duì)周?chē)氖虑槭欠襁M(jìn)行關(guān)心
    criteria.setBearingRequired(false);
    //是否支持收費(fèi)的查詢
    criteria.setCostAllowed(true);
    //是否耗電
    criteria.setPowerRequirement(Criteria.POWER_LOW);
    //對(duì)速度是否關(guān)注
    criteria.setSpeedRequired(false);
    //得到最好的定位方式
    String provider = locationManager.getBestProvider(criteria, true);
    //注冊(cè)監(jiān)聽(tīng)
    locationManager.requestLocationUpdates(provider, 60000, 0, getListener());
  }
  //取消監(jiān)聽(tīng)
  public void unRegisterLocationChangeListener(){
    locationManager.removeUpdates(getListener());
  }
  private MyLocationListener listener;
  //得到定位的監(jiān)聽(tīng)器
  private MyLocationListener getListener(){
    if(listener == null){
      listener = new MyLocationListener();
    }
    return listener;
  }
  //得到上個(gè)地理位置
  public String getLastLocation(){
    return sp.getString("last_location", "");
  }
  private final class MyLocationListener implements LocationListener{
    //位置的改變
    public void onLocationChanged(Location location) {
      // TODO Auto-generated method stub
      double latitude = location.getLatitude();//維度
      double longitude = location.getLongitude();//經(jīng)度
      String last_location = "jingdu: " + longitude + ",weidu:" + latitude;
      Editor editor = sp.edit();
      editor.putString("last_location", last_location);
      editor.commit();
    }
    //gps衛(wèi)星有一個(gè)沒(méi)有找到
    public void onStatusChanged(String provider, int status, Bundle extras) {
      // TODO Auto-generated method stub
    }
    //某個(gè)設(shè)置被打開(kāi)
    public void onProviderEnabled(String provider) {
      // TODO Auto-generated method stub
    }
    //某個(gè)設(shè)置被關(guān)閉
    public void onProviderDisabled(String provider) {
      // TODO Auto-generated method stub
    }
  }
}

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android控件用法總結(jié)》、《Android視圖View技巧總結(jié)》、《Android操作json格式數(shù)據(jù)技巧總結(jié)》、《Android開(kāi)發(fā)入門(mén)與進(jìn)階教程》及《Android資源操作技巧匯總》

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI