GPS的开发、使用,有两个关键点:
1. 选择并激活合适的Provider;
2. 建立合理刷新机制。
下面是通用的方法,以“选择并激活合适的Provider”:
protected void getAndTraceLocation(){
//geocoder = new Geocoder(this, Locale.getDefault());;
geocoder = new Geocoder(this, Locale.ENGLISH);;
// Acquire a reference to the system Location Manager
locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
String provider = locationManager.getBestProvider(criteria, true);
if(provider!=null){
Log.i(TAG, "GPS provider is enabled:" + provider.toString());
// Get the location
latestLocation = locationManager.getLastKnownLocation(provider);
updateWithNewLocation(latestLocation);
// Register the listener with the Location Manager to receive location
locationManager.requestLocationUpdates(provider, 1000, 5, locationListener);
}else{
Log.i(TAG, "No GPS provider found!");
updateWithNewLocation(null);
}
}
protected final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
Log.i(TAG, "location changed to: " + location);
updateWithNewLocation(location);
}
public void onProviderDisabled(String provider) {}
public void onProviderEnabled(String provider) {}
public void onStatusChanged(String provider, int status, Bundle extras) {}
};
需要注意的是:
这里的locationManager.getBestProvider(criteria, true) 之后,必须进行是否为null的判断,否则在终端禁用GPS和网络以后会出现NPE异常。
注意这里回调了一个通用的updateWithNewLocation(latestLocation)方法,用户只要实现这个方法,即可实现第二个关键点,即“建立合理刷新机制”。
下面是最简单的例子:
@Override
protected void updateWithNewLocation(Location location) {
super.updateWithNewLocation(location);
String location_msg = context.getString(R.string.msg_no_gps);
if (location != null) {
location_msg = location.getLatitude() + "," + location.getLongitude();
Log.i(TAG, location_msg);
} else {
Log.i(TAG, location_msg);
}
location_msg = String.format(_location_msg, location_msg);
_location.setText(location_msg);
}
完毕!
分享到:
相关推荐
第一:当使用GPS定位时,最好不要使用getLastKnownLocation方法获得当前位置对象Location,因为该对 象可以在onLocationChanged的参数中由系统给予(根据文档,getLastKnownLocation有2方面功能:1. 获取当前地理...
Android Gps HAL 修改bug ,实现GPS关键数据解析,支持凯立德,道道通等导航软件。 文档见:http://blog.csdn.net/liukun321
android GPS 驱动,使用 ANDROID GPS软件定位。
使用GPS 定位,首先,需要在清单文件(AndroidManifest.xml)中注册获取定位的权限: <!-- GPS定位必须的权限 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> **1.获取位置...
调用底层 不经过用户界面 直接开启GPS模块 测试机型不全 如有问题 欢迎交流
Android 11 获取Gps 文件的
一个简单的android GPS DEMO代码
支持2.1以上的android版本,可以把里面的APK下载到真机上测试,可以做到和系统的GPS开关同步控制,源码是在LINUX下编译的,因为android2.1把修改GPS开关的代码HIDE了,所以在2.1window平台下是编译不了。但是APK直接...
Android GPS 一个关于Android GPS的文档
【Android】代码开启/关闭GPSDemo 相关文章:http://blog.csdn.net/etzmico/article/details/7200470 为了方便看效果,您可以在在onCreate中添加finish();方法,然后打开系统GPS设置页面再运行代码,这样就能看到...
MTK硬件平台,android4.4 gps 的驱动源码!适合用于北斗呦,另外就是可以这套代码已在很多品牌手机上应用!
ANDROID GPS开发的结构分析,搞GPS开发的可以看一看。
TI GPS在android4.2中的架构
详细讲解 Android GPS模块 对于AndroidGPS开发有用
Android GPS 定位的实现 使用Google地图 Android下实现GPS定位服务
android下的GPs定位,android编程之GPS,很好的参考哦
安卓Android源码——androidGPS及WIFI基站定位坐标源码.zip
android获取gps接口数据
android GPS架构之GPS的开启与关闭
GPSTEST android gpstest source code