OnNmeaMessageListener 不适用于三星 j7,android 6.0.1

OnNmeaMessageListener not working for samsung j7, android 6.0.1

在 Samsung J7 上测试使用 OnNmeaMessageListener 的应用程序时,该应用程序因此错误而中断

我真的不明白问题出在哪里,我已经在其他设备上测试过,应用程序可以正常工作。

我正在测试的代码:

 LM.addNmeaListener(new OnNmeaMessageListener() {
                @Override
                public void onNmeaMessage(String nmea, long timestamp) {
                 // do stuff
                } 
    });

好的,我找到了 SDK 版本低于 24 的可能解决方案

             if(Build.VERSION.SDK_INT <= Build.VERSION_CODES.N) {
                GpsStatus.NmeaListener nmeaListenerDeprecated = new GpsStatus.NmeaListener() {
                    @Override
                    public void onNmeaReceived(long timestamp, String nmea) {
                        processNmeaData(nmea, timestamp);
                    }
                };
                try {
                    //noinspection JavaReflectionMemberAccess
                    Method addNmeaListener =
                            LocationManager.class.getMethod("addNmeaListener", GpsStatus.NmeaListener.class);
                    addNmeaListener.invoke(LM, nmeaListenerDeprecated);
                } catch (Exception exception) {
                    // TODO
                }
            } else {
                LM.addNmeaListener(new OnNmeaMessageListener() {
                    @Override
                    public void onNmeaMessage(String nmea, long timestamp) {
                        processNmeaData(nmea, timestamp);
                    }
                });
            }

通过该解决方案,我设法让 NMEA 适用于新旧设备。