OnNmeaMessageListener 不适用于三星 j7、android 6.0.1

问题描述 投票:0回答:1

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

我真的不明白问题是什么,我已经在其他设备上进行了测试,并且该应用程序可以正常工作。

我正在测试的代码:

 LM.addNmeaListener(new OnNmeaMessageListener() {
                @Override
                public void onNmeaMessage(String nmea, long timestamp) {
                 // do stuff
                } 
    });
android android-gps
1个回答
1
投票

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

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 适用于新设备和旧设备。

© www.soinside.com 2019 - 2024. All rights reserved.