Android 獲取手機當前所在的經緯度
阿新 • • 發佈:2019-02-18
manifest中要加的permission:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:id="@+id/et" android:layout_width="fill_parent" android:layout_height="wrap_content" android:cursorVisible="false" android:editable="false" /> </LinearLayout>
MainActivity.java
package com.example.location; import android.location.Criteria; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.app.Activity; import android.content.Context; import android.view.Menu; import android.widget.EditText; public class MainActivity extends Activity { LocationManager lm; EditText et; LocationListener ll = new LocationListener(){ public void onLocationChanged(Location location){ updateView(location); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub updateView(null); } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub Location l = lm.getLastKnownLocation(provider); updateView(l); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText)findViewById(R.id.et); lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); String bestProvider = lm.getBestProvider(getCriteria(), true); Location l = lm.getLastKnownLocation(bestProvider); updateView(l); lm.requestLocationUpdates(bestProvider, 5000, 8, ll); } private Criteria getCriteria() { // TODO Auto-generated method stub Criteria c = new Criteria(); c.setAccuracy(Criteria.ACCURACY_COARSE); c.setSpeedRequired(false); c.setCostAllowed(false); c.setBearingRequired(false); c.setAltitudeRequired(false); c.setPowerRequirement(Criteria.POWER_LOW); return c; } public void updateView(Location newLocation) { if(newLocation !=null){ et.setText("您現在的位置是\n緯度:"); et.append(String.valueOf(newLocation.getLatitude())); et.append("\n經度:"); et.append(String.valueOf(newLocation.getLongitude())); } else{ et.getEditableText().clear(); } } }