增加当前车辆当前位置上报功能,还有点儿小问题

This commit is contained in:
董宏宇
2021-06-09 14:53:05 +08:00
parent 34ac5081aa
commit 7fb76d86c5
11 changed files with 10934 additions and 28 deletions

View File

@@ -32,10 +32,10 @@ dependencies {
if (Boolean.valueOf(RELEASE)) {
implementation "com.mogo.cloud:network:${MOGO_NETWORK_VERSION}"
implementation "com.mogo.cloud:socket:${MOGO_SOCKET_VERSION}"
api "com.mogo.cloud:socket:${MOGO_SOCKET_VERSION}"
} else {
implementation project(":foudations:mogo-network")
implementation project(":foudations:mogo-socket")
api project(":foudations:mogo-socket")
}
}

View File

@@ -1,5 +1,8 @@
package com.mogo.realtime.api;
import com.mogo.realtime.entity.DataCollectWrapper;
/**
* 蘑菇AI云平台实时定位点上报服务接口
*/
@@ -13,6 +16,6 @@ public interface IRealTimeProvider {
/**
* 发送消息,由外部传入ø
*/
// List<CloudLocationInfo> getLocationMsg(); // todo 数据实体替换成PB
DataCollectWrapper.DataCollectMsg getLocationMsg(); // todo 数据实体替换成PB
}

View File

@@ -3,4 +3,6 @@ package com.mogo.realtime.constant;
public class RealTimeConstant {
public static final String TAG = "MoGoAiCloud_RealTime";
public static final int HIGH_FREQUENCY_CHANNEL_ID = 0x040002; //高频数据
public static final int LOW_FREQUENCY_CHANNEL_ID = 0x040003; //低频数据
}

View File

@@ -2,9 +2,13 @@ package com.mogo.realtime.core;
import android.content.Context;
import com.mogo.cloud.socket.entity.MsgBody;
import com.mogo.realtime.constant.RealTimeConstant;
import com.mogo.realtime.entity.DataCollectWrapper;
import com.mogo.realtime.socket.SocketHandler;
import com.mogo.realtime.spi.RealTimeProviderImp;
/**
* 上报坐标服务
*/
@@ -53,6 +57,13 @@ public class SnapshotUploadInTime implements UploadInTimeHandler.IUploadInTimeLi
@Override
public void sendLocationData() {
// SocketHandler.getInstance().sendMsg(); // todo 构建数据传输对象
DataCollectWrapper.DataCollectMsg dataCollectMsg =
RealTimeProviderImp.getInstance().getLocationMsg();//SPI接口返回
if (dataCollectMsg != null) {
MsgBody msgBody = new MsgBody();
msgBody.msgType(RealTimeConstant.HIGH_FREQUENCY_CHANNEL_ID);
msgBody.content(dataCollectMsg.toByteArray());
SocketHandler.getInstance().sendMsg(msgBody);
}
}
}

View File

@@ -0,0 +1,650 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: A.proto
package com.mogo.realtime.entity;
public final class DataCollectMsgDataProto {
private DataCollectMsgDataProto() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistryLite registry) {
}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
registerAllExtensions(
(com.google.protobuf.ExtensionRegistryLite) registry);
}
public interface DataCollectMsgDataOrBuilder extends
// @@protoc_insertion_point(interface_extends:DataCollectMsgData)
com.google.protobuf.MessageOrBuilder {
/**
* <pre>
*业务消息体类型(由各个endpoint自定义)
* </pre>
*
* <code>uint32 msgType = 1;</code>
* @return The msgType.
*/
int getMsgType();
/**
* <pre>
*消息体内容(由各个endpoint自定义)
* </pre>
*
* <code>bytes payload = 2;</code>
* @return The payload.
*/
com.google.protobuf.ByteString getPayload();
}
/**
* Protobuf type {@code DataCollectMsgData}
*/
public static final class DataCollectMsgData extends
com.google.protobuf.GeneratedMessageV3 implements
// @@protoc_insertion_point(message_implements:DataCollectMsgData)
DataCollectMsgDataOrBuilder {
private static final long serialVersionUID = 0L;
// Use DataCollectMsgData.newBuilder() to construct.
private DataCollectMsgData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
super(builder);
}
private DataCollectMsgData() {
payload_ = com.google.protobuf.ByteString.EMPTY;
}
@Override
@SuppressWarnings({"unused"})
protected Object newInstance(
UnusedPrivateParameter unused) {
return new DataCollectMsgData();
}
@Override
public final com.google.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private DataCollectMsgData(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
this();
if (extensionRegistry == null) {
throw new NullPointerException();
}
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
int tag = input.readTag();
switch (tag) {
case 0:
done = true;
break;
case 8: {
msgType_ = input.readUInt32();
break;
}
case 18: {
payload_ = input.readBytes();
break;
}
default: {
if (!parseUnknownField(
input, unknownFields, extensionRegistry, tag)) {
done = true;
}
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
e).setUnfinishedMessage(this);
} finally {
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return DataCollectMsgDataProto.internal_static_DataCollectMsgData_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
return DataCollectMsgDataProto.internal_static_DataCollectMsgData_fieldAccessorTable
.ensureFieldAccessorsInitialized(
DataCollectMsgData.class, Builder.class);
}
public static final int MSGTYPE_FIELD_NUMBER = 1;
private int msgType_;
/**
* <pre>
*业务消息体类型(由各个endpoint自定义)
* </pre>
*
* <code>uint32 msgType = 1;</code>
* @return The msgType.
*/
@Override
public int getMsgType() {
return msgType_;
}
public static final int PAYLOAD_FIELD_NUMBER = 2;
private com.google.protobuf.ByteString payload_;
/**
* <pre>
*消息体内容(由各个endpoint自定义)
* </pre>
*
* <code>bytes payload = 2;</code>
* @return The payload.
*/
@Override
public com.google.protobuf.ByteString getPayload() {
return payload_;
}
private byte memoizedIsInitialized = -1;
@Override
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
memoizedIsInitialized = 1;
return true;
}
@Override
public void writeTo(com.google.protobuf.CodedOutputStream output)
throws java.io.IOException {
if (msgType_ != 0) {
output.writeUInt32(1, msgType_);
}
if (!payload_.isEmpty()) {
output.writeBytes(2, payload_);
}
unknownFields.writeTo(output);
}
@Override
public int getSerializedSize() {
int size = memoizedSize;
if (size != -1) return size;
size = 0;
if (msgType_ != 0) {
size += com.google.protobuf.CodedOutputStream
.computeUInt32Size(1, msgType_);
}
if (!payload_.isEmpty()) {
size += com.google.protobuf.CodedOutputStream
.computeBytesSize(2, payload_);
}
size += unknownFields.getSerializedSize();
memoizedSize = size;
return size;
}
@Override
public boolean equals(final Object obj) {
if (obj == this) {
return true;
}
if (!(obj instanceof DataCollectMsgData)) {
return super.equals(obj);
}
DataCollectMsgData other = (DataCollectMsgData) obj;
if (getMsgType()
!= other.getMsgType()) return false;
if (!getPayload()
.equals(other.getPayload())) return false;
if (!unknownFields.equals(other.unknownFields)) return false;
return true;
}
@Override
public int hashCode() {
if (memoizedHashCode != 0) {
return memoizedHashCode;
}
int hash = 41;
hash = (19 * hash) + getDescriptor().hashCode();
hash = (37 * hash) + MSGTYPE_FIELD_NUMBER;
hash = (53 * hash) + getMsgType();
hash = (37 * hash) + PAYLOAD_FIELD_NUMBER;
hash = (53 * hash) + getPayload().hashCode();
hash = (29 * hash) + unknownFields.hashCode();
memoizedHashCode = hash;
return hash;
}
public static DataCollectMsgData parseFrom(
java.nio.ByteBuffer data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static DataCollectMsgData parseFrom(
java.nio.ByteBuffer data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static DataCollectMsgData parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static DataCollectMsgData parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static DataCollectMsgData parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static DataCollectMsgData parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static DataCollectMsgData parseFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static DataCollectMsgData parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
public static DataCollectMsgData parseDelimitedFrom(java.io.InputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input);
}
public static DataCollectMsgData parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseDelimitedWithIOException(PARSER, input, extensionRegistry);
}
public static DataCollectMsgData parseFrom(
com.google.protobuf.CodedInputStream input)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input);
}
public static DataCollectMsgData parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return com.google.protobuf.GeneratedMessageV3
.parseWithIOException(PARSER, input, extensionRegistry);
}
@Override
public Builder newBuilderForType() { return newBuilder(); }
public static Builder newBuilder() {
return DEFAULT_INSTANCE.toBuilder();
}
public static Builder newBuilder(DataCollectMsgData prototype) {
return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
}
@Override
public Builder toBuilder() {
return this == DEFAULT_INSTANCE
? new Builder() : new Builder().mergeFrom(this);
}
@Override
protected Builder newBuilderForType(
BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
/**
* Protobuf type {@code DataCollectMsgData}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:DataCollectMsgData)
DataCollectMsgDataOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
getDescriptor() {
return DataCollectMsgDataProto.internal_static_DataCollectMsgData_descriptor;
}
@Override
protected FieldAccessorTable
internalGetFieldAccessorTable() {
return DataCollectMsgDataProto.internal_static_DataCollectMsgData_fieldAccessorTable
.ensureFieldAccessorsInitialized(
DataCollectMsgData.class, Builder.class);
}
// Construct using mogo.yycp.proto.DataCollectMsgDataProto.DataCollectMsgData.newBuilder()
private Builder() {
maybeForceBuilderInitialization();
}
private Builder(
BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessageV3
.alwaysUseFieldBuilders) {
}
}
@Override
public Builder clear() {
super.clear();
msgType_ = 0;
payload_ = com.google.protobuf.ByteString.EMPTY;
return this;
}
@Override
public com.google.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return DataCollectMsgDataProto.internal_static_DataCollectMsgData_descriptor;
}
@Override
public DataCollectMsgData getDefaultInstanceForType() {
return DataCollectMsgData.getDefaultInstance();
}
@Override
public DataCollectMsgData build() {
DataCollectMsgData result = buildPartial();
if (!result.isInitialized()) {
throw newUninitializedMessageException(result);
}
return result;
}
@Override
public DataCollectMsgData buildPartial() {
DataCollectMsgData result = new DataCollectMsgData(this);
result.msgType_ = msgType_;
result.payload_ = payload_;
onBuilt();
return result;
}
@Override
public Builder clone() {
return super.clone();
}
@Override
public Builder setField(
com.google.protobuf.Descriptors.FieldDescriptor field,
Object value) {
return super.setField(field, value);
}
@Override
public Builder clearField(
com.google.protobuf.Descriptors.FieldDescriptor field) {
return super.clearField(field);
}
@Override
public Builder clearOneof(
com.google.protobuf.Descriptors.OneofDescriptor oneof) {
return super.clearOneof(oneof);
}
@Override
public Builder setRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
int index, Object value) {
return super.setRepeatedField(field, index, value);
}
@Override
public Builder addRepeatedField(
com.google.protobuf.Descriptors.FieldDescriptor field,
Object value) {
return super.addRepeatedField(field, value);
}
@Override
public Builder mergeFrom(com.google.protobuf.Message other) {
if (other instanceof DataCollectMsgData) {
return mergeFrom((DataCollectMsgData)other);
} else {
super.mergeFrom(other);
return this;
}
}
public Builder mergeFrom(DataCollectMsgData other) {
if (other == DataCollectMsgData.getDefaultInstance()) return this;
if (other.getMsgType() != 0) {
setMsgType(other.getMsgType());
}
if (other.getPayload() != com.google.protobuf.ByteString.EMPTY) {
setPayload(other.getPayload());
}
this.mergeUnknownFields(other.unknownFields);
onChanged();
return this;
}
@Override
public final boolean isInitialized() {
return true;
}
@Override
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
DataCollectMsgData parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (DataCollectMsgData) e.getUnfinishedMessage();
throw e.unwrapIOException();
} finally {
if (parsedMessage != null) {
mergeFrom(parsedMessage);
}
}
return this;
}
private int msgType_ ;
/**
* <pre>
*业务消息体类型(由各个endpoint自定义)
* </pre>
*
* <code>uint32 msgType = 1;</code>
* @return The msgType.
*/
@Override
public int getMsgType() {
return msgType_;
}
/**
* <pre>
*业务消息体类型(由各个endpoint自定义)
* </pre>
*
* <code>uint32 msgType = 1;</code>
* @param value The msgType to set.
* @return This builder for chaining.
*/
public Builder setMsgType(int value) {
msgType_ = value;
onChanged();
return this;
}
/**
* <pre>
*业务消息体类型(由各个endpoint自定义)
* </pre>
*
* <code>uint32 msgType = 1;</code>
* @return This builder for chaining.
*/
public Builder clearMsgType() {
msgType_ = 0;
onChanged();
return this;
}
private com.google.protobuf.ByteString payload_ = com.google.protobuf.ByteString.EMPTY;
/**
* <pre>
*消息体内容(由各个endpoint自定义)
* </pre>
*
* <code>bytes payload = 2;</code>
* @return The payload.
*/
@Override
public com.google.protobuf.ByteString getPayload() {
return payload_;
}
/**
* <pre>
*消息体内容(由各个endpoint自定义)
* </pre>
*
* <code>bytes payload = 2;</code>
* @param value The payload to set.
* @return This builder for chaining.
*/
public Builder setPayload(com.google.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
payload_ = value;
onChanged();
return this;
}
/**
* <pre>
*消息体内容(由各个endpoint自定义)
* </pre>
*
* <code>bytes payload = 2;</code>
* @return This builder for chaining.
*/
public Builder clearPayload() {
payload_ = getDefaultInstance().getPayload();
onChanged();
return this;
}
@Override
public final Builder setUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.setUnknownFields(unknownFields);
}
@Override
public final Builder mergeUnknownFields(
final com.google.protobuf.UnknownFieldSet unknownFields) {
return super.mergeUnknownFields(unknownFields);
}
// @@protoc_insertion_point(builder_scope:DataCollectMsgData)
}
// @@protoc_insertion_point(class_scope:DataCollectMsgData)
private static final DataCollectMsgData DEFAULT_INSTANCE;
static {
DEFAULT_INSTANCE = new DataCollectMsgData();
}
public static DataCollectMsgData getDefaultInstance() {
return DEFAULT_INSTANCE;
}
private static final com.google.protobuf.Parser<DataCollectMsgData>
PARSER = new com.google.protobuf.AbstractParser<DataCollectMsgData>() {
@Override
public DataCollectMsgData parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
return new DataCollectMsgData(input, extensionRegistry);
}
};
public static com.google.protobuf.Parser<DataCollectMsgData> parser() {
return PARSER;
}
@Override
public com.google.protobuf.Parser<DataCollectMsgData> getParserForType() {
return PARSER;
}
@Override
public DataCollectMsgData getDefaultInstanceForType() {
return DEFAULT_INSTANCE;
}
}
private static final com.google.protobuf.Descriptors.Descriptor
internal_static_DataCollectMsgData_descriptor;
private static final
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
internal_static_DataCollectMsgData_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
}
private static com.google.protobuf.Descriptors.FileDescriptor
descriptor;
static {
String[] descriptorData = {
"\n\007A.proto\"6\n\022DataCollectMsgData\022\017\n\007msgTy" +
"pe\030\001 \001(\r\022\017\n\007payload\030\002 \001(\014B*\n\017mogo.yycp.p" +
"rotoB\027DataCollectMsgDataProtob\006proto3"
};
descriptor = com.google.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
});
internal_static_DataCollectMsgData_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_DataCollectMsgData_fieldAccessorTable = new
com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
internal_static_DataCollectMsgData_descriptor,
new String[] { "MsgType", "Payload", });
}
// @@protoc_insertion_point(outer_class_scope)
}

View File

@@ -7,6 +7,7 @@ import com.mogo.cloud.socket.SocketManager;
import com.mogo.cloud.socket.entity.MsgBody;
import com.mogo.cloud.socket.entity.SocketDownData;
import com.mogo.cloud.utils.logger.Logger;
import com.mogo.realtime.constant.RealTimeConstant;
import com.zhidao.ptech.connsvr.protocol.MogoConnsvr;
import java.util.ArrayList;
@@ -22,8 +23,7 @@ public class SocketHandler {
private static volatile SocketHandler mInstance;
private static final int HEADER_TYPE = MogoConnsvr.MsgType.mogoMsgTypeCollectSvrNoRspReq.getNumber();
private static final int HIGH_FREQUENCY_CHANNEL_ID = 0x040002; //高频数据
private static final int LOW_FREQUENCY_CHANNEL_ID = 0x040003; //低频数据
private String mAppId;
private final List<IMogoCloudOnMsgListener> onMsgListenerList = new ArrayList<>();
@@ -48,8 +48,8 @@ public class SocketHandler {
public void initSocket(Context context, String appId) {
mAppId = appId;
SocketManager.getInstance().init(context);
SocketManager.getInstance().registerOnMessageListener(HIGH_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().registerOnMessageListener(LOW_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().registerOnMessageListener(RealTimeConstant.HIGH_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().registerOnMessageListener(RealTimeConstant.LOW_FREQUENCY_CHANNEL_ID, onMessageListener);
}
public void registerOnMsgListener(IMogoCloudOnMsgListener onMsgListener) {
@@ -102,8 +102,8 @@ public class SocketHandler {
}
public void stop() {
SocketManager.getInstance().unregisterOnMessageListener(HIGH_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().unregisterOnMessageListener(LOW_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().unregisterOnMessageListener(RealTimeConstant.HIGH_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().unregisterOnMessageListener(RealTimeConstant.LOW_FREQUENCY_CHANNEL_ID, onMessageListener);
SocketManager.getInstance().release();
onMsgListenerList.clear();
mInstance = null;

View File

@@ -1,6 +1,7 @@
package com.mogo.realtime.spi;
import com.mogo.realtime.api.IRealTimeProvider;
import com.mogo.realtime.entity.DataCollectWrapper;
import java.util.List;
@@ -27,20 +28,12 @@ public class RealTimeProviderImp implements IRealTimeProvider {
mDelegate = RealTimeProviderDelegateManager.getInstance().getRealTimeProvider();
}
// @Override
// public List<ADASRecognizedResult> getLastADASRecognizedResult() { // todo 数据实体替换成PB
// if (mDelegate != null) {
// return mDelegate.getLastADASRecognizedResult();
// }
// return null;
// }
//
// @Override
// public List<CloudLocationInfo> getLocationMsg() { // todo 数据实体替换成PB
// if (mDelegate != null) {
// mDelegate.getLocationMsg();
// }
// return null;
// }
@Override
public DataCollectWrapper.DataCollectMsg getLocationMsg() {
if (mDelegate != null) {
return mDelegate.getLocationMsg();
}
return null;
}
}