diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 88ea3aa..3cc336b 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,6 +1,22 @@ + + diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/CameraStatusManager.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/CameraStatusManager.java new file mode 100644 index 0000000..2499a24 --- /dev/null +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/CameraStatusManager.java @@ -0,0 +1,103 @@ +package com.mogo.cloud.live.manager; + +import com.google.gson.Gson; +import com.mogo.cloud.GsonUtil; +import com.mogo.cloud.live.model.BaseData; +import com.mogo.cloud.live.model.CameraStatusModel; +import com.mogo.cloud.live.network.LiveApiServer; +import com.mogo.cloud.network.NetConstants; +import com.mogo.cloud.network.RetrofitFactory; +import com.mogo.cloud.passport.MoGoAiCloudClient; +import com.mogo.cloud.utils.logger.Logger; + +import java.util.HashMap; +import java.util.Map; + +import io.reactivex.Observer; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.Disposable; +import io.reactivex.schedulers.Schedulers; +import okhttp3.MediaType; +import okhttp3.RequestBody; + + +/** + * 摄像头状态管理 + */ +public class CameraStatusManager { + private final String TAG = "CameraStatusManager"; + + private static volatile CameraStatusManager requestLiveManager; + private final LiveApiServer liveApiServer; + + private CameraStatusManager() { + liveApiServer = RetrofitFactory.INSTANCE.getInstance(NetConstants.TECH_HOST) //todo 涉及摄像头状态管理接口 没有对HttpDNS进行配置 + .create(LiveApiServer.class); + } + + public static CameraStatusManager getInstance() { + if (requestLiveManager == null) { + synchronized (CameraStatusManager.class) { + if (requestLiveManager == null) { + requestLiveManager = new CameraStatusManager(); + } + } + } + return requestLiveManager; + } + + /** + * 上传当前车机摄像头状态 + * + * @param c_1 前置 + * @param c_2 后置 + */ + public void reportCameraStatus(int c_1, int c_2) { + try { + String sn = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn(); + + CameraStatusModel cameraStatusModel = new CameraStatusModel(); + CameraStatusModel.CameraStatus cameraStatus = new CameraStatusModel.CameraStatus(); + cameraStatus.setC_1(c_1); + cameraStatus.setC_2(c_2); + + cameraStatusModel.setSn(sn); + cameraStatusModel.setCaller("AiSDK"); + cameraStatusModel.setSdkVersion("1.0.1"); + cameraStatusModel.setCameraStatus(cameraStatus); + + RequestBody requestBody = RequestBody.create( MediaType.get( "application/json;charset=UTF-8" ), GsonUtil.jsonFromObject( cameraStatusModel ) ); + + + liveApiServer.reportCameraStatus(requestBody) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Logger.d(TAG, "上传摄像头状态 onSubscribe"); + } + + @Override + public void onNext(@NonNull BaseData baseData) { + Logger.d(TAG, "上传摄像头状态 onNext"); + } + + @Override + public void onError(@NonNull Throwable e) { + Logger.e(TAG, "上传摄像头状态 onError"); + } + + @Override + public void onComplete() { + Logger.d(TAG, "上传摄像头状态 onComplete"); + } + }); + } catch (Exception e) { + e.printStackTrace(); + } + } + + +} diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java index 5368389..faef522 100644 --- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManagerImpl.java @@ -40,6 +40,8 @@ public class LiveStreamManagerImpl implements ILiveStreamManager { private final SocketMsgUtils mSocketMsgUtils; // Socket 长链接 private MoGoLiveManager mLivePusher; // 自研直播SDK + private CameraStatusManager cameraStatusManager; + public static LiveStreamManagerImpl getInstance(Application application, String devicesId) { if (sInstance == null) { synchronized (LiveStreamManagerImpl.class) { @@ -56,6 +58,7 @@ public class LiveStreamManagerImpl implements ILiveStreamManager { private LiveStreamManagerImpl(Application application, String devicesId) { mApplication = application; mHandler = new Handler(); + cameraStatusManager = CameraStatusManager.getInstance(); // 初始化直播推流 initLivePush(devicesId); // 初始化Socket长连接通道 @@ -133,6 +136,8 @@ public class LiveStreamManagerImpl implements ILiveStreamManager { msgBody.content(SocketRequestUtils.buildDeviceData(frontStatus, backStatus)); mSocketMsgUtils.uploadCamInfo(msgBody); + + cameraStatusManager.reportCameraStatus(frontStatus, backStatus); } @Override diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/model/CameraStatusModel.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/model/CameraStatusModel.java new file mode 100644 index 0000000..6968d75 --- /dev/null +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/model/CameraStatusModel.java @@ -0,0 +1,78 @@ +package com.mogo.cloud.live.model; + +/** + * @author donghongyu + * @date 4/25/21 11:31 AM + * { + * "caller": "AiSDK", + * "cameraStatus": { + * "C_1": 1, + * "C_2": 2 + * }, + * "sdkVersion": "2.0.10", + * "sn": "F803EB2046PZD00149" + * } + */ +public class CameraStatusModel { + + private String sn; + private String caller; + private String sdkVersion; + private CameraStatus cameraStatus; + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public String getCaller() { + return caller; + } + + public void setCaller(String caller) { + this.caller = caller; + } + + public String getSdkVersion() { + return sdkVersion; + } + + public void setSdkVersion(String sdkVersion) { + this.sdkVersion = sdkVersion; + } + + public CameraStatus getCameraStatus() { + return cameraStatus; + } + + public void setCameraStatus(CameraStatus cameraStatus) { + this.cameraStatus = cameraStatus; + } + + public static class CameraStatus{ + public int C_1;//前置 + public int C_2;//后置 + + public int getC_1() { + return C_1; + } + + public void setC_1(int c_1) { + C_1 = c_1; + } + + public int getC_2() { + return C_2; + } + + public void setC_2(int c_2) { + C_2 = c_2; + } + } + + + +} diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/network/LiveApiServer.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/network/LiveApiServer.java index 8a942b1..fb66c7f 100644 --- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/network/LiveApiServer.java +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/network/LiveApiServer.java @@ -1,17 +1,19 @@ package com.mogo.cloud.live.network; import com.mogo.cloud.live.model.BaseData; +import com.mogo.cloud.live.model.CameraStatusModel; import com.mogo.cloud.live.model.LiveReceive; import java.util.Map; import io.reactivex.Observable; -import retrofit2.http.Field; +import okhttp3.RequestBody; +import retrofit2.http.Body; import retrofit2.http.FieldMap; import retrofit2.http.FormUrlEncoded; import retrofit2.http.GET; +import retrofit2.http.Headers; import retrofit2.http.POST; -import retrofit2.http.Query; import retrofit2.http.QueryMap; /** @@ -55,4 +57,12 @@ public interface LiveApiServer { */ @GET("mec-etl-server/device/unit/camera/live") Observable> getDesignativeIntersectionLive(@QueryMap Map parameters); + + /** + * 上传摄像头状态 + * + * @return {@link BaseData} + */ + @POST("alarm/car/video/reportCameraStatus") + Observable reportCameraStatus(@Body RequestBody parameters); } diff --git a/foudations/mogo-network/src/main/java/com/mogo/cloud/network/NetConstants.kt b/foudations/mogo-network/src/main/java/com/mogo/cloud/network/NetConstants.kt index 8e8c318..f26041f 100644 --- a/foudations/mogo-network/src/main/java/com/mogo/cloud/network/NetConstants.kt +++ b/foudations/mogo-network/src/main/java/com/mogo/cloud/network/NetConstants.kt @@ -24,6 +24,9 @@ class NetConstants { const val TRAVEL_CONDITION_HOST = "http://dzt-travelCondition.zhidaozhixing.com" const val TMC_HOST = "http://dzt-tmcServer.zhidaozhixing.com" + const val TECH_HOST = "http://tech-dev.zhidaozhixing.com" + + const val IM_SOCKET_DOMAIN = "dzt-im.zhidaozhixing.com" const val WEBSOCKET_DOMAIN = "dzt-Instant.zhidaozhixing.com" } diff --git a/gradle.properties b/gradle.properties index e78ae31..499dbc5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -27,7 +27,7 @@ SNAPSHOT_REPOSITORY_URL=http://nexus.zhidaoauto.com/repository/maven-snapshots/ USERNAME=xintai PASSWORD=xintai2018 # 编译模式: false - 依赖本地版本, true - 依赖 maven 版本 -RELEASE=true +RELEASE=false # AI CLOUD 云平台 # 工具类 MOGO_UTILS_VERSION=1.0.71