MainActivity
public class MainActivity extends AppCompatActivity {
private TextView locationTv;
LocationManager lm;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationTv = (TextView) findViewById(R.id.tv_location);
// 第一步:获得定位管理者对象
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// 第二部:申请开启定位监听
// NETWORK_PROVIDER :粗略定位 GPS_PROVIDER :精准定位
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10000, 200, listener);
}
// 第三部:创建LocationListener对象
LocationListener listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
// 当坐标位置发生改变时,会促发的方法,如果位置没有发生改变,此方法不会被促发。
double longitude = location.getLongitude(); //经度
double latitude = location.getLatitude(); //纬度
long time = location.getTime(); //时间
double altitude = location.getAltitude(); //海拔
locationTv.setText("经度:"+longitude+",纬度:"+latitude+"\n时间:"+time+",海拔:"+altitude);
}
// 在定位可用,不可用,无服务三个状态切换时,会促发的方法
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
// 当定位开启时会触发的方法,比如GPS被打开了。
@Override
public void onProviderEnabled(String provider) {
}
// 当定位不能够使用时,会触发的方法,比如GPS被关闭了。
@Override
public void onProviderDisabled(String provider) {
}
};
@Override
protected void onDestroy() {
super.onDestroy();
// 第四部:移除定位的服务
lm.removeUpdates(listener);
}
}
activity_main
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/tv_location"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="20sp"/>
</RelativeLayout>