use of dji.thirdparty.io.reactivex.functions.Consumer in project uav_mobile_app by jiushuokj.
the class MainActivity method startRecordingTrace.
private void startRecordingTrace() {
if (makeTraceDisposable != null && !makeTraceDisposable.isDisposed()) {
return;
}
Log.i(TAG, "startRecordingTrace: " + "开始记录航线");
makeTraceDisposable = Observable.interval(500, TimeUnit.MILLISECONDS).observeOn(AndroidSchedulers.mainThread()).subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws Exception {
if (!DoubleComparer.considerEqual(droneLocationLatForTrace, mFlightController.getState().getAircraftLocation().getLatitude(), DELTA) || !DoubleComparer.considerEqual(droneLocationLngForTrace, mFlightController.getState().getAircraftLocation().getLongitude(), DELTA)) {
// 坐标转换
// final LatLng oldLatlng = new LatLng(droneLocationLatForTrace, droneLocationLngForTrace);
final LatLng oldLatlng = CoordinateTransUtils.getGDLatLng(droneLocationLatForTrace, droneLocationLngForTrace);
droneLocationLatForTrace = mFlightController.getState().getAircraftLocation().getLatitude();
droneLocationLngForTrace = mFlightController.getState().getAircraftLocation().getLongitude();
// 坐标转换
// final LatLng newLatlng = new LatLng(droneLocationLatForTrace, droneLocationLngForTrace);
final LatLng newLatlng = CoordinateTransUtils.getGDLatLng(droneLocationLatForTrace, droneLocationLngForTrace);
Polyline polyline = aMap.addPolyline(new PolylineOptions().addAll(Arrays.asList(oldLatlng, newLatlng)).width(4).color(Color.argb(255, 255, 1, 1)));
mTracePolylines.put(mTracePolylines.size(), polyline);
Log.d(TAG, "startRecordingTrace: " + mTracePolylines.size() + "次轨迹");
}
}
});
}
use of dji.thirdparty.io.reactivex.functions.Consumer in project uav_mobile_app by jiushuokj.
the class MyMqttService method sendStateData.
/**
* 发送无人机状态数据
*/
private void sendStateData() {
if (mqttAndroidClient.isConnected()) {
ToastUtils.setResultToToast("开始发送Mqtt消息");
if (disposable != null && !disposable.isDisposed()) {
return;
}
if (aircraft == null) {
Log.i(TAG, "sendStateData: aircraft实例为空");
return;
}
disposable = Observable.interval(100, TimeUnit.MILLISECONDS).observeOn(Schedulers.newThread()).subscribe(new Consumer<Long>() {
@Override
public void accept(Long aLong) throws MqttException {
if (mqttAndroidClient.isConnected()) {
if (serialNumber != null && flightController.isConnected()) {
// Log.d(TAG, "发送第" + (aLong++) + "次Mqtt消息");
LocationCoordinate3D aircraftLocation = flightControllerState.getAircraftLocation();
Attitude flightControllerStateAttitude = flightControllerState.getAttitude();
ProtoFlightController.FlightController.Builder builder = ProtoFlightController.FlightController.newBuilder().setAreMotorsOn(flightControllerState.areMotorsOn()).setIsFlying(flightControllerState.isFlying()).setLatitude(aircraftLocation.getLatitude()).setLongitude(aircraftLocation.getLongitude()).setAltitude(aircraftLocation.getAltitude()).setTakeoffLocationAltitude(flightControllerState.getTakeoffLocationAltitude()).setPitch(flightControllerStateAttitude.pitch).setRoll(flightControllerStateAttitude.roll).setYaw(flightControllerStateAttitude.yaw).setVelocityX(flightControllerState.getVelocityX()).setVelocityY(flightControllerState.getVelocityY()).setVelocityZ(flightControllerState.getVelocityZ()).setFlightTimeInSeconds(flightControllerState.getFlightTimeInSeconds()).setFlightMode(ProtoFlightController.FlightController.FlightMode.values()[flightControllerState.getFlightMode().ordinal()]).setGPSSatelliteCount(flightControllerState.getSatelliteCount()).setGPSgSignalLevel(ProtoFlightController.FlightController.GPSSignalLevel.values()[flightControllerState.getGPSSignalLevel().ordinal()]).setFlightWindWarning(ProtoFlightController.FlightController.FlightWindWarning.values()[flightControllerState.getFlightWindWarning().ordinal()]).setRemainingFlightTime(flightControllerState.getGoHomeAssessment().getRemainingFlightTime()).setRemainingFlightTime(flightControllerState.getGoHomeAssessment().getTimeNeededToGoHome()).setAirSenseWarningLevel(ProtoFlightController.FlightController.AirSenseWarningLevel.values()[airSenseSystemInformation.getWarningLevel().ordinal()]);
if (rtkState != null) {
builder.setMobileStationAltitude(rtkState.getMobileStationAltitude()).setFusionMobileStationAltitude(rtkState.getFusionMobileStationAltitude()).setBaseStationAltitude(rtkState.getBaseStationAltitude());
}
ProtoFlightController.FlightController flightInformation = builder.build();
String topic = publishTopic + "/FlightController";
byte[] tosendbytes = flightInformation.toByteArray();
MqttMessage flightInformationMessage = new MqttMessage(tosendbytes);
flightInformationMessage.setQos(1);
if (mqttAndroidClient.isConnected()) {
mqttAndroidClient.publish(topic, flightInformationMessage);
// Log.d(TAG,"ltz send out flightInformationMessage "+ tosendbytes.length);
} else {
// Log.d(TAG,"ltz not send out flightInformationMessage");
}
}
if (aggregationState != null) {
ProtoBattery.Battery batteryInfo = ProtoBattery.Battery.newBuilder().setChargeRemaining(aggregationState.getChargeRemaining()).setChargeRemainingInPercent(aggregationState.getChargeRemainingInPercent()).setVoltage(aggregationState.getVoltage()).setCurrent(aggregationState.getCurrent()).build();
String topic = publishTopic + "/Battery";
MqttMessage batteryInfoMessage = new MqttMessage(batteryInfo.toByteArray());
batteryInfoMessage.setQos(1);
if (mqttAndroidClient.isConnected())
mqttAndroidClient.publish(topic, batteryInfoMessage);
}
if (gimbalState != null) {
dji.common.gimbal.Attitude gimbalAttitude = gimbalState.getAttitudeInDegrees();
MqttMessage gimbalInfoMessage = new MqttMessage(ProtoGimbal.Gimbal.newBuilder().setGimbalMode(ProtoGimbal.Gimbal.GimbalMode.values()[gimbalState.getMode().ordinal()]).setPitch(gimbalAttitude.getPitch()).setRoll(gimbalAttitude.getRoll()).setYaw(gimbalAttitude.getYaw()).build().toByteArray());
gimbalInfoMessage.setQos(1);
String topic = publishTopic + "/Gimbal";
if (mqttAndroidClient.isConnected())
mqttAndroidClient.publish(topic, gimbalInfoMessage);
}
if (rtkState != null) {
MqttMessage rtkInfoMessage = new MqttMessage(ProtoRTK.RTK.newBuilder().setIsConnected(rtk.isConnected()).setIsRTKBeingUsed(rtkState.isRTKBeingUsed()).setHeadingSolution(ProtoRTK.RTK.HeadingSolution.values()[rtkState.getHeadingSolution().ordinal()]).build().toByteArray());
rtkInfoMessage.setQos(1);
String topic = publishTopic + "/RTK";
if (mqttAndroidClient.isConnected())
mqttAndroidClient.publish(topic, rtkInfoMessage);
}
} else {
Log.i(TAG, "发送State数据: mqttAndroidClient is disconnected");
}
}
});
// isStarted.getAndSet(true);
}
}
Aggregations