gps开发 getAzimuth()
GPS开发是如今当前Android开发较为常用的工具。它的开发主要获取定位点的经度纬度,卫星个数,卫星型号等相关数据。
主要运用的LocationManager定位管理器获取相关定位信息。
开发流程如下:
1,初始化管理器
2,获取地理位置信息查询条件
3,监听状态
4,监听位置信息
5,启用GPS.
6,关闭GPS
一,初始化GPS定位管理器:
LocationManager manager=(LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
// 判断GPS是否正常启动
if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//ErrorHandler.showError("GPS未正常启动,请开启后重试!");
DialogPrompt.showDialogPrompt(context, handler,"GPS未正常启动,是否打开GPS设置页面!", 10);
return;
}
// 为获取地理位置信息时设置查询条件
String bestProvider=manager.getBestProvider(getCriteria(), true);
// 获取位置信息
// 如果不设置查询要求,getLastKnownLocation方法传人的参数为LocationManager.GPS_PROVIDER
Location location=manager.getLastKnownLocation(bestProvider);
二,获取地理位置查询条件
调用方法:
LocationManager.getBestProvider(getCriteria(), true);
条件设置:
private Criteria getCriteria() {
Criteria criteria=new Criteria();
// 设置定位精确度 Criteria.ACCURACY_COARSE比较粗略,Criteria.ACCURACY_FINE则比较精细
criteria.setAccuracy(Criteria.ACCURACY_FINE);
// 设置是否要求速度
criteria.setSpeedRequired(true);
// 设置是否允许运营商收费
criteria.setCostAllowed(false);
// 设置是否需要方位信息
criteria.setBearingRequired(true);
// 设置是否需要海拔信息
criteria.setAltitudeRequired(true);
// 设置对电源的需求
criteria.setPowerRequirement(Criteria.POWER_LOW);
return criteria;
}
三,监听状态信息GpsStatus.Listener
通过调用LocationManager.addGpsStatusListener(GpsStatus.Listener);监听GPS当前信息和状态:
// 状态监听GpsStatus.Listener listener=new GpsStatus.Listener() {public void onGpsStatusChanged(int event) {switch (event) {// 第一次定位case GpsStatus.GPS_EVENT_FIRST_FIX:Log.i(TAG, "第一次定位");break;// 卫星状态改变case GpsStatus.GPS_EVENT_SATELLITE_STATUS:callback.GpsState(true);Log.i(TAG, "卫星状态改变");// 获取当前状态GpsStatus gpsStatus=manager.getGpsStatus(null);// 获取卫星颗数的默认最大值int maxSatellites=gpsStatus.getMaxSatellites();// 创建一个迭代器保存所有卫星
Iteratoriters=gpsStatus.getSatellites()
.iterator();
int count=0;
int maxcount=0;
float snr=0;
float azimuth=0;
map.clear();
while (iters.hasNext() && maxcount <=maxSatellites) {
GpsSatellite s=iters.next();
azimuth=s.getAzimuth();//方位角
s.getElevation();//仰角
snr=s.getSnr();//信噪比
if (snr>0) {
count++;
if (map.size()>15) {
map.clear();
}else{
map.put(count, snr);
}
}
maxcount++;
}
callback.GpsreturnMoon(map, count, maxcount,azimuth);
System.out.println("搜索到:" + count + "颗卫星");
break;
// 定位启动
case GpsStatus.GPS_EVENT_STARTED:
Log.i(TAG, "定位启动");
callback.GpsState(true);
break;
// 定位结束
case GpsStatus.GPS_EVENT_STOPPED:
Log.i(TAG, "定位结束");
callback.GpsState(false);
break;
}};};
四,监听位置信息LocationListener
// 位置监听private LocationListener locationListener=new Loca(曹县人为什么被全国骂?曹县人为什么被全国骂有两个说法,说法一:主播把曹县搞得乌烟瘴气。说法二:有些人嫉妒曹县在短视频平台火起来。现在曹县已经牛逼到被大家称为北上广曹,曹县人被全国骂同样是网友的调侃。)tionListener() {public void onLocationChanged(Location location) {Log.i(TAG, "时间:" + location.getTime());Log.i(TAG, "经度:" + location.getLongitude());Log.i(TAG, "纬度:" + location.getLatitude());Log.i(TAG, "海拔:" + location.getAltitude());updateView(location);}public void onStatusChanged(String provider, int status, Bundle extras) {switch (status) {// GPS状态为可见时case LocationProvider.AVAILABLE:Log.i(TAG, "当前GPS状态为可见状态");Location location=manager.getLastKnownLocation(provider);callback.GpsState(true);break;// GPS状态为服务区外时case LocationProvider.OUT_OF_SERVICE:Log.i(TAG, "当前GPS状态为服务区外状态");callback.GpsState(false);break;// GPS状态为暂停服务时case LocationProvider.TEMPORARILY_UNAVAILABLE:Log.i(TAG, "当前GPS状态为暂停服务状态");callback.GpsState(false);break;}}public void onProviderEnabled(String provider) {callback.GpsState(true);Location location=manager.getLastKnownLocation(provider);updateView(location);}public void onProviderDisabled(String provider) {callback.GpsState(false);}};HashMapmap=new HashMap();// 状态监听GpsStatus.Listener listener=new GpsStatus.Listener() {public void onGpsStatusChanged(int event) {switch (event) {// 第一次定位case GpsStatus.GPS_EVENT_FIRST_FIX:Log.i(TAG, "第一次定位");break;// 卫星状态改变case GpsStatus.GPS_EVENT_SATELLITE_STATUS:callback.GpsState(true);Log.i(TAG, "卫星状态改变");// 获取当前状态GpsStatus gpsStatus=manager.getGpsStatus(null);// 获取卫星颗数的默认最大值int maxSatellites=gpsStatus.getMaxSatellites();// 创建一个迭代器保存所有卫星Iteratoriters=gpsStatus.getSatellites()
.iterator();
int count=0;
int maxcount=0;
float snr=0;
float azimuth=0;
map.clear();
while (iters.hasNext() && maxcount <=maxSatellites) {
GpsSatellite s=iters.next();
azimuth=s.getAzimuth();//方位角
s.getElevation();//仰角
snr=s.getSnr();//信噪比
if (snr>0) {
count++;
if (map.size()>15) {
map.clear();
}else{
map.put(count, snr);
}
}
maxcount++;
}
callback.GpsreturnMoon(map, count, maxcount,azimuth);
System.out.println("搜索到:" + count + "颗卫星");
break;
// 定位启动
case GpsStatus.GPS_EVENT_STARTED:
Log.i(TAG, "定位启动");
callback.GpsState(true);
break;
// 定位结束
case GpsStatus.GPS_EVENT_STOPPED:
Log.i(TAG, "定位结束");
callback.GpsState(false);
break;
}
};
};
五,启用GPS服务
LocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,1,
LocationListener);
六,关闭GPS服务
LocationManager.removeUpdates(LocationListener);
相关文章
猜你喜欢
-
古代建筑设计 根据脊数多少
中国古建筑屋顶可分为以下几种形式:庑殿顶、歇山顶、悬山顶、硬山顶、攒尖顶、盝顶等。其中庑殿顶、歇山顶、攒尖顶又分为单檐(一个屋檐)和重檐(两个或两个以上屋檐)两...
-
hybridchild 反映主人的爱情而成长
1、hybrid child是《眷恋你的温柔》中的虚拟用语。 2、像一面镜子,反映主人的爱情而成长。 3、是一种类似于人类的物品。 本文关于h...
-
中国蟋蟀网 杯赛赛制为一周1场
千呼万唤始出来,2020-2021中国蟋蟀网《108将》合集开始预订啦! 预订请微信联系: 客服1号:微信号xishuaicom 客服2号:微...
-
pp管 爱皮皮的大叔
1、pp管的生产原材料是聚丙烯,是目前国内使用频率最广的塑料管之一,可以承受一定的高低温,经常作为居家用水管道系统,最大的特点是安全卫生,耐腐蚀性,物理性能和化...
-
塑胶篮球场的造价 digg_count=0
做一个塑胶篮球场首先要满足场地要求,长度32米,宽度19米。在根据面积以及使用的塑胶类型确定做一个塑胶网球场多少钱,根据塑胶材料不同,估算一个塑胶篮球场价格。...