因项目中要用到GPS定位,学习了下,便把学习成果记录下来。 在清单文件中添加权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
用到的几个对象,LocationManager、LocationListener、Location. *LocationManager 位置管理器,想要操作定位相关设备,必须先创建一个一个LocationManager对象。
LocationManger locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
* LocationListener 位置监听者,监听位置变化,监听设备开关与状态。主要用来获取location, 在内部类实现:
class myListen implements LocationListener
{
@Override
public void onLocationChanged(Location location) {
//位置发生变化
Log.i(TAG, "onLocationChanged.......");
if (mHandler != null)
{
Message msg = mHandler.obtainMessage(REFRESH_LOCATION, location);
msg.sendToTarget();
}
}
@Override
public void onProviderDisabled(String provider) {
//
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
//
}
}
绑定监听:
myListenGPS = new myListen();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
CHECK_POSITION_INTERVAL, 0, myListenGPS);
requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)中的4个参数: String provider:设备提供者,LocationManager.GPS_PROVIDER和LocationManager.NETWORK_PROVIDER long minTime: 位置信息更新周期,毫秒为单位; float minDistance:位置变化最小距离:当位置距离变化超过此值时,将更新位置信息 LocationListener listener:监听者
* Location 位置信息,通过Location可以获取时间、经纬度、海拔等位置信息。
Location location=locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);//主动获取Location
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
Date date = new Date(location.getTime());
String message = "时间:" + dateFormat.format(date) + "\n"
+"经度:" + location.getLongitude() + "\n"
+ "纬度:" + location.getLatitude() + "\n";
|