android中gps当前状态,android – 如何检查GPS接收器的当前状态?

作为SpeedView的开发商:GPS速度计为Android,我必须已经尝试过每个可能的解决方案这个问题,所有与相同的负面的结果。让我们重申一些不起作用:

> onStatusChanged()没有被调用Eclair和Froyo。

>简单地计数所有可用的卫星当然是无用的。

>检查任何卫星是否为usedInFix()返回true也不是很有帮助。系统显然丢失了修复,但仍然报告仍然有几个sats在其中使用。

所以这里是唯一的工作解决方案,我发现,我实际使用在我的应用程序。让我们假设我们有一个简单的类来实现GpsStatus.Listener:

private class MyGPSListener implements GpsStatus.Listener {

public void onGpsStatusChanged(int event) {

switch (event) {

case GpsStatus.GPS_EVENT_SATELLITE_STATUS:

if (mLastLocation != null)

isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

if (isGPSFix) { // A fix has been acquired.

// Do something.

} else { // The fix has been lost.

// Do something.

}

break;

case GpsStatus.GPS_EVENT_FIRST_FIX:

// Do something.

isGPSFix = true;

break;

}

}

}

OK,现在在onLocationChanged()我们添加以下:

@Override

public void onLocationChanged(Location location) {

if (location == null) return;

mLastLocationMillis = SystemClock.elapsedRealtime();

// Do something.

mLastLocation = location;

}

就是这样。基本上,这是做到这一点的线:

isGPSFix = (SystemClock.elapsedRealtime() - mLastLocationMillis) < 3000;

你可以调整millis的价值当然,但我建议设置它大约3-5秒。

这实际上是工作,虽然我没有看过绘制本机GPS图标的源代码,这接近复制其行为。希望这有助于某人。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值