Android wiki :17.GPS服务

来源:互联网 发布:nginx https 无法访问 编辑:程序博客网 时间:2024/05/18 02:16
//开启服务在后台获得gps坐标,想要的时候数据的时候,开启这个服务,将坐标保存到xml配置文件中,然后取出来即可public class GPSService extends Service {// 用到位置服务private LocationManager lm;private MyLocationListener listener;public void onCreate() {super.onCreate();lm = (LocationManager) getSystemService(LOCATION_SERVICE);//得到位置服务listener = new MyLocationListener();// 注册监听位置服务// 给位置提供者设置条件Criteria criteria = new Criteria();criteria.setAccuracy(Criteria.ACCURACY_FINE);// 设置参数细化:// criteria.setAccuracy(Criteria.ACCURACY_FINE);//设置为最大精度// criteria.setAltitudeRequired(false);//不要求海拔信息// criteria.setBearingRequired(false);//不要求方位信息// criteria.setCostAllowed(true);//是否允许付费// criteria.setPowerRequirement(Criteria.POWER_LOW);//对电量的要求String proveder = lm.getBestProvider(criteria, true);//得到当前可用的最好定位服务名称lm.requestLocationUpdates(proveder, 0, 0, listener);//注册监听位置服务}class MyLocationListener implements LocationListener {/** * 当位置改变的时候回调 */public void onLocationChanged(Location location) {String longitude = "j:" + location.getLongitude() + "\n";//得到经度String latitude = "w:" + location.getLatitude() + "\n";//纬度String accuracy = "a" + location.getAccuracy() + "\n";//精确度// 发短信给安全号码// 把标准的GPS坐标转换成火星坐标(地图上的坐标是由标准的坐标通过算法算出火星坐标的,所以真实gps坐标在地图上显示偏差好大)//所以把标准的gps坐标转换成火星坐标,再在地图上显示就准确了。//InputStream is;//try {//is = getAssets().open("axisoffset.dat");//ModifyOffset offset = ModifyOffset.getInstance(is);//将标准的坐标点传入转换成火星坐标//PointDouble double1 = offset.s2c(new PointDouble(location.getLongitude(), location.getLatitude()));//longitude ="j:" + offset.X+ "\n";//latitude =  "w:" +offset.Y+ "\n";////} catch (Exception e) {//e.printStackTrace();//}finlly{is.close();}//将坐标保存到xml配置文件中SharedPreferences sp = getSharedPreferences("config", MODE_PRIVATE);Editor editor = sp.edit();editor.putString("lastlocation", longitude + latitude + accuracy);editor.commit();}/** * 当状态发生改变的时候回调 开启--关闭 ;关闭--开启 */@Overridepublic void onStatusChanged(String provider, int status, Bundle extras) {// TODO Auto-generated method stub}/** * 某一个位置提供者可以使用了 */@Overridepublic void onProviderEnabled(String provider) {// TODO Auto-generated method stub}/** * 某一个位置提供者不可以使用了 */@Overridepublic void onProviderDisabled(String provider) {// TODO Auto-generated method stub}}public void onDestroy() {super.onDestroy();// 取消监听位置服务lm.removeUpdates(listener);listener = null;}}需要的权限:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/><uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>

0 0
原创粉丝点击