加入了多房间登录操作来解决同一设备推流同时拉流

This commit is contained in:
董宏宇
2021-03-02 18:30:44 +08:00
parent 5e5980886d
commit c7b610efc8
13 changed files with 429 additions and 119 deletions

View File

@@ -0,0 +1,126 @@
package com.mogo.cloud;
import android.net.wifi.WifiInfo;
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;
import com.mogo.cloud.trafficlive.api.ITrafficLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.cloud.wifi.IWifiStateListener;
import com.mogo.cloud.wifi.WifiStateManager;
/**
* 推流和拉流页面
*/
public class LivePlayAndPushActivity extends BaseLiveActivity implements ITrafficLiveCallBack, IWifiStateListener {
public static final String TAG = "PushActivity";
private String liveSn;
ILiveStreamManager liveStreamManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WifiStateManager.getInstance().registerWifiStateListener(this);
// 初始化直播流管理
liveStreamManager = LiveStreamManagerImpl.getInstance(this.getApplication(),
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
public void onVideoFrame(byte[] bytes, int bytesLength) {
//Log.i(TAG, "onVideoFrame byte length: " + bytesLength);
if (liveStreamManager != null) {
// 将摄像头采集的YUV数据推送到ZEGO
liveStreamManager.notifyYUVData(bytes, 1280, 720, 3);
}
}
@Override
public void toggleLive(boolean isLive) {
}
@Override
public void toggleCameraState(boolean isLive) {
Log.i(TAG, "toggleCameraState isLive: " + isLive);
if (isLive) {
// 上报摄像头状态1-可用2-不可用
liveStreamManager.uploadCamStatus(1, 1);
} else {
liveStreamManager.uploadCamStatus(2, 2);
}
}
@Override
public void togglePlay(boolean isPlay) {
if (isPlay) {
liveSn = etLookRoomId.getText().toString().trim();
MoGoAiCloudTrafficLive.viewVehicleHeadLive(this.getApplication(),
liveSn, surfacePlayView, this);
} else {
MoGoAiCloudTrafficLive.stopLive(liveSn);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (liveStreamManager != null) {
// 停止
liveStreamManager.stopLiveStream();
// 释放资源
liveStreamManager.release();
}
MoGoAiCloudTrafficLive.stopLive(liveSn);
MoGoAiCloudTrafficLive.destroyLive();
WifiStateManager.getInstance().unRegisterWifiStateListener(this);
}
@Override
public void onLive() {
Log.d(TAG, "开始直播 onLive");
}
@Override
public void onDisConnect() {
Log.d(TAG, "失去连接 onDisConnect");
}
@Override
public void onError(String errorMsg) {
Log.d(TAG, "发生错误 onError msg: " + errorMsg);
}
@Override
public void onWifiState(WifiInfo wifiInfo) {
tvWifiState.setText("wifiLevel: " + Math.abs(wifiInfo.getRssi()));
}
}