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