增加了直播状态向外的同步回调

This commit is contained in:
董宏宇
2021-02-09 15:43:32 +08:00
parent 945d506892
commit 0fc496c4f5
7 changed files with 68 additions and 13 deletions

View File

@@ -28,10 +28,11 @@ public abstract class BaseLiveActivity extends AppCompatActivity {
// 开始直播
protected ToggleButton btnLive;
// 保存文件到本地
private ToggleButton btnSaveFile;
protected ToggleButton btnSaveFile;
// 设置摄像头与状态
private ToggleButton btnChangeCameraState;
protected ToggleButton btnChangeCameraState;
// 当前直播的状态
protected ToggleButton tbLiveStatus;
// 相机数据预览
protected SurfaceView surfaceView;
@@ -64,6 +65,8 @@ public abstract class BaseLiveActivity extends AppCompatActivity {
toggleCameraState(isChecked);
});
tbLiveStatus = findViewById(R.id.tbLiveStatus);
initCamer();
}

View File

@@ -3,6 +3,7 @@ package com.mogo.cloud;
import android.os.Bundle;
import android.util.Log;
import com.mogo.cloud.live.listener.ILiveStatusListener;
import com.mogo.cloud.live.manager.ILiveStreamManager;
import com.mogo.cloud.live.manager.LiveStreamManagerImpl;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
@@ -22,6 +23,23 @@ public class LivePushActivity extends BaseLiveActivity {
// 初始化直播流管理
liveStreamManager = LiveStreamManagerImpl.getInstance(this,
MoGoAiCloudClientConfig.getInstance().getThirdPartyDeviceId());
liveStreamManager.setLiveStatusChangeCallback(new ILiveStatusListener() {
@Override
public void onChange(String camId, int status) {
tbLiveStatus.post(new Runnable() {
@Override
public void run() {
if (status == 0) {
tbLiveStatus.setTextColor(getResources().getColor(R.color.colorStartLive));
tbLiveStatus.setChecked(true);
} else {
tbLiveStatus.setTextColor(getResources().getColor(R.color.colorStopLive));
tbLiveStatus.setChecked(false);
}
}
});
}
});
}
@Override

View File

@@ -8,6 +8,14 @@
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ToggleButton
android:id="@+id/tbLiveStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="#FFFF"
android:padding="10dp"
android:textOff="直播已停止"
android:textOn="直播进行中" />
<LinearLayout
android:id="@+id/flTestPanel"

View File

@@ -3,4 +3,6 @@
<color name="colorPrimary">#6200EE</color>
<color name="colorPrimaryDark">#3700B3</color>
<color name="colorAccent">#03DAC5</color>
<color name="colorStartLive">#4CAF50</color>
<color name="colorStopLive">#F44336</color>
</resources>

View File

@@ -1,6 +1,8 @@
package com.mogo.cloud.live.manager;
import com.mogo.cloud.live.listener.ILiveStatusListener;
public interface ILiveStreamManager {
/**
* 开始直播
@@ -35,6 +37,12 @@ public interface ILiveStreamManager {
*/
void notifyYUVData(byte[] data, int width, int height, int type);
/**
* 直播状态改变时回调
* @param changeCallback live status change callback
*/
void setLiveStatusChangeCallback(ILiveStatusListener changeCallback);
/**
* 释放资源
*/

View File

@@ -5,6 +5,7 @@ import android.os.Handler;
import android.os.SystemClock;
import android.util.Log;
import com.mogo.cloud.live.listener.ILiveStatusListener;
import com.mogo.cloud.live.model.CommandModel;
import com.mogo.cloud.live.server.PushService;
import com.mogo.cloud.live.socket.SocketMsgUtils;
@@ -38,6 +39,8 @@ public class LiveStreamManagerImpl implements ILiveStreamManager {
private static final String C2 = "C_2"; //后置摄像头
private Handler mHandler; // 循环上报摄像头状态
private SocketMsgUtils mSocketMsgUtils; // Socket 长链接
private ILiveStatusListener mLiveStatusCallback;// 直播状态回调
public static ILiveStreamManager getInstance(Context context, String devicesId) {
if (sInstance == null) {
@@ -66,7 +69,6 @@ public class LiveStreamManagerImpl implements ILiveStreamManager {
@Override
public void onMsgReceived(CommandModel obj) {
Log.i(TAG, "onMsgReceived: obj=" + obj);
Logger.i(TAG, "onMsgReceived: obj=" + obj + " systemClock :" + SystemClock.elapsedRealtime() + " SystemTime : " + System.currentTimeMillis());
livePushHandler(obj.getType(), obj.getVideoChannel());
}
@@ -112,6 +114,11 @@ public class LiveStreamManagerImpl implements ILiveStreamManager {
CameraFrameManager.getInstance().notifyYUVData(data, width, height, type);
}
@Override
public void setLiveStatusChangeCallback(ILiveStatusListener changeCallback) {
this.mLiveStatusCallback = changeCallback;
}
@Override
public void release() {
try {
@@ -123,6 +130,12 @@ public class LiveStreamManagerImpl implements ILiveStreamManager {
}
}
private void liveStatusCallbackOnChange(String camId, int status) {
if (mLiveStatusCallback != null) {
mLiveStatusCallback.onChange(camId, status);
}
}
/**
* 开启摄像头状态循环
*/
@@ -169,7 +182,10 @@ public class LiveStreamManagerImpl implements ILiveStreamManager {
PushService.startService(mContext, PushService.ACTION_FORCED_STOP_RTMP_PUSH,
LiveStreamManagerImpl.mDevicesId);
}
// 记录直播状态
sCam1LiveStatus = status;
// 向外同步状态
liveStatusCallbackOnChange(C1, sCam1LiveStatus);
} else {
Log.d(TAG, "目前只支持前置行车记录仪");
}

View File

@@ -29,12 +29,12 @@ PASSWORD=xintai2018
# 编译模式: false - 依赖本地版本, true - 依赖 maven 版本
RELEASE=true
# AI CLOUD 云平台
MOGO_UTILS_VERSION=1.0.13-SNAPSHOT
MOGO_NETWORK_VERSION=1.0.13-SNAPSHOT
MOGO_HTTPDNS_VERSION=1.0.13-SNAPSHOT
MOGO_PASSPORT_VERSION=1.0.13-SNAPSHOT
MOGO_SOCKET_VERSION=1.0.13-SNAPSHOT
MOGO_REALTIME_VERSION=1.0.13-SNAPSHOT
MOGO_TANLU_VERSION=1.0.13-SNAPSHOT
MOGO_LIVE_VERSION=1.0.13-SNAPSHOT
MOGO_TRAFFICLIVE_VERSION=1.0.13-SNAPSHOT
MOGO_UTILS_VERSION=1.0.14-SNAPSHOT
MOGO_NETWORK_VERSION=1.0.14-SNAPSHOT
MOGO_HTTPDNS_VERSION=1.0.14-SNAPSHOT
MOGO_PASSPORT_VERSION=1.0.14-SNAPSHOT
MOGO_SOCKET_VERSION=1.0.14-SNAPSHOT
MOGO_REALTIME_VERSION=1.0.14-SNAPSHOT
MOGO_TANLU_VERSION=1.0.14-SNAPSHOT
MOGO_LIVE_VERSION=1.0.14-SNAPSHOT
MOGO_TRAFFICLIVE_VERSION=1.0.14-SNAPSHOT