onNmeaReceived的替代方案?

时间:2012-10-18 09:56:26

标签: android nmea

我编写了一个使用NMEA数据的应用程序,由NmeaListener提供。此应用程序适用于以下设备:

  • 华硕Nexus 7,Android 4.1.1
  • Samsung Nexus S,Android 4.1.2
  • SonyEricsson Xperia Mini,Android 2.3.4
  • SonyEricsson Xperia X10 Mini,Android 2.1.1

在所有这些设备上,onNmeaReceived()被调用没有问题。

但是在低成本设备上

  • 华为/沃达丰858,Android 2.2.2
根本没有调用onNmeaReceived()。至少在所有设备上调用onLocationChanged(),包括华为。但我不需要这个位置,我需要NMEA数据。

那么,我该怎么办?

提前感谢您的帮助!

public class Main extends Activity implements NmeaListener, LocationListener {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LocationManager location = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    location.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1l, 1l, this);
    location.addNmeaListener(this);
}

@Override
public void onNmeaReceived(long timestamp, String nmea) {
}

@Override
public void onLocationChanged(Location arg0) {
}

@Override
public void onProviderDisabled(String arg0) {
}

@Override
public void onProviderEnabled(String arg0) {
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
}

1 个答案:

答案 0 :(得分:3)

如果你看一下这个帖子,这似乎是个已知的问题:

Issue 7321: NmeaListener does not receive nmea sentences

如果这对您有影响,除了从位置更新中生成假NMEA之外,可能没有其他解决方案,至少在受影响的手机上是这样。

[编辑]

从您的评论看来,您似乎需要NmeaListener来显示信号强度和卫星等信息,但我认为您可以在没有NmeaListener的情况下执行此操作,只需查看以下答案:

How to measure GPS signal strength on Android?