diff --git a/app/src/main/java/com/mogo/cloud/LivePushActivity.java b/app/src/main/java/com/mogo/cloud/LivePushActivity.java index 8cecf36..f5d8fce 100644 --- a/app/src/main/java/com/mogo/cloud/LivePushActivity.java +++ b/app/src/main/java/com/mogo/cloud/LivePushActivity.java @@ -4,7 +4,7 @@ import android.os.Bundle; import android.util.Log; import com.mogo.cloud.live.manager.CameraFrameManager; -import com.mogo.cloud.live.manager.LiveStreamManager; +import com.mogo.cloud.live.manager.ILiveStreamManager; import com.mogo.cloud.live.manager.LiveStreamManagerImpl; import com.mogo.cloud.live.server.PushService; import com.mogo.cloud.util.Devices; @@ -23,7 +23,7 @@ public class LivePushActivity extends BaseLiveActivity { super.onCreate(savedInstanceState); // 初始化直播流管理 - LiveStreamManager liveStreamManager = LiveStreamManagerImpl.getInstance(this, Devices.getSn()); + ILiveStreamManager liveStreamManager = LiveStreamManagerImpl.getInstance(this, Devices.getSn()); liveStreamManager.uploadCamStatus(1, 1); } diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/constant/LiveConstant.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/constant/LiveConstant.java new file mode 100644 index 0000000..1fd50c2 --- /dev/null +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/constant/LiveConstant.java @@ -0,0 +1,6 @@ +package com.mogo.cloud.live.constant; + +public class LiveConstant { + + public static final String TAG = "MoGoAiCloud_Live"; +} diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManager.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/ILiveStreamManager.java similarity index 96% rename from foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManager.java rename to foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/ILiveStreamManager.java index d8a740c..7ce33e4 100644 --- a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/LiveStreamManager.java +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/ILiveStreamManager.java @@ -3,7 +3,7 @@ package com.mogo.cloud.live.manager; import com.mogo.cloud.live.listener.ILiveStatusListener; -public interface LiveStreamManager { +public interface ILiveStreamManager { /** * 开始直播 */ 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 f0040a7..712525a 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 @@ -13,16 +13,16 @@ import com.mogo.cloud.live.utils.LiveStreamUtils; * * @author donghongyu */ -public class LiveStreamManagerImpl implements LiveStreamManager { +public class LiveStreamManagerImpl implements ILiveStreamManager { private static final String TAG = "LiveStreamManagerImpl"; - private static volatile LiveStreamManager sInstance; + private static volatile ILiveStreamManager sInstance; public static volatile String mDevicesId; - private Context mContext; - private LiveStreamUtils mLiveStreamUtils; + private final Context mContext; + private final LiveStreamUtils mLiveStreamUtils; - public static LiveStreamManager getInstance(Context context, String devicesId) { + public static ILiveStreamManager getInstance(Context context, String devicesId) { if (sInstance == null) { synchronized (LiveStreamManagerImpl.class) { if (sInstance == null) { diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java new file mode 100644 index 0000000..da81f85 --- /dev/null +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/manager/RequestLiveManager.java @@ -0,0 +1,77 @@ +package com.mogo.cloud.live.manager; + +import android.app.Application; + +import com.google.gson.Gson; +import com.mogo.cloud.live.constant.LiveConstant; +import com.mogo.cloud.live.listener.ILiveProgressListener; +import com.mogo.cloud.live.model.BaseData; +import com.mogo.cloud.live.model.LivePush; +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.utils.logger.Logger; + +import java.util.HashMap; +import java.util.Map; + +import rx.Observer; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +/** + * 请求直播管理类 + */ +public class RequestLiveManager { + + private static volatile RequestLiveManager requestLiveManager; + private final LiveApiServer liveApiServer; + + private RequestLiveManager() { + liveApiServer = RetrofitFactory.INSTANCE.getInstance(NetConstants.DEVA_HOST) + .create(LiveApiServer.class); + } + + public static RequestLiveManager getInstance() { + if (requestLiveManager == null) { + synchronized (RequestLiveManager.class) { + if (requestLiveManager == null) { + requestLiveManager = new RequestLiveManager(); + } + } + } + return requestLiveManager; + } + + public void requestVehicleHeadLive(Application application, String liveSn, ILiveProgressListener liveProgressListener) { + Gson gson = new Gson(); + LivePush livePush = new LivePush(liveSn, "1", "C_1"); + String sn = MoGoAiCloudClient.getInstance().getAiCloudClientConfig().getSn(); + Map map = new HashMap<>(); + map.put("sn", sn); + map.put("type", gson.toJson(livePush)); + liveApiServer.getVehicleHeadLive(map) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + Logger.e(LiveConstant.TAG, "requestVehicleHeadLive exception : " + e); + } + + @Override + public void onNext(BaseData baseData) { + MoGoLiveManager.getInstance().init(application, null); + MoGoLiveManager.getInstance().loginRoom(sn, liveSn); + MoGoLiveManager.getInstance().setLiveProgressListener(liveProgressListener); + } + }); + } + +} diff --git a/foudations/mogo-live/src/main/java/com/mogo/cloud/live/model/LivePush.java b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/model/LivePush.java new file mode 100644 index 0000000..f97783e --- /dev/null +++ b/foudations/mogo-live/src/main/java/com/mogo/cloud/live/model/LivePush.java @@ -0,0 +1,50 @@ +package com.mogo.cloud.live.model; + +/** + * 请求直播 + */ +public class LivePush { + + private String sn; + private String type; + private String videoChannel; //C_1 前摄 + + public LivePush(String sn, String type, String videoChannel) { + this.sn = sn; + this.type = type; + this.videoChannel = videoChannel; + } + + public String getSn() { + return sn; + } + + public void setSn(String sn) { + this.sn = sn; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getVideoChannel() { + return videoChannel; + } + + public void setVideoChannel(String videoChannel) { + this.videoChannel = videoChannel; + } + + @Override + public String toString() { + return "LivePush{" + + "sn='" + sn + '\'' + + ", type='" + type + '\'' + + ", videoChannel='" + videoChannel + '\'' + + '}'; + } +} 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 4528823..692d569 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 @@ -41,7 +41,7 @@ public interface LiveApiServer { * @return {@link BaseData} */ @FormUrlEncoded - @POST("") + @POST("/dataSave/integratedServices/app/push/no/livePushAndSwitch/v1") Observable getVehicleHeadLive(@FieldMap Map vehicleHeadLiveMap); /** diff --git a/modules/mogo-trafficlive/build.gradle b/modules/mogo-trafficlive/build.gradle index cd78971..ebbd5e5 100644 --- a/modules/mogo-trafficlive/build.gradle +++ b/modules/mogo-trafficlive/build.gradle @@ -32,8 +32,10 @@ dependencies { if (Boolean.valueOf(RELEASE)) { implementation "com.mogo.cloud:network:${MOGO_NETWORK_VERSION}" + implementation "com.mogo.cloud:network:${MOGO_LIVE_VERSION}" } else { implementation project(":foudations:mogo-network") + implementation project(":foudations:mogo-live") } } diff --git a/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java b/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java index 8746ca9..4411969 100644 --- a/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java +++ b/modules/mogo-trafficlive/src/main/java/com/mogo/cloud/trafficlive/core/TrafficLiveManager.java @@ -1,10 +1,16 @@ package com.mogo.cloud.trafficlive.core; +import android.app.Application; + +import com.mogo.cloud.live.listener.ILiveProgressListener; +import com.mogo.cloud.live.manager.RequestLiveManager; import com.mogo.cloud.trafficlive.api.ITrafficLiveCallBack; -public class TrafficLiveManager { +public class TrafficLiveManager implements ILiveProgressListener { private static volatile TrafficLiveManager mInstance; + private RequestLiveManager requestLiveManager; + private ITrafficLiveCallBack callBack; private TrafficLiveManager() { } @@ -20,11 +26,49 @@ public class TrafficLiveManager { return mInstance; } - public void getVehicleHeadLiveUrl(ITrafficLiveCallBack callBack){ + public void getVehicleHeadLiveUrl(Application application, String liveSn, ITrafficLiveCallBack callBack) { + if (callBack == null) { + this.callBack = callBack; + } + requestLiveManager.requestVehicleHeadLive(application, liveSn, this); + } + + public void getIntersectionLiveUrl(ITrafficLiveCallBack callBack) { } - public void getIntersectionLiveUrl(ITrafficLiveCallBack callBack){ + @Override + public void onStart() { + + } + + @Override + public void onStop() { + + } + + @Override + public void onConnecting() { + + } + + @Override + public void onConnected(String roomId) { + + } + + @Override + public void onDisConnect() { + + } + + @Override + public void onRoomStreamUpdate(String streamId, boolean isLive) { + + } + + @Override + public void onDebugError(int errorCode, String funcName, String errorInfo) { } }