获取位置信息是通过LocationManager获取的,需要相关的权限
可以添加下面的三种权限第一种是粗略的位置信息,第二种是良好的位置信息,第三种是模拟的位置信息
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
布局文件
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/tv_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
</RelativeLayout>
获取经纬度坐标方法
MainActivity.java
package com.ldw.location;
import java.util.List;
import android.app.Activity;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView tvLocation;
private LocationManager lm;
private MyLocationListener listener;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvLocation = (TextView) findViewById(R.id.tv_location);
lm = (LocationManager) getSystemService(LOCATION_SERVICE);
//获取所有的位置提供者(定位方法)
List<String> allProviders = lm.getAllProviders();
System.out.println(allProviders);
listener = new MyLocationListener();
//第一个参数是提供位置的方式,第二个参数是最短的更新位置的时间,第三个参数是最短的更新位置的距离
//0表示随时更新
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
}
class MyLocationListener implements LocationListener{
//位置发生回掉的函数
@Override
public void onLocationChanged(Location location) {
String latitude = "经度" + location.getLatitude();
String longitude = "维度" + location.getLongitude();
String accuracy = "精确度" + location.getAccuracy();
String altitude = "海拔" + location.getAltitude();
tvLocation.setText(latitude + "\n" + longitude + "\n" + accuracy + "\n" + altitude);
}
//位置提供者状态发生变化的回掉
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
//用户把位置提供者打开的时候的回掉
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}
@Override
protected void onDestroy(){
super.onDestroy();
//activity销毁时,关闭定位
lm.removeUpdates(listener);
}
}