2012-10-18 54 views
2

我写了一个使用NMEA数据的应用程序,由NmeaListener提供。这个应用程序完美的作品对下列设备:onNmeaReceived的替代选择?

  • 华硕的Nexus 7,Android的4.1.1
  • 三星Nexus S的Android 4.1.2
  • 索尼爱立信的Xperia Mini的安卓2.3.4
  • 索尼爱立信Xperia X10的Mini,Android 2.1.1

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

但低成本的设备

  • 华为/沃达丰858上,机器人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) { 
} 
} 
+0

据我可以记得,即使在接收NMEA句子的种类接收将改变句子的设备。你需要什么NMEA字符串? –

回答

3

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

Issue 7321: NmeaListener does not receive nmea sentences

,如果这是影响你可能没有其他的解决办法不是从位置更新生成假的NMEA,至少在受影响的手机上。

[编辑]

从您的评论看来,你认为你为了显示类似的信号强度和卫星信息需要NmeaListener,但我认为你可以做到这一点没有NmeaListener,只是看问题的解答:

How to measure GPS signal strength on Android?

+0

这个问题不能成为问题:这个设备上运行的应用程序可以显示查看/使用中的任何卫星的信号强度。由于您无法从该位置提取此信息,因此必须有其他解决方案。 ;-) – user1131536

+0

也许这些其他应用程序使用[这个答案](http://stackoverflow.com/questions/3551697/how-to-measure-gps-signal-strength-on-android)来显示信号强度,而不是NMEA数据? –

+0

是的......我认为这就是“他们”这样做的方式。谢谢! – user1131536