Android實現GPS定位代碼執行個體_Android

來源:互聯網
上載者:User

通過GPS取得的是一個Location類型的經緯度, 可以轉換為兩個Double 緯度和經度.
緯度: 23.223871812820435
緯度: 113.58986039161628
首先建立一個TextView和兩個Button

<TextView  android:id="@+id/text" android:layout_width="fill_parent"   android:layout_height="wrap_content"  />  <Button  android:id="@+id/btnStart"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="定位" /> <Button  android:id="@+id/btnStop"  android:layout_width="wrap_content"  android:layout_height="wrap_content"  android:text="停止" />


然後添加主Activity的代碼
Location 是存放經緯度的一個類型
LocationManager是位置管理服務類型

private Button btnStart;private Button btnStop;private TextView textView;private Location mLocation;private LocationManager mLocationManager;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState){  super.onCreate(savedInstanceState); setContentView(R.layout.main);  btnStart = (Button)findViewById(R.id.btnStart); btnStop = (Button)findViewById(R.id.btnStop); textView = (TextView)findViewById(R.id.text); btnStart.setOnClickListener(btnClickListener); //開始定位 btnStop.setOnClickListener(btnClickListener); //結束定位按鈕}gpsIsOpen是自己寫的查看當前GPS是否開啟getLocation 是自己寫的一個擷取定位資訊的方法mLocationManager.removeUpdates()是停止當前的GPS位置監聽public Button.OnClickListener btnClickListener = new Button.OnClickListener(){ public void onClick(View v) {  Button btn = (Button)v;  if(btn.getId() == R.id.btnStart)  {   if(!gpsIsOpen())    return;     mLocation = getLocation();      if(mLocation != null)    textView.setText("維度:" + mLocation.getLatitude() + "\n經度:" + mLocation.getLongitude());   else    textView.setText("擷取不到資料");  }  else if(btn.getId() == R.id.btnStop)  {   mLocationManager.removeUpdates(locationListener);  } }};private boolean gpsIsOpen(){ boolean bRet = true; LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {  Toast.makeText(this, "未開啟GPS", Toast.LENGTH_SHORT).show();  bRet = false; } else  {  Toast.makeText(this, "GPS已開啟", Toast.LENGTH_SHORT).show(); } return bRet;}判斷當前是否開啟GPSprivate boolean gpsIsOpen(){ boolean bRet = true;  LocationManager alm = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); if(!alm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {  Toast.makeText(this, "未開啟GPS", Toast.LENGTH_SHORT).show();  bRet = false; } else  {  Toast.makeText(this, "GPS已開啟", Toast.LENGTH_SHORT).show(); } return bRet;}該方法擷取當前的經緯度, 第一次擷取總是null後面從LocationListener擷取已改變的位置mLocationManager.requestLocationUpdates()是開啟一個LocationListener等待位置變化private Location getLocation(){ //擷取位置管理服務 mLocationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE); //尋找服務資訊 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 = mLocationManager.getBestProvider(criteria, true); //擷取GPS資訊 Location location = mLocationManager.getLastKnownLocation(provider);  mLocationManager.requestLocationUpdates(provider, 2000, 5, locationListener);  return location;}改方法是等待GPS位置改變後得到新的經緯度private final LocationListener locationListener = new LocationListener(){ public void onLocationChanged(Location location) {  // TODO Auto-generated method stub  if(location != null)   textView.setText("維度:" + location.getLatitude() + "\n經度:"       + location.getLongitude());  else   textView.setText("擷取不到資料" + Integer.toString(nCount)); } public void onProviderDisabled(String provider) {  // TODO Auto-generated method stub } public void onProviderEnabled(String provider) {  // TODO Auto-generated method stub } public void onStatusChanged(String provider, int status, Bundle extras) {  // TODO Auto-generated method stub   }};

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.