GPS是通过卫星得到信号的:
通过GPS能够确定连接到几颗卫星,得到卫星数量是在GPS状态改变的情况下:代码如下:
首先判断GPS设备是否打开:
private void openGPSSettings() {
LocationManager alm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (alm.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) {
Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT).show();
return;
}
Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
startActivityForResult(intent, 0); // 此为设置完成后返回到获取界面
}
打开GPS设备之后,首先监控卫星数量:使用监听
locationManager.addGpsStatusListener(statusListener);
private List<GpsSatellite> numSatelliteList = new ArrayList<GpsSatellite>(); // 卫星信号
private final GpsStatus.Listener statusListener = new GpsStatus.Listener() {
public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,如卫星数
LocationManager locationManager = (LocationManager) JWActivity.this.getSystemService(Context.LOCATION_SERVICE);
GpsStatus status = locationManager.getGpsStatus(null); //取当前状态
String satelliteInfo = updateGpsStatus(event, status);
tv_satellites.setText(null);
tv_satellites.setText(satelliteInfo);
}
};