如何监听Android GPS设备的搜索卫星状态和稳定接收卫星数据状态? 本帖最后由 sdzbsj 于 2011-11-15 21:26:44 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定位了就有经纬度,没定位,则一直闪的;一般是4个星的时候 会定位。所以可以根据是否获取有效的经纬度信息来判断是否定位。卫星的个数 sv_status也是可以通过API获取的。LOCATION类 给你一段我的代码,看看就知道了。locationManager.addGpsStatusListener(statusListener);//侦听GPS状态private GpsStatus.Listener statusListener = new GpsStatus.Listener() { public void onGpsStatusChanged(int event) { // TODO Auto-generated method stub GpsStatus gpsStatus= locationManager.getGpsStatus(null); Log.v(TAG,"GPS status listener "); //Utils.DisplayToastShort(GPSService.this, "GPS status listener "); switch(event) { case GpsStatus.GPS_EVENT_FIRST_FIX:{ //第一次定位时间UTC gps可用 //Log.v(TAG,"GPS is usable"); int i=gpsStatus.getTimeToFirstFix(); Utils.DisplayToastShort(GPSService.this, "GPS 第一次可用 "+i); Utils.setGPSStatus(Utils.GPS_STATUS.START); break; } case GpsStatus.GPS_EVENT_SATELLITE_STATUS:{//周期的报告卫星状态 //得到所有收到的卫星的信息,包括 卫星的高度角、方位角、信噪比、和伪随机号(及卫星编号) Iterable<GpsSatellite> allSatellites; allSatellites = gpsStatus.getSatellites(); Iterator<GpsSatellite>iterator = allSatellites.iterator(); int numOfSatellites = 0; int maxSatellites=gpsStatus.getMaxSatellites(); while(iterator.hasNext() && numOfSatellites<maxSatellites){ numOfSatellites++; iterator.next(); } Log.v(TAG,"GPS is **unusable** "+ numOfSatellites +" "+ maxSatellites); if( numOfSatellites < 3){ // Utils.DisplayToastShort(GPSService.this, "***卫星少于3颗***"); Utils.setGPSStatus(Utils.GPS_STATUS.STOP); } else if(numOfSatellites > 7){ Utils.setGPSStatus(Utils.GPS_STATUS.START); } break; } case GpsStatus.GPS_EVENT_STARTED:{ //Utils.DisplayToastShort(GPSService.this, "GPS start Event"); break; } case GpsStatus.GPS_EVENT_STOPPED:{ //Utils.DisplayToastShort(GPSService.this, "GPS **stop*** Event"); Utils.setGPSStatus(Utils.GPS_STATUS.STOP); break; } default : break; } } }; 如何动态的设置Relative Layout中按钮的layout_align_parent_right属性 android AVD打不开的问题 android GPS或者NET_Work在室内很多情况下定位失败 androidpn消息推送 android 蓝牙打印 关于SearchView控件的一点问题 求助,如何能在Activity中获取Service中的数据??? 关于蓝牙的一个问题 android图像处理问题,求大神指导,急!!! andrid 数据库 关于不同分辨率的显示问题 100 分 求助 -----------> Android装载freetype失败
一般是4个星的时候 会定位。
所以可以根据是否获取有效的经纬度信息来判断是否定位。卫星的个数 sv_status也是可以通过API获取的。LOCATION类
给你一段我的代码,看看就知道了。locationManager.addGpsStatusListener(statusListener);//侦听GPS状态private GpsStatus.Listener statusListener = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event)
{
// TODO Auto-generated method stub
GpsStatus gpsStatus= locationManager.getGpsStatus(null);
Log.v(TAG,"GPS status listener ");
//Utils.DisplayToastShort(GPSService.this, "GPS status listener ");
switch(event)
{
case GpsStatus.GPS_EVENT_FIRST_FIX:{
//第一次定位时间UTC gps可用
//Log.v(TAG,"GPS is usable");
int i=gpsStatus.getTimeToFirstFix();
Utils.DisplayToastShort(GPSService.this, "GPS 第一次可用 "+i);
Utils.setGPSStatus(Utils.GPS_STATUS.START);
break;
}
case GpsStatus.GPS_EVENT_SATELLITE_STATUS:{//周期的报告卫星状态
//得到所有收到的卫星的信息,包括 卫星的高度角、方位角、信噪比、和伪随机号(及卫星编号)
Iterable<GpsSatellite> allSatellites;
allSatellites = gpsStatus.getSatellites();
Iterator<GpsSatellite>iterator = allSatellites.iterator();
int numOfSatellites = 0;
int maxSatellites=gpsStatus.getMaxSatellites();
while(iterator.hasNext() && numOfSatellites<maxSatellites){
numOfSatellites++;
iterator.next();
}
Log.v(TAG,"GPS is **unusable** "+ numOfSatellites +" "+ maxSatellites);
if( numOfSatellites < 3){
// Utils.DisplayToastShort(GPSService.this, "***卫星少于3颗***");
Utils.setGPSStatus(Utils.GPS_STATUS.STOP);
} else if(numOfSatellites > 7){
Utils.setGPSStatus(Utils.GPS_STATUS.START);
}
break;
}
case GpsStatus.GPS_EVENT_STARTED:{
//Utils.DisplayToastShort(GPSService.this, "GPS start Event");
break;
}
case GpsStatus.GPS_EVENT_STOPPED:{
//Utils.DisplayToastShort(GPSService.this, "GPS **stop*** Event");
Utils.setGPSStatus(Utils.GPS_STATUS.STOP);
break;
}
default :
break;
}
}
};