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())); } }