android gps获取方向,Android GPS 动态获取地理位置

package cn.twle.android.gpsupdate;

import android.content.Context;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.location.Location;

import android.location.LocationListener;

import android.location.LocationManager;

import android.provider.Settings;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.os.Message;

import android.os.Handler;

import android.widget.TextView;

import android.widget.Toast;

import static android.Manifest.permission.ACCESS_FINE_LOCATION;

public class MainActivity extends AppCompatActivity {

private LocationManager lm;

private TextView ms_msg;

private String loc_msg;

private Handler handler = new Handler(new Handler.Callback(){

@Override

public boolean handleMessage(Message msg) {

if ( msg.what == 0x001 ) {

ms_msg.setText(loc_msg);

}

return false;

}

});

private LocationListener mLocationListener = new LocationListener() {

@Override

public void onLocationChanged(Location location) {

// 当GPS定位信息发生改变时,更新定位

updateShow(location);

}

@Override

public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override

public void onProviderEnabled(String provider) {

// 如果没权限,打开设置页面让用户自己设置

if ( checkCallingOrSelfPermission(ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

Toast.makeText(MainActivity.this, "请打开GPS~", Toast.LENGTH_SHORT).show();

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

startActivityForResult(intent, 0);

return;

}

// 当GPS LocationProvider可用时,更新定位

updateShow(lm.getLastKnownLocation(provider));

}

@Override

public void onProviderDisabled(String provider) {

updateShow(null);

}

};

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ms_msg = (TextView) findViewById(R.id.ms_msg);

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationUpdate();

}

public void onResume() {

super.onResume();

locationUpdate();

}

public void onPause() {

super.onPause();

lm.removeUpdates(mLocationListener);

}

//定义一个更新显示的方法

private void updateShow(Location location) {

if (location != null) {

StringBuilder sb = new StringBuilder();

sb.append("当前的位置信息:\n");

sb.append("精度:" + location.getLongitude() + "\n");

sb.append("纬度:" + location.getLatitude() + "\n");

sb.append("高度:" + location.getAltitude() + "\n");

sb.append("速度:" + location.getSpeed() + "\n");

sb.append("方向:" + location.getBearing() + "\n");

sb.append("定位精度:" + location.getAccuracy() + "\n");

loc_msg = sb.toString();

} else loc_msg = "";

handler.sendEmptyMessage(0x001);

}

public void locationUpdate() {

// 如果没权限,打开设置页面让用户自己设置

if ( checkCallingOrSelfPermission(ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

Toast.makeText(MainActivity.this, "请打开GPS~", Toast.LENGTH_SHORT).show();

Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);

startActivityForResult(intent, 0);

return;

}

Location location = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);

updateShow(location);

// 设置间隔两秒获得一次 GPS 定位信息

lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 8,mLocationListener);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值