【发布时间】:2021-12-26 09:41:04
【问题描述】:
以下是我的代码的相关部分:-
public class MainActivity extends Activity
implements SensorEventListener, OnNmeaMessageListener {
private LocationManager m_locationManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ac = this;
m_locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
}
...
protected void onResume() {
...
if (m_locationManager != null) {
m_gpsSensor = new SensorView(this);
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
m_locationManager.addNmeaListener(getMainExecutor(), this);
} else {
// no-op in later versions
m_locationManager.addNmeaListener(this);
}
m_gpsSensor.lineBreak("gps: ", "no messages yet");
} catch (Exception ignore) {
m_gpsSensor.lineBreak("gps: ", getString(R.string.permissiondenied));
}
topLayout.addView(m_gpsSensor);
}
}
@Override
public void onNmeaMessage(String message, long timestamp) {
long nanos = timestamp * 1000000;
if (nanos > m_gpsSensor.lastNanos + UPDATE_NANOS) {
m_gpsSensor.lastNanos = nanos;
m_gpsSensor.lineBreak("gps: ", message);
}
}
}
onNmeaMessage 永远不会被调用(lastNanos 被初始化为零)并且m_gpsSensor(View 的子类)显示“还没有消息”。我的设备确实有 GPS,并且该应用程序有权访问它(否则它会显示“权限被拒绝”),并且 GPS 确实有效,因为它可以看到卫星并通过Satstat得到修复
我试过了
addNmeaListener (OnNmeaMessageListener listener, Handler handler)
这也不起作用。 m_locationManager 不为空,因为在这种情况下它根本不会显示任何内容。
该设备是运行 Android 12 的三星 Galaxy S21 Ultra 5G。
我做错了什么?
【问题讨论】:
标签: android-gps