手机定位的方式
GPS:三角定位、定位精确、最小精度大概在15米左右、缺点——定位速度慢、开机时间长
基站:使用三角定位法、定位快、定位精度低30米到2公里
网络:使用ip来定位;定位速度快,精确;
AGAP:网络辅助定位系统;现在手机上用这种方式定位;
在清单文件中添加权限:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> 注:最佳定位方式通过GPS、
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>注:网络定位
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>注:车载系统定位
权限注解:
Allows an app to access precise location from location sources such as GPS, cell towers, and Wi-Fi. (android.permission.ACCESS_FINE_LOCATION)
Allows an app to access approximate location derived from network location sources such as cell towers and Wi-Fi(android.permission.ACCESS_COARSE_LOCATION)
Allows an application to create mock location providers for testing(android.permission.ACCESS_MOCK_LOCATION)
定位api:
1、通过系统服务得到LocationManager对象
LocationManager lm=(LocationManager)getSysyrmService
2、通过调用requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)来实现定位
lm.requestLocationUpdates("gps",0,0,new MyLocationLiseter());
参数注释:
provider :获得地理位置信息方式:GPS\基站\网络
minTime:至少多长时间重新获得信息
minDistance:至少移动多长距离重新获得信息
listener:位置变化的监听器
自定义LocationListener 并将具体的定位信息序列化到本地
private class MyLocationLiseter implements LocationListener{
/**
* 位置发生变化调用这个方法
*/
@Override
public void onLocationChanged(Location location) {
// 维度
double w = location.getLatitude();
// 经度
double j = location.getLongitude();
// 精确度
double a = location.getAccuracy();
String l = w+","+j+ "," +a;
System.out.println("=================="+l);
SharedPreferences sp = getSharedPreferences("config", Context.MODE_PRIVATE);
Editor editor = sp.edit();
editor.putString("location", l);
editor.commit();
}
/**
* 某一种定位方式的状态发生变化调用这个方法
* 打开--关闭
* 关闭--打开
*/
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
/**
* 某一种定位方式的可用时发生变化时调用这个方法
* 不可用--可用
*/
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
/**
* 某一种定位方式的不可用时发生变化时调用这个方法
* 可用--不可用
*/
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
}