Java 类android.location.GnssNavigationMessage 实例源码

项目:AndroidSensors    文件:RawGPSNavigationGatherer.java   
@RequiresApi(Build.VERSION_CODES.N)
@Override
protected void configureSensorSubscribeAndUnsubscribeBehaviors(FlowableEmitter<SensorRecord> subscriber) {
    final GnssNavigationMessage.Callback callback = initializeGnssNavigationCallbackFor(subscriber);

    startListeningGnssNavigationMessages(callback);
    addUnsubscribeCallbackFor(subscriber, callback);
}
项目:AndroidSensors    文件:RawGPSNavigationGatherer.java   
@RequiresApi(Build.VERSION_CODES.N)
private GnssNavigationMessage.Callback initializeGnssNavigationCallbackFor(final FlowableEmitter<SensorRecord> subscriber) {
    return new GnssNavigationMessage.Callback() {
        @Override
        public void onGnssNavigationMessageReceived(GnssNavigationMessage event) {
            subscriber.onNext(new RawGPSNavigationRecord(event));
        }
    };
}
项目:AndroidSensors    文件:RawGPSNavigationGatherer.java   
@RequiresApi(Build.VERSION_CODES.N)
private void startListeningGnssNavigationMessages(final GnssNavigationMessage.Callback callback) {
    // This is needed because location manager location updates need a looper
    Completable.create(new CompletableOnSubscribe() {
        @Override
        public void subscribe(CompletableEmitter e) throws Exception {
            checkRegistrationSuccess(locationManager.registerGnssNavigationMessageCallback(callback));
        }
    })
            .subscribeOn(AndroidSchedulers.mainThread())
            .subscribe();
}
项目:AndroidSensors    文件:RawGPSNavigationGatherer.java   
@RequiresApi(Build.VERSION_CODES.N)
private void addUnsubscribeCallbackFor(FlowableEmitter<SensorRecord> subscriber,
                                       final GnssNavigationMessage.Callback callback) {
    subscriber.setCancellable(new Cancellable() {
        @Override
        public void cancel() throws Exception {
            locationManager.unregisterGnssNavigationMessageCallback(callback);
        }
    });
}
项目:gps-measurement-tools    文件:GnssContainer.java   
@Override
public void onGnssNavigationMessageReceived(GnssNavigationMessage event) {
  if (mLogNavigationMessages) {
    for (GnssListener logger : mLoggers) {
      logger.onGnssNavigationMessageReceived(event);
    }
  }
}
项目:gps-measurement-tools    文件:FileLogger.java   
@Override
public void onGnssNavigationMessageReceived(GnssNavigationMessage navigationMessage) {
  synchronized (mFileLock) {
    if (mFileWriter == null) {
      return;
    }
    StringBuilder builder = new StringBuilder("Nav");
    builder.append(RECORD_DELIMITER);
    builder.append(navigationMessage.getSvid());
    builder.append(RECORD_DELIMITER);
    builder.append(navigationMessage.getType());
    builder.append(RECORD_DELIMITER);

    int status = navigationMessage.getStatus();
    builder.append(status);
    builder.append(RECORD_DELIMITER);
    builder.append(navigationMessage.getMessageId());
    builder.append(RECORD_DELIMITER);
    builder.append(navigationMessage.getSubmessageId());
    byte[] data = navigationMessage.getData();
    for (byte word : data) {
      builder.append(RECORD_DELIMITER);
      builder.append(word);
    }
    try {
      mFileWriter.write(builder.toString());
      mFileWriter.newLine();
    } catch (IOException e) {
      logException(ERROR_WRITING_FILE, e);
    }
  }
}
项目:gps-measurement-tools    文件:UiLogger.java   
private String getGnssNavigationMessageStatus(int status) {
  switch (status) {
    case GnssNavigationMessage.STATUS_UNKNOWN:
      return "Status Unknown";
    case GnssNavigationMessage.STATUS_PARITY_PASSED:
      return "READY";
    case GnssNavigationMessage.STATUS_PARITY_REBUILT:
      return "Status Parity Rebuilt";
    default:
      return "<Unknown>";
  }
}
项目:gps-measurement-tools    文件:PseudorangePositionVelocityFromRealTimeEvents.java   
/**
 * Parses a string array containing an updates to the navigation message and return the most
 * recent {@link GpsNavMessageProto}.
 */
public void parseHwNavigationMessageUpdates(GnssNavigationMessage navigationMessage) {
  byte messagePrn = (byte) navigationMessage.getSvid();
  byte messageType = (byte) (navigationMessage.getType() >> 8);
  int subMessageId = navigationMessage.getSubmessageId();

  byte[] messageRawData = navigationMessage.getData();
  // parse only GPS navigation messages for now
  if (messageType == 1) {
    mGpsNavigationMessageStore.onNavMessageReported(
        messagePrn, messageType, (short) subMessageId, messageRawData);
    mHardwareGpsNavMessageProto = mGpsNavigationMessageStore.createDecodedNavMessage();
  }

}
项目:AndroidSensors    文件:RawGPSNavigationRecord.java   
@RequiresApi(api = Build.VERSION_CODES.N)
public RawGPSNavigationRecord(GnssNavigationMessage navigationMessage) {
    super(new RecordInfo(System.currentTimeMillis()));
    this.message = navigationMessage.toString().replace('\n', ',');
}
项目:gps-measurement-tools    文件:AgnssUiLogger.java   
@Override
public void onGnssNavigationMessageReceived(GnssNavigationMessage event) {}
项目:gps-measurement-tools    文件:GnssListener.java   
/** @see GnssNavigationMessage.Callback# onGnssNavigationMessageReceived(GnssNavigationMessage) */
void onGnssNavigationMessageReceived(GnssNavigationMessage event);
项目:gps-measurement-tools    文件:UiLogger.java   
@Override
public void onGnssNavigationMessageReceived(GnssNavigationMessage event) {
  logNavigationMessageEvent("onGnssNavigationMessageReceived: " + event);
}
项目:gps-measurement-tools    文件:RealTimePositionVelocityCalculator.java   
@Override
public void onGnssNavigationMessageReceived(GnssNavigationMessage event) {
  if (event.getType() == GnssNavigationMessage.TYPE_GPS_L1CA) {
    mPseudorangePositionVelocityFromRealTimeEvents.parseHwNavigationMessageUpdates(event);
  }
}