Files
MoGoAiCloudSdk/app/src/main/java/com/mogo/cloud/LivePlayAndPushActivity.java

141 lines
4.6 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.LiveStreamManagerImpl;
import com.mogo.cloud.passport.MoGoAiCloudClientConfig;
import com.mogo.cloud.trafficlive.api.ITrafficCarLiveCallBack;
import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive;
import com.mogo.cloud.utils.logger.Logger;
import com.mogo.cloud.wifi.IWifiStateListener;
/**
* 推流和拉流页面
*/
public class LivePlayAndPushActivity extends BaseLiveActivity
implements ITrafficCarLiveCallBack, IWifiStateListener {
public static final String TAG = "LivePlayAndPushActivity";
private String liveSn;
LiveStreamManagerImpl liveStreamManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// WifiStateManager.getInstance().registerWifiStateListener(this);
// 初始化直播流管理
liveStreamManager = LiveStreamManagerImpl.getInstance(this.getApplication(),
MoGoAiCloudClientConfig.getInstance().getSn());
// 设置状态回调
liveStreamManager.setLiveStatusChangeCallback(new ILiveStatusListener() {
@Override
public void onChange(int status) {
tvLiveStatus.post(new Runnable() {
@Override
public void run() {
if (status == 0) {
tvLiveStatus.setTextColor(getResources().getColor(R.color.colorStartLive));
tvLiveStatus.setText("正在直播中");
} else if (status == 1) {
tvLiveStatus.setTextColor(getResources().getColor(R.color.colorStopLive));
tvLiveStatus.setText("直播已停止");
} else if (status == 2) {
tvLiveStatus.setTextColor(getResources().getColor(R.color.colorForcedStopLive));
tvLiveStatus.setText("直播强制结束");
}
}
});
}
});
}
@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) {
if (isLive) {
liveStreamManager.startLiveStream();
} else {
liveStreamManager.stopLiveStream();
}
}
@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.viewDesignativeVehicleLive(liveSn, surfacePlayView, this);
} else {
MoGoAiCloudTrafficLive.stopCarLive(liveSn);
}
}
@Override
public void toggleLoginMultiRoom(boolean isLogin) {
if (isLogin) {
liveSn = etLookRoomId.getText().toString().trim();
liveStreamManager.getLivePusher().loginMultiRoom(liveSn);
} else {
liveStreamManager.getLivePusher().logoutMultiRoom();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (liveStreamManager != null) {
// 停止
liveStreamManager.stopLiveStream();
// 释放资源
liveStreamManager.release();
}
MoGoAiCloudTrafficLive.stopCarLive(liveSn);
// WifiStateManager.getInstance().unRegisterWifiStateListener(this);
}
@Override
public void onLive(String liveSn) {
Logger.d(TAG, "开始直播 onLive");
}
@Override
public void onDisConnect() {
Logger.d(TAG, "失去连接 onDisConnect");
}
@Override
public void onError(String errorMsg) {
Logger.d(TAG, "发生错误 onError msg: " + errorMsg);
}
@Override
public void onWifiState(WifiInfo wifiInfo) {
tvWifiState.setText("wifiLevel: " + Math.abs(wifiInfo.getRssi()));
}
}