【问题标题】:Display the NMEA sentence?显示 NMEA 语句?
【发布时间】:2011-06-08 07:58:23
【问题描述】:

任何一种帮助显示 NMEA 句子,如 $GPRMC ..... 我正在使用以下代码:

public class SampleNMEA extends Activity implements LocationListener, GpsStatus.Listener,GpsStatus.NmeaListener{

    LocationManager lm;
    TextView output;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        output = (TextView)findViewById(R.id.out);
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);

        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this);
        final Location location=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);


        output.append("\nBelow Data is about the your location:");

        output.append("\n\n\nLatit:"+location.getLatitude());
        output.append("\n\nLongitude:"+location.getLongitude());
        output.append("\n\nTime: "+location.getTime());


    }
    public void onLocationChanged(Location location) 
    {
        output.append("\n\n\nLatitude:"+location.getLatitude());
        output.append("\n\nLongitude:"+location.getLongitude());
        output.append("\n\nTime: "+location.getTime());
    }

    public void onProviderDisabled(String arg0) {
        // TODO Auto-generated method stub

    }

    public void onProviderEnabled(String arg0) {
        // TODO Auto-generated method stub

    }

    public void onStatusChanged(String arg0, int arg1, Bundle arg2) 
    {
         lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this);
        final Location location=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
        output.append("\n\n\nLatitude:"+location.getLatitude());
        output.append("\n\nLongitude:"+location.getLongitude());
        output.append("\n\nTime: "+location.getTime());


}

    public void onGpsStatusChanged(int event) 
    {

    }
    public void onNmeaReceived(long timestamp, String nmea) 
    {
        output.append("NMEA Sentence: "+nmea);

    }

    }

任何一个帮助我在 manifest.xml 中添加权限

    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>

【问题讨论】:

  • 嗨,Jagan,你的问题解决了吗?我想做同样的操作,但我做不到。我想通过使用 NMEAListener 获取当前使用的卫星信息以及纬度和经度。所以你能帮我一个忙吗,你能分享你的代码吗,这样我就可以找到我的错误,我可以从中得到更多的想法。提前致谢。

标签: android


【解决方案1】:

将您的提供商更改为 GPS_PROVIDER。

您可以通过 Gps 提供商获取 nmea 语句。

改变这一行

     **lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this);**

     **lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 60000,10,this);**

现在检查 onNmeaReceived() 方法。

【讨论】:

    【解决方案2】:

    只需添加一个 NmeaListener

      public class SampleNMEA extends Activity implements LocationListener, GpsStatus.Listener,GpsStatus.NmeaListener{
    LocationManager lm;
    TextView output;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        output = (TextView)findViewById(R.id.out);
        lm = (LocationManager) getSystemService(LOCATION_SERVICE);
    
        lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 60000,10,this);
        final Location location=lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
    
    
        output.append("\nBelow Data is about the your location:");
    
        output.append("\n\n\nLatit:"+location.getLatitude());
        output.append("\n\nLongitude:"+location.getLongitude());
        output.append("\n\nTime: "+location.getTime());
       //add listener here
        lm.AddNmeaListener(this);
    
    
    
    
    
    }
    

    【讨论】:

      【解决方案3】:

      我有三星 Galaxy Spica,是的,它不起作用。但是,我已经安装了“超 gps 记录器”(link)并且 NMEA 数据被正确读取。也许这个工具的作者使用了不同的解决方案来读取 NMEA,这意味着这是可能的。

      【讨论】:

        【解决方案4】:

        您是否正在调用addNmeaListener(GpsStatus.NmeaListener) 将该类设置为侦听器?如果没有,你应该!

        为此,请将其称为lm.addNmeaListener(this);

        祝你好运& 问候

        【讨论】:

        • 我也试过了,但它没有正确响应。只是应用程序说“强制关闭”我需要为此更改清单文件中所需的任何权限。
        • 您需要将权限 android.permission.ACCESS_FINE_LOCATION 添加到您的 Activity。但除了“强制关闭”之外,日志条目应该提供更多信息。
        【解决方案5】:

        this discussion here 中得出的结论是,NMEA 不适用于某些手机(onNmeaReceived 事件永远不会触发)。 ...但希望对此进行更正。

        【讨论】:

          【解决方案6】:

          如果 fakeGps 在已安装应用列表中,请务必将其删除并重新启动设备以开始接收 Nmea 信息。您可以从 Play Market 安装免费的 Nmea 信息监视器,以在您的设备上测试 Nmea 接收器。

          【讨论】:

            猜你喜欢
            • 2010-11-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-03-01
            • 1970-01-01
            • 2011-06-20
            • 1970-01-01
            相关资源
            最近更新 更多