MD5 校验值:1036132062d4d223cd1a714f5bbea98b
AliRtcEngineImpl.java 文件包含反编译后的源代码,请注意,该内容仅供学习和参考使用,不得用于非法用途。
package com.alivc.rtc; import android.app.Application; import android.content.Context; import android.os.Build; import android.os.Handler; import android.os.Looper; import android.text.TextUtils; import android.util.Log; import com.alivc.rtc.AliRtcEngine; import com.alivc.rtc.AppFrontBackHelper; import com.king.zxing.util.LogUtils; import com.ut.device.UTDevice; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.Map; import org.json.JSONObject; import org.webrtc.ali.ContextUtils; import org.webrtc.ali.USBMediaDevice; import org.webrtc.ali.voiceengine.WebRtcAudioUtils; import org.webrtc.alirtcInterface.ALI_RTC_INTERFACE; import org.webrtc.alirtcInterface.AliParticipantInfo; import org.webrtc.alirtcInterface.AliStatusInfo; import org.webrtc.alirtcInterface.AliSubscriberInfo; import org.webrtc.alirtcInterface.AliUnPublisherInfo; import org.webrtc.alirtcInterface.CollectStatusListener; import org.webrtc.alirtcInterface.ErrorCodes; import org.webrtc.alirtcInterface.PublisherInfo; import org.webrtc.alirtcInterface.SophonEngine; import org.webrtc.alirtcInterface.SophonEventListener; import org.webrtc.audio.AppRTCAudioManager; import org.webrtc.sdk.SophonSurfaceView; import org.webrtc.utils.AlivcLog; public class AliRtcEngineImpl extends AliRtcEngine implements USBMediaDevice.USBMediaDeviceEvent { private static final String FAKE_SESSION = "123456ALIBABAFAKESESSIONID"; private static final int SDK_RESULT_PUBLISH_ALREADY_EXIST = 16974594; private static final String TAG = "AliRTCEngine"; private static String VERSION = ""; private static ArrayList<AliRtcEngine.AliRtcRemoteTextureInfo> aliRtcRemoteTextureInfos = new ArrayList<>(); private AlbumOrientationEventListener mAlbumOrientationEventListener; private AliRtcConfig mAliRtcConfig; private volatile boolean mApiPass; private AppFrontBackHelper mAppFrontBackHelper; private Context mContext; private boolean mDetectedUsbDevice; private AliRtcEngineEventListener mEventListener; private String mExtras; private final Object mLock; private AliRtcEngineNotify mNotifyListener; private ProcessCpuTracker mProcessCpuTracker; private SophonEngine mSophonEngine; private SophonEventListener mSophonEventListener; private boolean mUsbCameraStatus; private AliRtcUsbDeviceEvent mUsbDeviceEvent; private Handler mainHandler; static { System.loadLibrary("wukong_ua"); } @Override public int onUSBDeviceConnect() { try { this.mUsbCameraStatus = true; if (this.mSophonEngine == null) { this.mSophonEngine = SophonEngine.create(this.mContext.getApplicationContext(), this.mExtras, this.mSophonEventListener); } } catch (Exception ex) { ex.printStackTrace(); } if (this.mUsbDeviceEvent != null) { AlivcLog.i(TAG, "[API][Callback]onUSBDeviceConnect:ret:0"); this.mUsbDeviceEvent.onUSBDeviceConnect(0); AlivcLog.i(TAG, "[API][End][Callback]onUSBDeviceConnect"); } return 0; } @Override public void onUSBDeviceDisconnect() { if (this.mUsbDeviceEvent != null) { AlivcLog.i(TAG, "[API][Callback]onUSBDeviceDisconnect"); this.mUsbDeviceEvent.onUSBDeviceDisconnect(); AlivcLog.i(TAG, "[API][End][Callback]onUSBDeviceDisconnect"); } } @Override public void onUSBDeviceCancel() { try { if (this.mSophonEngine == null) { this.mSophonEngine = SophonEngine.create(this.mContext.getApplicationContext(), this.mExtras, this.mSophonEventListener); } } catch (Exception ex) { ex.printStackTrace(); } if (this.mUsbDeviceEvent != null) { AlivcLog.i(TAG, "[API][Callback]onUSBDeviceCancel"); this.mUsbDeviceEvent.onUSBDeviceCancel(); AlivcLog.i(TAG, "[API][End][Callback]onUSBDeviceCancel"); } } @Override public void setUsbDeviceEvent(AliRtcUsbDeviceEvent usbDeviceEvent) { if (usbDeviceEvent != null) { AlivcLog.i(TAG, "[API]setUsbDeviceEvent:" + usbDeviceEvent); this.mUsbDeviceEvent = usbDeviceEvent; AlivcLog.i(TAG, "[API][End]setUsbDeviceEvent"); } } @Override public AliRtcUsbDeviceEvent getUsbDeviceEvent() { AlivcLog.i(TAG, "[API]getUsbDeviceEvent"); return this.mUsbDeviceEvent; } @Override public boolean isUsbDeviceDetected() { AlivcLog.i(TAG, "[API]isUsbDeviceDetected"); return this.mDetectedUsbDevice; } public AliRtcEngineImpl(Context context, String extras) { this.mAliRtcConfig = new AliRtcConfig(); this.mainHandler = new Handler(Looper.getMainLooper()); this.mLock = new Object(); this.mExtras = ""; this.mUsbCameraStatus = false; this.mDetectedUsbDevice = false; this.mApiPass = true; this.mSophonEventListener = new SophonEventListener() { @Override public void onGslbResult(int result) { super.onGslbResult(result); } @Override public void onJoinChannelResult(int result) { super.onJoinChannelResult(result); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setInCall(true); if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoPublish()) { AliRtcEngineImpl.this.publish(); } } else { AliRtcEngineImpl.this.mAliRtcConfig.setInCall(false); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onJoinChannelResult:result:" + result); AliRtcEngineImpl.this.mEventListener.onJoinChannelResult(result); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onJoinChannelResult"); } } @Override public void onLeaveChannelResult(int result) { super.onLeaveChannelResult(result); synchronized (AliRtcEngineImpl.this.mLock) { AliRtcEngineImpl.this.mLock.notify(); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onLeaveChannelResult:result:" + result); AliRtcEngineImpl.this.mAliRtcConfig.setPublishIsGoing(false); AliRtcEngineImpl.this.mEventListener.onLeaveChannelResult(result); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onLeaveChannelResult"); } if (result != ErrorCodes.SDK_RESULT_WRONG_STATE_ERROR) { AlivcLog.uploadChannelLog(); } } @Override public void onPublishResult(int result, String callId) { super.onPublishResult(result, callId); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(callId, true); AliRtcEngineImpl.this.mAliRtcConfig.setPublishIsGoing(false); if (AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalMic()) { AliRtcEngineImpl.this.muteLocalMic(true); } if (!AliRtcEngineImpl.this.mAliRtcConfig.isAudioOnly() && AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalCameraVideo()) { AliRtcEngineImpl.this.muteLocalCamera(true, AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera); } AliRtcEngineImpl.this.mainHandler.post(new Runnable() { @Override public void run() { AliRtcEngineImpl.this.enableSpeakerphone(AliRtcEngineImpl.this.mAliRtcConfig.isSpeakerOn()); } }); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onPublishResult:result:" + result + "&&callId" + callId); AliRtcEngineImpl.this.mEventListener.onPublishResult(result, callId); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onPublishResult"); } } @Override public void onRepublishResult(int result, String callId) { super.onRepublishResult(result, callId); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(callId, true); if (AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalMic()) { AliRtcEngineImpl.this.muteLocalMic(true); } if (!AliRtcEngineImpl.this.mAliRtcConfig.isAudioOnly() && AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalCameraVideo()) { AliRtcEngineImpl.this.muteLocalCamera(true, AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera); } AliRtcEngineImpl.this.mainHandler.post(new Runnable() { @Override public void run() { AliRtcEngineImpl.this.enableSpeakerphone(AliRtcEngineImpl.this.mAliRtcConfig.isSpeakerOn()); } }); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onPublishResult:result:" + result + "&&callId" + callId); AliRtcEngineImpl.this.mEventListener.onPublishResult(result, callId); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onPublishResult"); } } @Override public void onUnpublishResult(int result, String callId) { super.onUnpublishResult(result, callId); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(null, true); } else { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(AliRtcEngineImpl.this.mAliRtcConfig.getTmpLocalCallID()); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onUnpublishResult:result:" + result + "&&callId" + callId); AliRtcEngineImpl.this.mEventListener.onUnpublishResult(result); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onUnpublishResult"); } } @Override public void onSubscribeResult(int result, String callId) { super.onSubscribeResult(result, callId); } @Override public void onResubscribeResult(int result, String callId) { super.onResubscribeResult(result, callId); } @Override public void onUnsubscribeResult(int result, String callId) { super.onUnsubscribeResult(result, callId); RemoteParticipant remoteParticipant = AliRtcEngineImpl.this.findParticipantByCallID(callId); if (remoteParticipant != null) { int count = remoteParticipant.getVideoSubscribed().length; for (int i = 0; i < count; i++) { AliRtcEngineImpl.this.removeRemoteDisplayWindow(callId, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i]); } remoteParticipant.clearSubedStatus(); } if (AliRtcEngineImpl.this.mEventListener != null && remoteParticipant != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onUnsubscribeResult:result:" + result + "&&userId" + remoteParticipant.getUserID()); AliRtcEngineImpl.this.mEventListener.onUnsubscribeResult(result, remoteParticipant.getUserID()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onUnsubscribeResult"); } } @Override public void onParticipantJoinNotify(AliParticipantInfo[] participantList, int feedCount) { RemoteParticipant remoteParticipant; super.onParticipantJoinNotify(participantList, feedCount); for (AliParticipantInfo info : participantList) { if (AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().containsKey(info.getUser_id())) { remoteParticipant = AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().get(info.getUser_id()); } else { remoteParticipant = new RemoteParticipant(); remoteParticipant.clearAll(); if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoSubscribe()) { AliRtcEngineImpl.this.configRemoteParticipantDefaultValues(remoteParticipant); } AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().put(info.getUser_id(), remoteParticipant); } remoteParticipant.setUserID(info.getUser_id()); remoteParticipant.setSessionID(info.getSession()); remoteParticipant.setDisplayName(info.getUser_name()); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteUserOnLineNotify:userId:" + info.getUser_id()); AliRtcEngineImpl.this.mNotifyListener.onRemoteUserOnLineNotify(info.getUser_id()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteUserOnLineNotify"); } } } @Override public void onParticipantLeaveNotify(AliParticipantInfo[] participantList, int feedCount) { super.onParticipantLeaveNotify(participantList, feedCount); for (int i = 0; i < feedCount; i++) { AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().remove(participantList[i].getUser_id()); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteUserOffLineNotify:uid:" + participantList[i].getUser_id()); AliRtcEngineImpl.this.mNotifyListener.onRemoteUserOffLineNotify(participantList[i].getUser_id()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteUserOffLineNotify"); } } } @Override public void onParticipantPublishNotify(PublisherInfo[] publisherList, int publisherCount) { RemoteParticipant remoteParticipant; super.onParticipantPublishNotify(publisherList, publisherCount); AlivcLog.i(AliRtcEngineImpl.TAG, "onPublishNotify count: " + publisherCount); for (PublisherInfo info : publisherList) { if (AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().containsKey(info.getUser_id())) { remoteParticipant = AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().get(info.getUser_id()); } else { remoteParticipant = new RemoteParticipant(); remoteParticipant.clearAll(); if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoSubscribe()) { AliRtcEngineImpl.this.configRemoteParticipantDefaultValues(remoteParticipant); } AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().put(info.getUser_id(), remoteParticipant); } remoteParticipant.setCallID(info.getCall_id()); remoteParticipant.setUserID(info.getUser_id()); remoteParticipant.setSessionID(TextUtils.isEmpty(info.getSession()) ? AliRtcEngineImpl.FAKE_SESSION : info.getSession()); remoteParticipant.setDisplayName(info.getDisplay()); remoteParticipant.setStreamLabel(info.getStream_label()); remoteParticipant.setAudioTrackLabel(info.getAudio_track_label()); remoteParticipant.setVideoTrackLabels(info.getVideo_track_labels()); if (TextUtils.isEmpty(info.getCall_id())) { AlivcLog.e(AliRtcEngineImpl.TAG, "onParticipantPublishNotify callid is null, uid = " + info.getUser_id()); } else { AliRtcEngineImpl.this.mAliRtcConfig.getRemotePublishParticipants().put(info.getCall_id(), remoteParticipant); } AliRtcEngineImpl.this.removeRemoteNullTracksDisplayWindow(info.getCall_id(), info.video_track_labels); if (AliRtcEngineImpl.this.mNotifyListener != null) { AliRtcEngine.AliRtcAudioTrack at = RemoteParticipant.getAudioTrack(info.getAudio_track_label()); AliRtcEngine.AliRtcVideoTrack vt = RemoteParticipant.getVideoTrack(info.getVideo_track_labels()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteTrackAvailableNotify:userid: " + remoteParticipant.getUserID() + "&&audioTrack: " + at + "&&videoTrack: " + vt); AliRtcEngineImpl.this.mNotifyListener.onRemoteTrackAvailableNotify(remoteParticipant.getUserID(), at, vt); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteTrackAvailableNotify"); } if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoSubscribe()) { AliRtcEngineImpl.this.configRemoteAudio(remoteParticipant.getUserID(), remoteParticipant.isUcAudeoSubed()); AliRtcEngineImpl.this.configRemoteCameraTrack(remoteParticipant.getUserID(), remoteParticipant.isUcVideoSubedMaster(), remoteParticipant.isUcVideoSubed()); AliRtcEngineImpl.this.configRemoteScreenTrack(remoteParticipant.getUserID(), remoteParticipant.isUcScreenSubed()); AliRtcEngineImpl.this.subscribe(remoteParticipant.getUserID()); } } } @Override public void onParticipantUnpublishNotify(AliUnPublisherInfo[] unpublisherList, int feedCount) { super.onParticipantUnpublishNotify(unpublisherList, feedCount); AlivcLog.i(AliRtcEngineImpl.TAG, "onParticipantUnpublishNotify count: " + feedCount); if (unpublisherList == null) { AlivcLog.e(AliRtcEngineImpl.TAG, "onParticipantUnpublishNotify unpublisherList is null "); return; } for (int i = 0; i < feedCount; i++) { RemoteParticipant remoteParticipant = null; if (i < unpublisherList.length && unpublisherList[i] != null && AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().containsKey(unpublisherList[i].getUser_id())) { remoteParticipant = AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().get(unpublisherList[i].getUser_id()); } if (remoteParticipant != null) { int count = remoteParticipant.getVideoTrackLabels().length; for (int j = 0; j < count; j++) { AliRtcEngineImpl.this.removeRemoteDisplayWindow(remoteParticipant.getCallID(), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[j]); } remoteParticipant.clearStreams(); remoteParticipant.setFirstSubscribe(true); if (unpublisherList[i] != null && !TextUtils.isEmpty(unpublisherList[i].getCall_id())) { AliRtcEngineImpl.this.mAliRtcConfig.getRemotePublishParticipants().remove(unpublisherList[i].getCall_id()); } else { AlivcLog.i(AliRtcEngineImpl.TAG, "onParticipantUnpublishNotify callid is null"); } } if (AliRtcEngineImpl.this.mNotifyListener != null && remoteParticipant != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteUserUnPublish:rtcEngine" + AliRtcEngineImpl.this + "userid: " + remoteParticipant.getUserID()); AliRtcEngineImpl.this.mNotifyListener.onRemoteUserUnPublish(AliRtcEngineImpl.this, remoteParticipant.getUserID()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteUserUnPublish"); } } } @Override public void onParticipantSubscribeNotify(AliSubscriberInfo[] subcribeinfoList, int feedCount) { super.onParticipantSubscribeNotify(subcribeinfoList, feedCount); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onParticipantSubscribeNotify:AliSubscriberInfo" + subcribeinfoList[0].user_id + "feedCount: " + feedCount); AliRtcEngineImpl.this.mNotifyListener.onParticipantSubscribeNotify(subcribeinfoList, feedCount); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onParticipantSubscribeNotify"); } } @Override public void onParticipantUnsubscribeNotify(AliParticipantInfo[] participantList, int feedCount) { super.onParticipantUnsubscribeNotify(participantList, feedCount); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onParticipantUnsubscribeNotify:AliParticipantInfo" + participantList[0].user_id + "feedCount: " + feedCount); AliRtcEngineImpl.this.mNotifyListener.onParticipantUnsubscribeNotify(participantList, feedCount); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onParticipantUnsubscribeNotify"); } } @Override public void onParticipantStatusNotify(AliStatusInfo[] status_info_list, int count) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onParticipantUnsubscribeNotify:AliStatusInfo" + status_info_list[0].user_id + "&&count: " + count); AliRtcEngineImpl.this.mNotifyListener.onParticipantStatusNotify(status_info_list, count); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onParticipantUnsubscribeNotify"); } } @Override public void onAliRtcStats(ALI_RTC_INTERFACE.AliRtcStats aliRtcStats) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onAliRtcStats:AliRtcStats:" + aliRtcStats.toString()); if (AliRtcEngineImpl.this.mProcessCpuTracker != null) { AliRtcEngineImpl.this.mProcessCpuTracker.updateCpuUsages(AliRtcEngineImpl.this.mContext.getApplicationContext()); aliRtcStats.setCpu_usage(AliRtcEngineImpl.this.mProcessCpuTracker.getMyPicCpuPercent()); aliRtcStats.setSystem_cpu_usage(AliRtcEngineImpl.this.mProcessCpuTracker.getTotalSysCpuPercent()); } AliRtcEngineImpl.this.mNotifyListener.onAliRtcStats(aliRtcStats); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onAliRtcStats:"); } } @Override public void onSubscribeResult2(int result, String callID, ALI_RTC_INTERFACE.AliSubscribeConfig reqConfig, ALI_RTC_INTERFACE.AliSubscribeConfig curConfig) { super.onSubscribeResult2(result, callID, reqConfig, curConfig); AlivcLog.i(AliRtcEngineImpl.TAG, "onSubscribeResult2 result: " + result + " callID: " + callID + "reqConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(reqConfig) + "curConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(curConfig)); RemoteParticipant remoteParticipant = AliRtcEngineImpl.this.findParticipantByCallID(callID); if (remoteParticipant == null) { return; } if (result == 0) { int count = curConfig.video_track_labels.length; for (int i = 0; i < count; i++) { if (!TextUtils.isEmpty(curConfig.video_track_labels[i])) { AliRtcEngineImpl.this.addRemoteDisplayWindow(callID, remoteParticipant.getVideoCanvas(i), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i]); } } remoteParticipant.setAudioSubscribed(curConfig.audio_track_label); remoteParticipant.setVideoSubscribed(curConfig.video_track_labels); remoteParticipant.setVideoSubscribedCached(curConfig.video_track_labels); remoteParticipant.setFirstSubscribe(false); AliRtcEngineImpl.this.mSophonEngine.enableRemoteAudio(callID, !remoteParticipant.isMuteAudioPlaying()); } if (AliRtcEngineImpl.this.mEventListener != null) { AliRtcEngine.AliRtcAudioTrack at = RemoteParticipant.getAudioTrack(curConfig.audio_track_label); AliRtcEngine.AliRtcVideoTrack vt = RemoteParticipant.getVideoTrack(curConfig.video_track_labels); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onSubscribeResult:userID:" + remoteParticipant.getUserID() + "&&result: " + result + "&&VideoTrack: " + vt + "&&AudioTrack: " + at); AliRtcEngineImpl.this.mEventListener.onSubscribeResult(remoteParticipant.getUserID(), result, vt, at); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onSubscribeResult"); } } @Override public void onResubscribeResult2(int result, String callID, ALI_RTC_INTERFACE.AliSubscribeConfig reqConfig, ALI_RTC_INTERFACE.AliSubscribeConfig curConfig) { super.onResubscribeResult2(result, callID, reqConfig, curConfig); AlivcLog.i(AliRtcEngineImpl.TAG, "onReSubscribeResult2:result:" + result + "&&callID: " + callID + "&&reqConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(reqConfig) + "&&curConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(curConfig)); RemoteParticipant remoteParticipant = AliRtcEngineImpl.this.findParticipantByCallID(callID); if (remoteParticipant == null) { return; } if (result == 0) { int count = curConfig.video_track_labels.length; for (int i = 0; i < count; i++) { if (TextUtils.isEmpty(curConfig.video_track_labels[i]) && !TextUtils.isEmpty(remoteParticipant.getVideoSubscribedCached()[i])) { AliRtcEngineImpl.this.removeRemoteDisplayWindow(callID, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i]); } } int count2 = curConfig.video_track_labels.length; for (int i2 = 0; i2 < count2; i2++) { if (!TextUtils.isEmpty(curConfig.video_track_labels[i2]) && TextUtils.isEmpty(remoteParticipant.getVideoSubscribedCached()[i2])) { AliRtcEngineImpl.this.addRemoteDisplayWindow(callID, remoteParticipant.getVideoCanvas(i2), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i2]); } } remoteParticipant.setAudioSubscribed(curConfig.audio_track_label); remoteParticipant.setVideoSubscribed(curConfig.video_track_labels); remoteParticipant.setVideoSubscribedCached(curConfig.video_track_labels); AliRtcEngineImpl.this.mSophonEngine.enableRemoteAudio(callID, !remoteParticipant.isMuteAudioPlaying()); } if (AliRtcEngineImpl.this.mEventListener != null) { AliRtcEngine.AliRtcAudioTrack at = RemoteParticipant.getAudioTrack(curConfig.audio_track_label); AliRtcEngine.AliRtcVideoTrack vt = RemoteParticipant.getVideoTrack(curConfig.video_track_labels); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onSubscribeResult:userID:" + remoteParticipant.getUserID() + "&&result: " + result + "&&VideoTrack: " + vt + "&&AudioTrack: " + at); AliRtcEngineImpl.this.mEventListener.onSubscribeResult(remoteParticipant.getUserID(), result, vt, at); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onSubscribeResult"); } } @Override public void onChannelReleaseNotify() { super.onChannelReleaseNotify(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onChannelReleaseNotify"); } @Override public void onConnectionChange(int mediaConState) { super.onConnectionChange(mediaConState); AlivcLog.i(AliRtcEngineImpl.TAG, "onConnectionChange:mediaConState: " + mediaConState); ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState state = ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState.fromNativeIndex(mediaConState); if (state == null || AliRtcEngineImpl.this.mEventListener == null) { return; } int i = AnonymousClass7.$SwitchMap$org$webrtc$alirtcInterface$ALI_RTC_INTERFACE$AliRTCMediaConnectionReConnectState[state.ordinal()]; if (i == 1) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionLost"); AliRtcEngineImpl.this.mEventListener.onConnectionLost(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionLost"); } else if (i == 2) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionRecovery"); AliRtcEngineImpl.this.mEventListener.onConnectionRecovery(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionRecovery"); } else if (i == 3) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onTryToReconnect"); AliRtcEngineImpl.this.mEventListener.onTryToReconnect(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onTryToReconnect"); } } @Override public void onWarning(int warningEvent, String params) { super.onWarning(warningEvent, params); AlivcLog.i(AliRtcEngineImpl.TAG, "onWarning event: " + warningEvent); if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onOccurWarning: warningEvent:" + warningEvent + "&¶ms" + params); AliRtcEngineImpl.this.mEventListener.onOccurWarning(warningEvent); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onOccurWarning"); } } @Override public void onError(int event, String params) { super.onError(event, params); AlivcLog.i(AliRtcEngineImpl.TAG, "onError event: " + event); if (AliRtcEngineImpl.this.mEventListener != null) { if (event == 17170689) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionLost"); AliRtcEngineImpl.this.mEventListener.onConnectionLost(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionLost"); } else if (event == 17170690) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionRecovery"); AliRtcEngineImpl.this.mEventListener.onConnectionRecovery(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionRecovery"); } else { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onOccurError"); AliRtcEngineImpl.this.mEventListener.onOccurError(event); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onOccurError"); } } } @Override public void onTransportStatusChange(String callId, ALI_RTC_INTERFACE.TransportType event, ALI_RTC_INTERFACE.TransportStatus status) { super.onTransportStatusChange(callId, event, status); } @Override public void onNetworkQualityChange(ArrayList<ALI_RTC_INTERFACE.AliTransportInfo> network_quality) { AliRtcEngine.AliRtcNetworkQuality upQuality; AliRtcEngine.AliRtcNetworkQuality downQuality; super.onNetworkQualityChange(network_quality); if (AliRtcEngineImpl.this.mEventListener != null && network_quality != null && !network_quality.isEmpty()) { int count = network_quality.size(); for (int i = 0; i < count; i++) { ALI_RTC_INTERFACE.AliTransportInfo info = network_quality.get(i); if (info != null) { try { upQuality = AliRtcEngine.AliRtcNetworkQuality.values()[info.upQuality.getValue()]; } catch (Exception e) { upQuality = AliRtcEngine.AliRtcNetworkQuality.Network_Unknow; } try { downQuality = AliRtcEngine.AliRtcNetworkQuality.values()[info.downQuality.getValue()]; } catch (Exception e2) { downQuality = AliRtcEngine.AliRtcNetworkQuality.Network_Unknow; } AliRtcEngineImpl.this.mEventListener.onNetworkQualityChanged(info.user_id, upQuality, downQuality); } } } } @Override public void onLogMessage(String message) { super.onLogMessage(message); } @Override public void onMessage(String tid, String contentType, String content) { super.onMessage(tid, contentType, content); } @Override public void onBye(int code) { super.onBye(code); AliRtcEngineImpl.this.mAliRtcConfig = new AliRtcConfig(); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onBye: code:" + code); AliRtcEngineImpl.this.mNotifyListener.onBye(code); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onBye"); } } @Override public void onUplinkChannelMessage(int result, String contentType, String content) { super.onUplinkChannelMessage(result, contentType, content); } @Override public String onCollectPlatformProfile() { return AliRtcEngineImpl.this.getOsInfo(); } @Override public String onFetchPerformanceInfo() { JSONObject jsonObject = new JSONObject(); int cpuPercent = 0; try { if (AliRtcEngineImpl.this.mProcessCpuTracker != null) { AliRtcEngineImpl.this.mProcessCpuTracker.updateCpuUsages(AliRtcEngineImpl.this.mContext.getApplicationContext()); cpuPercent = AliRtcEngineImpl.this.mProcessCpuTracker.getMyPicCpuPercent(); } jsonObject.putOpt("cpu_usage", String.valueOf(cpuPercent)); jsonObject.putOpt("mem_usage", String.valueOf(AliRtcEngineUtil.getRunningAppProcessInfo(AliRtcEngineImpl.this.mContext.getApplicationContext()))); } catch (Exception e) { } return jsonObject.toString(); } @Override public boolean onFetchAudioPermissionInfo() { if (AliRtcEngineImpl.this.mContext == null) { return false; } if (Build.VERSION.SDK_INT >= 23) { return WebRtcAudioUtils.hasPermission(AliRtcEngineImpl.this.mContext.getApplicationContext(), "android.permission.RECORD_AUDIO"); } return true; } @Override public String onFetchAudioDeviceInfo() { JSONObject jsonObject = new JSONObject(); int portType = 0; try { if (!AliRtcEngineImpl.this.mUsbCameraStatus) { if (AliRtcEngineImpl.this.mSophonEngine != null) { AppRTCAudioManager.AudioDevice selectDevice = AliRtcEngineImpl.this.mSophonEngine.getSelectAudioDevice(); portType = selectDevice == AppRTCAudioManager.AudioDevice.BLUETOOTH ? 1 : 0; } } else { portType = 2; } jsonObject.putOpt("AudioPortType", Integer.valueOf(portType)); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFetchAudioDeviceInfo: CurrentPort type: " + portType); } catch (Exception e) { AlivcLog.e(AliRtcEngineImpl.TAG, "[API] [Callback]onFetchAudioDeviceInfo Error"); } return jsonObject.toString(); } @Override public void onWindowRenderReady(String callId, int videoType) { super.onWindowRenderReady(callId, videoType); } @Override public void onUpdateRoleNotify(ALI_RTC_INTERFACE.AliRTCSDK_Client_Role old_role, ALI_RTC_INTERFACE.AliRTCSDK_Client_Role new_role) { super.onUpdateRoleNotify(old_role, new_role); if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onUpdateRoleNotify: old_role:" + old_role + "&&new_role:" + new_role); AliRtcEngineImpl.this.mEventListener.onUpdateRoleNotify(old_role, new_role); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onUpdateRoleNotify"); } } @Override public void onFirstFramereceived(String callId, String stream_label, String track_label, int time_cost_ms) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFirstFramereceived: callId:" + callId + "&&stream_label:" + stream_label + "&&time_cost_ms:" + time_cost_ms); AliRtcEngineImpl.this.mNotifyListener.onFirstFramereceived(callId, stream_label, track_label, time_cost_ms); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onFirstFramereceived"); } } @Override public void onFirstPacketSent(String callId, String stream_label, String track_label, int time_cost_ms) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFirstPacketSent: callId:" + callId + "&&stream_label:" + stream_label + "&&track_label:" + track_label + "&&time_cost_ms:" + time_cost_ms); AliRtcEngineImpl.this.mNotifyListener.onFirstPacketSent(callId, stream_label, track_label, time_cost_ms); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onFirstPacketSent"); } } @Override public void onFirstPacketReceived(String callId, String stream_label, String track_label, int time_cost_ms) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFirstPacketReceived: callId:" + callId + "&&stream_label:" + stream_label + "&&track_label:" + track_label + "&&time_cost_ms:" + time_cost_ms); AliRtcEngineImpl.this.mNotifyListener.onFirstPacketReceived(callId, stream_label, track_label, time_cost_ms); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onFirstPacketReceived"); } } @Override public int onFetchDeviceOrientation() { if (AliRtcEngineImpl.this.mAlbumOrientationEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]getOrientation"); int retOrientation = AliRtcEngineImpl.this.mAlbumOrientationEventListener.getOrientation(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]getOrientation"); return retOrientation; } int retOrientation2 = super.onFetchDeviceOrientation(); return retOrientation2; } }; try { if (!TextUtils.isEmpty(extras)) { this.mExtras = extras; } this.mContext = context; ContextUtils.initialize(context.getApplicationContext()); initProcessCpuTracker(); LogWhenGoBackOrFront((Application) ContextUtils.getApplicationContext(), true); enableOrientation(ContextUtils.getApplicationContext(), true); DeviceConfig.initConfig(); SophonEngine.setH5CompatibleMode(EnableH5Compatible); this.mDetectedUsbDevice = SophonEngine.setupUSBDevice(context, this) != 0; AlivcLog.i(TAG, "AliRtcEngine init mDetectedUsbDevice = " + this.mDetectedUsbDevice); if (!this.mDetectedUsbDevice) { SophonEngine.closeUSBDevice(); if (this.mSophonEngine == null) { this.mSophonEngine = SophonEngine.create(context.getApplicationContext(), this.mExtras, this.mSophonEventListener); } } } catch (Exception e) { e.printStackTrace(); } } public AliRtcEngineImpl(Context context) { this.mAliRtcConfig = new AliRtcConfig(); this.mainHandler = new Handler(Looper.getMainLooper()); this.mLock = new Object(); this.mExtras = ""; this.mUsbCameraStatus = false; this.mDetectedUsbDevice = false; this.mApiPass = true; this.mSophonEventListener = new SophonEventListener() { @Override public void onGslbResult(int result) { super.onGslbResult(result); } @Override public void onJoinChannelResult(int result) { super.onJoinChannelResult(result); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setInCall(true); if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoPublish()) { AliRtcEngineImpl.this.publish(); } } else { AliRtcEngineImpl.this.mAliRtcConfig.setInCall(false); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onJoinChannelResult:result:" + result); AliRtcEngineImpl.this.mEventListener.onJoinChannelResult(result); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onJoinChannelResult"); } } @Override public void onLeaveChannelResult(int result) { super.onLeaveChannelResult(result); synchronized (AliRtcEngineImpl.this.mLock) { AliRtcEngineImpl.this.mLock.notify(); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onLeaveChannelResult:result:" + result); AliRtcEngineImpl.this.mAliRtcConfig.setPublishIsGoing(false); AliRtcEngineImpl.this.mEventListener.onLeaveChannelResult(result); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onLeaveChannelResult"); } if (result != ErrorCodes.SDK_RESULT_WRONG_STATE_ERROR) { AlivcLog.uploadChannelLog(); } } @Override public void onPublishResult(int result, String callId) { super.onPublishResult(result, callId); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(callId, true); AliRtcEngineImpl.this.mAliRtcConfig.setPublishIsGoing(false); if (AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalMic()) { AliRtcEngineImpl.this.muteLocalMic(true); } if (!AliRtcEngineImpl.this.mAliRtcConfig.isAudioOnly() && AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalCameraVideo()) { AliRtcEngineImpl.this.muteLocalCamera(true, AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera); } AliRtcEngineImpl.this.mainHandler.post(new Runnable() { @Override public void run() { AliRtcEngineImpl.this.enableSpeakerphone(AliRtcEngineImpl.this.mAliRtcConfig.isSpeakerOn()); } }); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onPublishResult:result:" + result + "&&callId" + callId); AliRtcEngineImpl.this.mEventListener.onPublishResult(result, callId); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onPublishResult"); } } @Override public void onRepublishResult(int result, String callId) { super.onRepublishResult(result, callId); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(callId, true); if (AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalMic()) { AliRtcEngineImpl.this.muteLocalMic(true); } if (!AliRtcEngineImpl.this.mAliRtcConfig.isAudioOnly() && AliRtcEngineImpl.this.mAliRtcConfig.isMuteLocalCameraVideo()) { AliRtcEngineImpl.this.muteLocalCamera(true, AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera); } AliRtcEngineImpl.this.mainHandler.post(new Runnable() { @Override public void run() { AliRtcEngineImpl.this.enableSpeakerphone(AliRtcEngineImpl.this.mAliRtcConfig.isSpeakerOn()); } }); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onPublishResult:result:" + result + "&&callId" + callId); AliRtcEngineImpl.this.mEventListener.onPublishResult(result, callId); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onPublishResult"); } } @Override public void onUnpublishResult(int result, String callId) { super.onUnpublishResult(result, callId); if (result == 0) { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(null, true); } else { AliRtcEngineImpl.this.mAliRtcConfig.setLocalCallID(AliRtcEngineImpl.this.mAliRtcConfig.getTmpLocalCallID()); } if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onUnpublishResult:result:" + result + "&&callId" + callId); AliRtcEngineImpl.this.mEventListener.onUnpublishResult(result); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onUnpublishResult"); } } @Override public void onSubscribeResult(int result, String callId) { super.onSubscribeResult(result, callId); } @Override public void onResubscribeResult(int result, String callId) { super.onResubscribeResult(result, callId); } @Override public void onUnsubscribeResult(int result, String callId) { super.onUnsubscribeResult(result, callId); RemoteParticipant remoteParticipant = AliRtcEngineImpl.this.findParticipantByCallID(callId); if (remoteParticipant != null) { int count = remoteParticipant.getVideoSubscribed().length; for (int i = 0; i < count; i++) { AliRtcEngineImpl.this.removeRemoteDisplayWindow(callId, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i]); } remoteParticipant.clearSubedStatus(); } if (AliRtcEngineImpl.this.mEventListener != null && remoteParticipant != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onUnsubscribeResult:result:" + result + "&&userId" + remoteParticipant.getUserID()); AliRtcEngineImpl.this.mEventListener.onUnsubscribeResult(result, remoteParticipant.getUserID()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onUnsubscribeResult"); } } @Override public void onParticipantJoinNotify(AliParticipantInfo[] participantList, int feedCount) { RemoteParticipant remoteParticipant; super.onParticipantJoinNotify(participantList, feedCount); for (AliParticipantInfo info : participantList) { if (AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().containsKey(info.getUser_id())) { remoteParticipant = AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().get(info.getUser_id()); } else { remoteParticipant = new RemoteParticipant(); remoteParticipant.clearAll(); if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoSubscribe()) { AliRtcEngineImpl.this.configRemoteParticipantDefaultValues(remoteParticipant); } AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().put(info.getUser_id(), remoteParticipant); } remoteParticipant.setUserID(info.getUser_id()); remoteParticipant.setSessionID(info.getSession()); remoteParticipant.setDisplayName(info.getUser_name()); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteUserOnLineNotify:userId:" + info.getUser_id()); AliRtcEngineImpl.this.mNotifyListener.onRemoteUserOnLineNotify(info.getUser_id()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteUserOnLineNotify"); } } } @Override public void onParticipantLeaveNotify(AliParticipantInfo[] participantList, int feedCount) { super.onParticipantLeaveNotify(participantList, feedCount); for (int i = 0; i < feedCount; i++) { AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().remove(participantList[i].getUser_id()); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteUserOffLineNotify:uid:" + participantList[i].getUser_id()); AliRtcEngineImpl.this.mNotifyListener.onRemoteUserOffLineNotify(participantList[i].getUser_id()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteUserOffLineNotify"); } } } @Override public void onParticipantPublishNotify(PublisherInfo[] publisherList, int publisherCount) { RemoteParticipant remoteParticipant; super.onParticipantPublishNotify(publisherList, publisherCount); AlivcLog.i(AliRtcEngineImpl.TAG, "onPublishNotify count: " + publisherCount); for (PublisherInfo info : publisherList) { if (AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().containsKey(info.getUser_id())) { remoteParticipant = AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().get(info.getUser_id()); } else { remoteParticipant = new RemoteParticipant(); remoteParticipant.clearAll(); if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoSubscribe()) { AliRtcEngineImpl.this.configRemoteParticipantDefaultValues(remoteParticipant); } AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().put(info.getUser_id(), remoteParticipant); } remoteParticipant.setCallID(info.getCall_id()); remoteParticipant.setUserID(info.getUser_id()); remoteParticipant.setSessionID(TextUtils.isEmpty(info.getSession()) ? AliRtcEngineImpl.FAKE_SESSION : info.getSession()); remoteParticipant.setDisplayName(info.getDisplay()); remoteParticipant.setStreamLabel(info.getStream_label()); remoteParticipant.setAudioTrackLabel(info.getAudio_track_label()); remoteParticipant.setVideoTrackLabels(info.getVideo_track_labels()); if (TextUtils.isEmpty(info.getCall_id())) { AlivcLog.e(AliRtcEngineImpl.TAG, "onParticipantPublishNotify callid is null, uid = " + info.getUser_id()); } else { AliRtcEngineImpl.this.mAliRtcConfig.getRemotePublishParticipants().put(info.getCall_id(), remoteParticipant); } AliRtcEngineImpl.this.removeRemoteNullTracksDisplayWindow(info.getCall_id(), info.video_track_labels); if (AliRtcEngineImpl.this.mNotifyListener != null) { AliRtcEngine.AliRtcAudioTrack at = RemoteParticipant.getAudioTrack(info.getAudio_track_label()); AliRtcEngine.AliRtcVideoTrack vt = RemoteParticipant.getVideoTrack(info.getVideo_track_labels()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteTrackAvailableNotify:userid: " + remoteParticipant.getUserID() + "&&audioTrack: " + at + "&&videoTrack: " + vt); AliRtcEngineImpl.this.mNotifyListener.onRemoteTrackAvailableNotify(remoteParticipant.getUserID(), at, vt); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteTrackAvailableNotify"); } if (AliRtcEngineImpl.this.mAliRtcConfig.isAutoSubscribe()) { AliRtcEngineImpl.this.configRemoteAudio(remoteParticipant.getUserID(), remoteParticipant.isUcAudeoSubed()); AliRtcEngineImpl.this.configRemoteCameraTrack(remoteParticipant.getUserID(), remoteParticipant.isUcVideoSubedMaster(), remoteParticipant.isUcVideoSubed()); AliRtcEngineImpl.this.configRemoteScreenTrack(remoteParticipant.getUserID(), remoteParticipant.isUcScreenSubed()); AliRtcEngineImpl.this.subscribe(remoteParticipant.getUserID()); } } } @Override public void onParticipantUnpublishNotify(AliUnPublisherInfo[] unpublisherList, int feedCount) { super.onParticipantUnpublishNotify(unpublisherList, feedCount); AlivcLog.i(AliRtcEngineImpl.TAG, "onParticipantUnpublishNotify count: " + feedCount); if (unpublisherList == null) { AlivcLog.e(AliRtcEngineImpl.TAG, "onParticipantUnpublishNotify unpublisherList is null "); return; } for (int i = 0; i < feedCount; i++) { RemoteParticipant remoteParticipant = null; if (i < unpublisherList.length && unpublisherList[i] != null && AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().containsKey(unpublisherList[i].getUser_id())) { remoteParticipant = AliRtcEngineImpl.this.mAliRtcConfig.getRemoteParticipants().get(unpublisherList[i].getUser_id()); } if (remoteParticipant != null) { int count = remoteParticipant.getVideoTrackLabels().length; for (int j = 0; j < count; j++) { AliRtcEngineImpl.this.removeRemoteDisplayWindow(remoteParticipant.getCallID(), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[j]); } remoteParticipant.clearStreams(); remoteParticipant.setFirstSubscribe(true); if (unpublisherList[i] != null && !TextUtils.isEmpty(unpublisherList[i].getCall_id())) { AliRtcEngineImpl.this.mAliRtcConfig.getRemotePublishParticipants().remove(unpublisherList[i].getCall_id()); } else { AlivcLog.i(AliRtcEngineImpl.TAG, "onParticipantUnpublishNotify callid is null"); } } if (AliRtcEngineImpl.this.mNotifyListener != null && remoteParticipant != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onRemoteUserUnPublish:rtcEngine" + AliRtcEngineImpl.this + "userid: " + remoteParticipant.getUserID()); AliRtcEngineImpl.this.mNotifyListener.onRemoteUserUnPublish(AliRtcEngineImpl.this, remoteParticipant.getUserID()); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onRemoteUserUnPublish"); } } } @Override public void onParticipantSubscribeNotify(AliSubscriberInfo[] subcribeinfoList, int feedCount) { super.onParticipantSubscribeNotify(subcribeinfoList, feedCount); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onParticipantSubscribeNotify:AliSubscriberInfo" + subcribeinfoList[0].user_id + "feedCount: " + feedCount); AliRtcEngineImpl.this.mNotifyListener.onParticipantSubscribeNotify(subcribeinfoList, feedCount); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onParticipantSubscribeNotify"); } } @Override public void onParticipantUnsubscribeNotify(AliParticipantInfo[] participantList, int feedCount) { super.onParticipantUnsubscribeNotify(participantList, feedCount); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onParticipantUnsubscribeNotify:AliParticipantInfo" + participantList[0].user_id + "feedCount: " + feedCount); AliRtcEngineImpl.this.mNotifyListener.onParticipantUnsubscribeNotify(participantList, feedCount); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onParticipantUnsubscribeNotify"); } } @Override public void onParticipantStatusNotify(AliStatusInfo[] status_info_list, int count) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onParticipantUnsubscribeNotify:AliStatusInfo" + status_info_list[0].user_id + "&&count: " + count); AliRtcEngineImpl.this.mNotifyListener.onParticipantStatusNotify(status_info_list, count); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onParticipantUnsubscribeNotify"); } } @Override public void onAliRtcStats(ALI_RTC_INTERFACE.AliRtcStats aliRtcStats) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onAliRtcStats:AliRtcStats:" + aliRtcStats.toString()); if (AliRtcEngineImpl.this.mProcessCpuTracker != null) { AliRtcEngineImpl.this.mProcessCpuTracker.updateCpuUsages(AliRtcEngineImpl.this.mContext.getApplicationContext()); aliRtcStats.setCpu_usage(AliRtcEngineImpl.this.mProcessCpuTracker.getMyPicCpuPercent()); aliRtcStats.setSystem_cpu_usage(AliRtcEngineImpl.this.mProcessCpuTracker.getTotalSysCpuPercent()); } AliRtcEngineImpl.this.mNotifyListener.onAliRtcStats(aliRtcStats); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onAliRtcStats:"); } } @Override public void onSubscribeResult2(int result, String callID, ALI_RTC_INTERFACE.AliSubscribeConfig reqConfig, ALI_RTC_INTERFACE.AliSubscribeConfig curConfig) { super.onSubscribeResult2(result, callID, reqConfig, curConfig); AlivcLog.i(AliRtcEngineImpl.TAG, "onSubscribeResult2 result: " + result + " callID: " + callID + "reqConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(reqConfig) + "curConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(curConfig)); RemoteParticipant remoteParticipant = AliRtcEngineImpl.this.findParticipantByCallID(callID); if (remoteParticipant == null) { return; } if (result == 0) { int count = curConfig.video_track_labels.length; for (int i = 0; i < count; i++) { if (!TextUtils.isEmpty(curConfig.video_track_labels[i])) { AliRtcEngineImpl.this.addRemoteDisplayWindow(callID, remoteParticipant.getVideoCanvas(i), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i]); } } remoteParticipant.setAudioSubscribed(curConfig.audio_track_label); remoteParticipant.setVideoSubscribed(curConfig.video_track_labels); remoteParticipant.setVideoSubscribedCached(curConfig.video_track_labels); remoteParticipant.setFirstSubscribe(false); AliRtcEngineImpl.this.mSophonEngine.enableRemoteAudio(callID, !remoteParticipant.isMuteAudioPlaying()); } if (AliRtcEngineImpl.this.mEventListener != null) { AliRtcEngine.AliRtcAudioTrack at = RemoteParticipant.getAudioTrack(curConfig.audio_track_label); AliRtcEngine.AliRtcVideoTrack vt = RemoteParticipant.getVideoTrack(curConfig.video_track_labels); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onSubscribeResult:userID:" + remoteParticipant.getUserID() + "&&result: " + result + "&&VideoTrack: " + vt + "&&AudioTrack: " + at); AliRtcEngineImpl.this.mEventListener.onSubscribeResult(remoteParticipant.getUserID(), result, vt, at); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onSubscribeResult"); } } @Override public void onResubscribeResult2(int result, String callID, ALI_RTC_INTERFACE.AliSubscribeConfig reqConfig, ALI_RTC_INTERFACE.AliSubscribeConfig curConfig) { super.onResubscribeResult2(result, callID, reqConfig, curConfig); AlivcLog.i(AliRtcEngineImpl.TAG, "onReSubscribeResult2:result:" + result + "&&callID: " + callID + "&&reqConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(reqConfig) + "&&curConfig: " + AliRtcEngineImpl.this.getSubscribeConfigString(curConfig)); RemoteParticipant remoteParticipant = AliRtcEngineImpl.this.findParticipantByCallID(callID); if (remoteParticipant == null) { return; } if (result == 0) { int count = curConfig.video_track_labels.length; for (int i = 0; i < count; i++) { if (TextUtils.isEmpty(curConfig.video_track_labels[i]) && !TextUtils.isEmpty(remoteParticipant.getVideoSubscribedCached()[i])) { AliRtcEngineImpl.this.removeRemoteDisplayWindow(callID, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i]); } } int count2 = curConfig.video_track_labels.length; for (int i2 = 0; i2 < count2; i2++) { if (!TextUtils.isEmpty(curConfig.video_track_labels[i2]) && TextUtils.isEmpty(remoteParticipant.getVideoSubscribedCached()[i2])) { AliRtcEngineImpl.this.addRemoteDisplayWindow(callID, remoteParticipant.getVideoCanvas(i2), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[i2]); } } remoteParticipant.setAudioSubscribed(curConfig.audio_track_label); remoteParticipant.setVideoSubscribed(curConfig.video_track_labels); remoteParticipant.setVideoSubscribedCached(curConfig.video_track_labels); AliRtcEngineImpl.this.mSophonEngine.enableRemoteAudio(callID, !remoteParticipant.isMuteAudioPlaying()); } if (AliRtcEngineImpl.this.mEventListener != null) { AliRtcEngine.AliRtcAudioTrack at = RemoteParticipant.getAudioTrack(curConfig.audio_track_label); AliRtcEngine.AliRtcVideoTrack vt = RemoteParticipant.getVideoTrack(curConfig.video_track_labels); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onSubscribeResult:userID:" + remoteParticipant.getUserID() + "&&result: " + result + "&&VideoTrack: " + vt + "&&AudioTrack: " + at); AliRtcEngineImpl.this.mEventListener.onSubscribeResult(remoteParticipant.getUserID(), result, vt, at); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onSubscribeResult"); } } @Override public void onChannelReleaseNotify() { super.onChannelReleaseNotify(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onChannelReleaseNotify"); } @Override public void onConnectionChange(int mediaConState) { super.onConnectionChange(mediaConState); AlivcLog.i(AliRtcEngineImpl.TAG, "onConnectionChange:mediaConState: " + mediaConState); ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState state = ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState.fromNativeIndex(mediaConState); if (state == null || AliRtcEngineImpl.this.mEventListener == null) { return; } int i = AnonymousClass7.$SwitchMap$org$webrtc$alirtcInterface$ALI_RTC_INTERFACE$AliRTCMediaConnectionReConnectState[state.ordinal()]; if (i == 1) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionLost"); AliRtcEngineImpl.this.mEventListener.onConnectionLost(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionLost"); } else if (i == 2) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionRecovery"); AliRtcEngineImpl.this.mEventListener.onConnectionRecovery(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionRecovery"); } else if (i == 3) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onTryToReconnect"); AliRtcEngineImpl.this.mEventListener.onTryToReconnect(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onTryToReconnect"); } } @Override public void onWarning(int warningEvent, String params) { super.onWarning(warningEvent, params); AlivcLog.i(AliRtcEngineImpl.TAG, "onWarning event: " + warningEvent); if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onOccurWarning: warningEvent:" + warningEvent + "&¶ms" + params); AliRtcEngineImpl.this.mEventListener.onOccurWarning(warningEvent); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onOccurWarning"); } } @Override public void onError(int event, String params) { super.onError(event, params); AlivcLog.i(AliRtcEngineImpl.TAG, "onError event: " + event); if (AliRtcEngineImpl.this.mEventListener != null) { if (event == 17170689) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionLost"); AliRtcEngineImpl.this.mEventListener.onConnectionLost(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionLost"); } else if (event == 17170690) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onConnectionRecovery"); AliRtcEngineImpl.this.mEventListener.onConnectionRecovery(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onConnectionRecovery"); } else { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onOccurError"); AliRtcEngineImpl.this.mEventListener.onOccurError(event); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onOccurError"); } } } @Override public void onTransportStatusChange(String callId, ALI_RTC_INTERFACE.TransportType event, ALI_RTC_INTERFACE.TransportStatus status) { super.onTransportStatusChange(callId, event, status); } @Override public void onNetworkQualityChange(ArrayList<ALI_RTC_INTERFACE.AliTransportInfo> network_quality) { AliRtcEngine.AliRtcNetworkQuality upQuality; AliRtcEngine.AliRtcNetworkQuality downQuality; super.onNetworkQualityChange(network_quality); if (AliRtcEngineImpl.this.mEventListener != null && network_quality != null && !network_quality.isEmpty()) { int count = network_quality.size(); for (int i = 0; i < count; i++) { ALI_RTC_INTERFACE.AliTransportInfo info = network_quality.get(i); if (info != null) { try { upQuality = AliRtcEngine.AliRtcNetworkQuality.values()[info.upQuality.getValue()]; } catch (Exception e) { upQuality = AliRtcEngine.AliRtcNetworkQuality.Network_Unknow; } try { downQuality = AliRtcEngine.AliRtcNetworkQuality.values()[info.downQuality.getValue()]; } catch (Exception e2) { downQuality = AliRtcEngine.AliRtcNetworkQuality.Network_Unknow; } AliRtcEngineImpl.this.mEventListener.onNetworkQualityChanged(info.user_id, upQuality, downQuality); } } } } @Override public void onLogMessage(String message) { super.onLogMessage(message); } @Override public void onMessage(String tid, String contentType, String content) { super.onMessage(tid, contentType, content); } @Override public void onBye(int code) { super.onBye(code); AliRtcEngineImpl.this.mAliRtcConfig = new AliRtcConfig(); if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onBye: code:" + code); AliRtcEngineImpl.this.mNotifyListener.onBye(code); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onBye"); } } @Override public void onUplinkChannelMessage(int result, String contentType, String content) { super.onUplinkChannelMessage(result, contentType, content); } @Override public String onCollectPlatformProfile() { return AliRtcEngineImpl.this.getOsInfo(); } @Override public String onFetchPerformanceInfo() { JSONObject jsonObject = new JSONObject(); int cpuPercent = 0; try { if (AliRtcEngineImpl.this.mProcessCpuTracker != null) { AliRtcEngineImpl.this.mProcessCpuTracker.updateCpuUsages(AliRtcEngineImpl.this.mContext.getApplicationContext()); cpuPercent = AliRtcEngineImpl.this.mProcessCpuTracker.getMyPicCpuPercent(); } jsonObject.putOpt("cpu_usage", String.valueOf(cpuPercent)); jsonObject.putOpt("mem_usage", String.valueOf(AliRtcEngineUtil.getRunningAppProcessInfo(AliRtcEngineImpl.this.mContext.getApplicationContext()))); } catch (Exception e) { } return jsonObject.toString(); } @Override public boolean onFetchAudioPermissionInfo() { if (AliRtcEngineImpl.this.mContext == null) { return false; } if (Build.VERSION.SDK_INT >= 23) { return WebRtcAudioUtils.hasPermission(AliRtcEngineImpl.this.mContext.getApplicationContext(), "android.permission.RECORD_AUDIO"); } return true; } @Override public String onFetchAudioDeviceInfo() { JSONObject jsonObject = new JSONObject(); int portType = 0; try { if (!AliRtcEngineImpl.this.mUsbCameraStatus) { if (AliRtcEngineImpl.this.mSophonEngine != null) { AppRTCAudioManager.AudioDevice selectDevice = AliRtcEngineImpl.this.mSophonEngine.getSelectAudioDevice(); portType = selectDevice == AppRTCAudioManager.AudioDevice.BLUETOOTH ? 1 : 0; } } else { portType = 2; } jsonObject.putOpt("AudioPortType", Integer.valueOf(portType)); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFetchAudioDeviceInfo: CurrentPort type: " + portType); } catch (Exception e) { AlivcLog.e(AliRtcEngineImpl.TAG, "[API] [Callback]onFetchAudioDeviceInfo Error"); } return jsonObject.toString(); } @Override public void onWindowRenderReady(String callId, int videoType) { super.onWindowRenderReady(callId, videoType); } @Override public void onUpdateRoleNotify(ALI_RTC_INTERFACE.AliRTCSDK_Client_Role old_role, ALI_RTC_INTERFACE.AliRTCSDK_Client_Role new_role) { super.onUpdateRoleNotify(old_role, new_role); if (AliRtcEngineImpl.this.mEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onUpdateRoleNotify: old_role:" + old_role + "&&new_role:" + new_role); AliRtcEngineImpl.this.mEventListener.onUpdateRoleNotify(old_role, new_role); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onUpdateRoleNotify"); } } @Override public void onFirstFramereceived(String callId, String stream_label, String track_label, int time_cost_ms) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFirstFramereceived: callId:" + callId + "&&stream_label:" + stream_label + "&&time_cost_ms:" + time_cost_ms); AliRtcEngineImpl.this.mNotifyListener.onFirstFramereceived(callId, stream_label, track_label, time_cost_ms); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onFirstFramereceived"); } } @Override public void onFirstPacketSent(String callId, String stream_label, String track_label, int time_cost_ms) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFirstPacketSent: callId:" + callId + "&&stream_label:" + stream_label + "&&track_label:" + track_label + "&&time_cost_ms:" + time_cost_ms); AliRtcEngineImpl.this.mNotifyListener.onFirstPacketSent(callId, stream_label, track_label, time_cost_ms); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onFirstPacketSent"); } } @Override public void onFirstPacketReceived(String callId, String stream_label, String track_label, int time_cost_ms) { if (AliRtcEngineImpl.this.mNotifyListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]onFirstPacketReceived: callId:" + callId + "&&stream_label:" + stream_label + "&&track_label:" + track_label + "&&time_cost_ms:" + time_cost_ms); AliRtcEngineImpl.this.mNotifyListener.onFirstPacketReceived(callId, stream_label, track_label, time_cost_ms); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]onFirstPacketReceived"); } } @Override public int onFetchDeviceOrientation() { if (AliRtcEngineImpl.this.mAlbumOrientationEventListener != null) { AlivcLog.i(AliRtcEngineImpl.TAG, "[API][Callback]getOrientation"); int retOrientation = AliRtcEngineImpl.this.mAlbumOrientationEventListener.getOrientation(); AlivcLog.i(AliRtcEngineImpl.TAG, "[API][End][Callback]getOrientation"); return retOrientation; } int retOrientation2 = super.onFetchDeviceOrientation(); return retOrientation2; } }; try { this.mContext = context; ContextUtils.initialize(context.getApplicationContext()); initProcessCpuTracker(); LogWhenGoBackOrFront((Application) ContextUtils.getApplicationContext(), true); enableOrientation(ContextUtils.getApplicationContext(), true); DeviceConfig.initConfig(); SophonEngine.setH5CompatibleMode(EnableH5Compatible); boolean z = SophonEngine.setupUSBDevice(context, this) != 0; this.mDetectedUsbDevice = z; if (!z) { SophonEngine.closeUSBDevice(); if (this.mSophonEngine == null) { this.mSophonEngine = SophonEngine.create(context.getApplicationContext(), this.mExtras, this.mSophonEventListener); } } } catch (Exception e) { e.printStackTrace(); } } private void initProcessCpuTracker() { if (this.mProcessCpuTracker == null) { this.mProcessCpuTracker = new ProcessCpuTracker(); } this.mProcessCpuTracker.updateCpuUsages(this.mContext.getApplicationContext()); } @Override public void destroy() { AlivcLog.i(TAG, "[API]destroy"); destroyEngine(); AlivcLog.i(TAG, "[API][End]destroy"); } private void destroyEngine() { this.mContext = null; this.mDetectedUsbDevice = false; LogWhenGoBackOrFront((Application) ContextUtils.getApplicationContext(), false); enableOrientation(ContextUtils.getApplicationContext(), false); if (this.mSophonEngine != null) { if (this.mUsbCameraStatus) { SophonEngine.closeUSBDevice(); this.mUsbCameraStatus = false; } this.mSophonEngine.destory(); this.mSophonEngine = null; } release(); } private void LogWhenGoBackOrFront(Application app, boolean bind) { if (bind) { AppFrontBackHelper appFrontBackHelper = new AppFrontBackHelper(); this.mAppFrontBackHelper = appFrontBackHelper; appFrontBackHelper.bindApplication(app, new AppFrontBackHelper.OnAppStatusListener() { @Override public void onFront() { AlivcLog.i(AliRtcEngineImpl.TAG, "applicationWillBecomeActive =="); if (AliRtcEngineImpl.this.mSophonEngine != null) { AliRtcEngineImpl.this.mSophonEngine.applicationWillBecomeActive(); } } @Override public void onBack() { AlivcLog.i(AliRtcEngineImpl.TAG, "applicationWillResignActive =="); if (AliRtcEngineImpl.this.mSophonEngine != null) { AliRtcEngineImpl.this.mSophonEngine.applicationWillResignActive(); } } }); } else { AppFrontBackHelper appFrontBackHelper2 = this.mAppFrontBackHelper; if (appFrontBackHelper2 != null) { appFrontBackHelper2.unBindApplication(app); this.mAppFrontBackHelper = null; } } } private void enableOrientation(Context context, boolean enable) { if (enable) { if (this.mAlbumOrientationEventListener == null) { this.mAlbumOrientationEventListener = new AlbumOrientationEventListener(context, 3); } if (this.mAlbumOrientationEventListener.canDetectOrientation()) { this.mAlbumOrientationEventListener.enable(); return; } else { AlivcLog.e(TAG, "Can't Detect Orientation"); return; } } AlbumOrientationEventListener albumOrientationEventListener = this.mAlbumOrientationEventListener; if (albumOrientationEventListener != null) { albumOrientationEventListener.disable(); this.mAlbumOrientationEventListener = null; } } public int getDeviceOrientation() { AlbumOrientationEventListener albumOrientationEventListener = this.mAlbumOrientationEventListener; if (albumOrientationEventListener != null) { return albumOrientationEventListener.getOrientation(); } AlivcLog.e(TAG, "mAlbumOrientationEventListener is null"); return 0; } @Override public String getSdkVersion() { SophonEngine sophonEngine; AlivcLog.i(TAG, "[API]getSdkVersion"); if (TextUtils.isEmpty(VERSION) && (sophonEngine = this.mSophonEngine) != null) { VERSION = sophonEngine.getSDKVersion(); } AlivcLog.i(TAG, "[API][End][Result]getSdkVersion"); return VERSION; } @Override public int setAutoPublish(boolean autoPub, boolean autoSub) { AlivcLog.i(TAG, "[API]setAutoPublish:autoPub: " + autoPub + "&&autoSub: " + autoSub); if (this.mAliRtcConfig.isInCall()) { AlivcLog.e(TAG, "setAutoPublish:should set before join channel.:-1"); AlivcLog.i(TAG, "[API][End][Result]setAutoPublish:autoPub: " + autoPub + "&&autoSub: " + autoSub + ":-1"); return -1; } this.mAliRtcConfig.setAutoPublish(autoPub); this.mAliRtcConfig.setAutoSubscribe(autoSub); AlivcLog.i(TAG, "[API][End][Result]setAutoPublish:autoPub:0"); return 0; } @Override public int setAudioOnlyMode(boolean audioOnly) { AlivcLog.i(TAG, "[API]setAudioOnlyMode:audioOnly:" + audioOnly); if (this.mAliRtcConfig.isInCall()) { AlivcLog.e(TAG, "[API][Result]setAudioOnlyMode: should set before join channel.&&audioOnly: " + audioOnly + ":-1"); return -1; } this.mAliRtcConfig.setAudioOnly(audioOnly); AlivcLog.i(TAG, "[API][End][Result]setAudioOnlyMode:audioOnly:0"); return 0; } @Override public void setRenderSharedContext(long sharedContext) { AlivcLog.i(TAG, "[API]setAudioOnlyMode:setSharedContext:" + sharedContext); this.mAliRtcConfig.setSharedContext(sharedContext); AlivcLog.i(TAG, "[API][End]setSharedContext"); } @Override public boolean isAutoPublish() { boolean bool = this.mAliRtcConfig.isAutoPublish(); AlivcLog.i(TAG, "[API][Result]isAutoPublish:" + bool); return bool; } @Override public boolean isAutoSubscribe() { boolean bool = this.mAliRtcConfig.isAutoSubscribe(); AlivcLog.i(TAG, "[API][Result]isAutoSubscribe:" + bool); return bool; } @Override public boolean isAudioOnly() { boolean bool = this.mAliRtcConfig.isAudioOnly(); AlivcLog.i(TAG, "[API][Result]isAudioOnly:" + bool); return bool; } @Override public void joinChannel(AliRtcAuthInfo authInfo, String userName) { AlivcLog.i(TAG, "[API]joinChannel:authInfo" + authInfo.toString() + "&userName:" + userName); if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API]joinChannel:mSophonEngine is null"); return; } this.mAliRtcConfig.setCachedAuthorInfo(authInfo); ALI_RTC_INTERFACE.AuthInfo info = new ALI_RTC_INTERFACE.AuthInfo(); info.channel = authInfo.getConferenceId(); info.user_id = authInfo.getUserId(); info.appid = authInfo.getAppid(); info.nonce = authInfo.getNonce(); info.timestamp = authInfo.getTimestamp(); info.token = authInfo.getToken(); info.gslb = authInfo.getGslb(); info.agent = authInfo.getAgent(); AlivcLog.enableUpload(true); AlivcLog.setUploadAppID(authInfo.getAppid()); this.mSophonEngine.joinChannel(info, userName); AlivcLog.i(TAG, "[API][End]joinChannel"); } @Override public void leaveChannel() { AlivcLog.i(TAG, "[API]leaveChannel"); leaveChannel(1000L); AlivcLog.i(TAG, "[API][End]leaveChannel"); } private void leaveChannel(long timeout) { AliRtcEngine.AliVideoCanvas canvas; AliRtcConfig aliRtcConfig; synchronized (this.mLock) { try { try { if (this.mSophonEngine != null) { if (!this.mApiPass) { AlivcLog.e(TAG, "leaveChannel double call, return it !"); return; } else { this.mApiPass = false; this.mSophonEngine.leaveChannel(timeout); this.mLock.wait(timeout); } } this.mApiPass = true; int cameraType = getPreCameraType(); canvas = this.mAliRtcConfig.getLocalVideoCanvas(); AliRtcConfig aliRtcConfig2 = new AliRtcConfig(); this.mAliRtcConfig = aliRtcConfig2; aliRtcConfig2.setCameraType(cameraType); aliRtcConfig = this.mAliRtcConfig; } catch (Exception e) { e.printStackTrace(); this.mApiPass = true; int cameraType2 = getPreCameraType(); canvas = this.mAliRtcConfig.getLocalVideoCanvas(); AliRtcConfig aliRtcConfig3 = new AliRtcConfig(); this.mAliRtcConfig = aliRtcConfig3; aliRtcConfig3.setCameraType(cameraType2); aliRtcConfig = this.mAliRtcConfig; } aliRtcConfig.setLocalVideoCanvas(canvas); } finally { this.mApiPass = true; int cameraType3 = getPreCameraType(); AliRtcEngine.AliVideoCanvas canvas2 = this.mAliRtcConfig.getLocalVideoCanvas(); AliRtcConfig aliRtcConfig4 = new AliRtcConfig(); this.mAliRtcConfig = aliRtcConfig4; aliRtcConfig4.setCameraType(cameraType3); this.mAliRtcConfig.setLocalVideoCanvas(canvas2); } } } @Override public boolean isInCall() { AliRtcConfig aliRtcConfig = this.mAliRtcConfig; if (aliRtcConfig != null) { boolean isIncall = aliRtcConfig.isInCall(); AlivcLog.i(TAG, "[API]isInCall:" + isIncall); return isIncall; } return false; } @Override public int enableHighDefinitionPreview(boolean enable) { SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine == null) { return -1; } int ret = sophonEngine.enableHighDefinitionPreview(enable); Log.e(TAG, "enableHighDefinitionPreview:" + ret); AlivcLog.i(TAG, "[API]enableHighDefinitionPreview:enable" + enable); return ret; } @Override public int setLocalViewConfig(AliRtcEngine.AliVideoCanvas viewConfig, AliRtcEngine.AliRtcVideoTrack track) { AlivcLog.e(TAG, "[API]setLocalViewConfig:viewConfig:" + viewConfig.toString() + "&&videoTrack:" + track); if (track != AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera) { AlivcLog.e(TAG, "[API][Result]setLocalViewConfig:viewConfig:" + viewConfig.toString() + "&&videoTrack:" + track + ":-1"); return -1; } if (viewConfig == null || (viewConfig.textureId == 0 && viewConfig.view == null)) { AlivcLog.e(TAG, "[API][Result]setLocalViewConfig:setLocalViewConfig:view is null:-1"); return -1; } boolean flip = getIsFlip(viewConfig.mirrorMode, getPreCameraType(), false); viewConfig.flip = flip; if (this.mAliRtcConfig.getLocalVideoCanvas() != null) { AlivcLog.d(TAG, "mAliRtcConfig getLocalVideoCanvas not null"); if (viewConfig.textureId != this.mAliRtcConfig.getLocalVideoCanvas().textureId || viewConfig.view != this.mAliRtcConfig.getLocalVideoCanvas().view) { AlivcLog.e(TAG, "mAliRtcConfig setLocalViewConfig addLocalDisplayWindow"); removeLocalDisplayWindow(); addLocalDisplayWindow(viewConfig); } else { updateDisplayWindow(viewConfig); } } this.mAliRtcConfig.setLocalVideoCanvas(viewConfig); AlivcLog.i(TAG, "[API][End][Result]setLocalViewConfig:0"); return 0; } @Override public int startPreview() { AlivcLog.i(TAG, "[API]startPreview"); if (this.mAliRtcConfig.getLocalVideoCanvas() == null) { AlivcLog.e(TAG, "[API][Result]startPreview: view is null error:-1"); return -1; } if (this.mAliRtcConfig.getLocalVideoCanvas().textureId == 0 && this.mAliRtcConfig.getLocalVideoCanvas().view == null) { AlivcLog.e(TAG, "[API][Result]startPreview: view is null error:-1"); return -1; } if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "[API][End][Result]startPreview: audio only mode error:-1"); return -1; } if (startCapture() != 0) { AlivcLog.e(TAG, "[API][End][Result]startPreview:startCapture error:-1"); return -1; } addLocalDisplayWindow(this.mAliRtcConfig.getLocalVideoCanvas()); AlivcLog.i(TAG, "[API][End][Result]startPreview:0"); return 0; } @Override public int stopPreview() { AlivcLog.i(TAG, "[API]stopPreview:"); removeLocalDisplayWindow(); stopCapture(); AlivcLog.i(TAG, "[API][End][Result]stopPreview:0"); return 0; } private int startCapture() { if (this.mSophonEngine == null) { AlivcLog.e(TAG, "startCapture: SDK is null"); return -1; } if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "startCapture: audio only mode"); return -1; } ALI_RTC_INTERFACE.AliCameraConfig config = new ALI_RTC_INTERFACE.AliCameraConfig(); config.video_source = this.mAliRtcConfig.getCameraType(); config.autoFocus = this.mAliRtcConfig.isCamAutoFocus(); config.flash = this.mAliRtcConfig.isCamFlash(); config.sharedContext = this.mAliRtcConfig.getSharedContext(); config.context = this.mContext; config.preferWidth = this.mAliRtcConfig.getCamVideoProfile().getWidth(); config.preferHeight = this.mAliRtcConfig.getCamVideoProfile().getHeight(); config.preferFps = this.mAliRtcConfig.getCamVideoProfile().getFPS(); this.mAliRtcConfig.setCameraOn(true); AlivcLog.i(TAG, "openCamera,config.video_source:" + config.video_source + "config.autoFocus:" + config.autoFocus + "config.flash:" + config.flash + "config.sharedContext:" + config.sharedContext + "config.context:" + config.context + "config.preferWidth:" + config.preferWidth + "config.preferHeight:" + config.preferHeight + "config.preferFps:" + config.preferFps); this.mSophonEngine.openCamera(config); return 0; } private int stopCapture() { AlivcLog.d(TAG, "stopCapture"); if (this.mSophonEngine == null) { AlivcLog.e(TAG, "stopCapture: SDK is null"); return -1; } if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "stopCapture: audio only mode"); return -1; } this.mAliRtcConfig.setCameraOn(false); this.mSophonEngine.closeCamera(); return 0; } @Override public int muteLocalCamera(boolean mute, AliRtcEngine.AliRtcVideoTrack track) { AlivcLog.i(TAG, "[API]muteLocalCamera:mute:" + mute + "&&VideoTrack:" + track); if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API][End][Result]muteLocalCamera: SDK is null:-1"); return -1; } if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "[API][End][Result]muteLocalCamera: audio only mode:-1"); return -1; } if (track.getValue() != AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera.getValue() && track.getValue() != AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth.getValue()) { StringBuilder sb = new StringBuilder(); sb.append("muteLocalCamera: error video track"); sb.append(track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera); sb.append(track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth); AlivcLog.e(TAG, sb.toString()); return -1; } this.mAliRtcConfig.setMuteLocalCameraVideo(mute); if (this.mAliRtcConfig.hasPublished()) { this.mSophonEngine.enableLocalVideo(ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge, !mute); if (this.mAliRtcConfig.isDualStream()) { this.mSophonEngine.enableLocalVideo(ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraSmall, !mute); } } AlivcLog.i(TAG, "[API][End][Result]muteLocalCamera:mute:0"); return 0; } @Override public boolean isCameraOn() { boolean bool = this.mAliRtcConfig.isCameraOn(); AlivcLog.i(TAG, "[API][Result]isCameraOn:" + bool); return bool; } @Override public int muteLocalMic(boolean mute) { AlivcLog.i(TAG, "[API]muteLocalMic:mute:" + mute); this.mAliRtcConfig.setMuteLocalMic(mute); if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API][Result]muteLocalMic: SDK is null&&mute:" + mute + "-1"); return -1; } if (this.mAliRtcConfig.hasPublished()) { this.mSophonEngine.enableLocalAudio(!mute); } AlivcLog.i(TAG, "[API][End][Result]muteLocalMic:0"); return 0; } @Override public void publish() { AlivcLog.i(TAG, "[API]publish"); if (!this.mAliRtcConfig.isInCall()) { AlivcLog.e(TAG, "[API]publish:not in call"); return; } if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API]publish:SDK is null"); return; } ALI_RTC_INTERFACE.AliPublishConfig publishConfig = getConfig(); if (!this.mAliRtcConfig.isPublishAudio() && ((!this.mAliRtcConfig.isPublishCameraTrack() && !this.mAliRtcConfig.isPublishScreenTrack()) || this.mAliRtcConfig.isAudioOnly())) { AlivcLog.i(TAG, "[API]unpublish"); this.mAliRtcConfig.setCameraOn(false); this.mSophonEngine.unpublish(); this.mAliRtcConfig.setLocalCallID(null, false); return; } if (TextUtils.isEmpty(this.mAliRtcConfig.getLocalCallID()) && !this.mAliRtcConfig.isPublishIsGoing()) { AlivcLog.i(TAG, "[API]publish"); this.mSophonEngine.publish(publishConfig); this.mAliRtcConfig.setPublishIsGoing(true); } else { AlivcLog.i(TAG, "[API]republish"); this.mSophonEngine.republish(publishConfig); } AliRtcConfig aliRtcConfig = this.mAliRtcConfig; aliRtcConfig.setCameraOn(aliRtcConfig.isPublishCameraTrack()); AlivcLog.i(TAG, "[API][End]publish"); } @Override public void setVideoProfile(AliRtcEngine.AliRtcVideoProfile profile, AliRtcEngine.AliRtcVideoTrack track) { AlivcLog.i(TAG, "[API]setVideoProfile:VideoProfile:" + profile.toString() + "&&VideoTrack:" + track); if (this.mAliRtcConfig.isAudioOnly()) { return; } if (track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth) { this.mAliRtcConfig.setCamVideoProfile(profile); this.mAliRtcConfig.setScreenVideoProfile(profile); } else if (track.getValue() == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera.getValue()) { AlivcLog.i(TAG, "setVideoProfileprofile:" + profile.getId() + "track:" + track.getValue()); this.mAliRtcConfig.setCamVideoProfile(profile); } else if (track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackScreen) { this.mAliRtcConfig.setScreenVideoProfile(profile); } AlivcLog.i(TAG, "[API][End]setVideoProfile"); } @Override public AliRtcEngine.AliRtcVideoProfile getVideoProfile(AliRtcEngine.AliRtcVideoTrack track) { AlivcLog.i(TAG, "[API]getVideoProfile:VideoTrack:" + track); AliRtcEngine.AliRtcVideoProfile ret = this.mAliRtcConfig.getCamVideoProfile(); if (track != AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth) { if (track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera) { ret = this.mAliRtcConfig.getCamVideoProfile(); } else if (track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackScreen) { ret = this.mAliRtcConfig.getScreenVideoProfile(); } } AlivcLog.i(TAG, "[API][End][Result]getVideoProfile:VideoTrack:" + track + LogUtils.COLON + ret.toString()); return ret; } @Override public int setRemoteViewConfig(AliRtcEngine.AliVideoCanvas canvas, String uid, AliRtcEngine.AliRtcVideoTrack track) { AlivcLog.i(TAG, "[API]setRemoteViewConfig:canvas:" + canvas.toString() + "&&uid:" + uid + "&&VideoTrack" + track); if (track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackNo || track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth) { AlivcLog.e(TAG, "[API][Result]setRemoteViewConfig: error video track:-1"); return -1; } if (canvas == null || (canvas.textureId == 0 && canvas.view == null)) { AlivcLog.e(TAG, "[API][Result]setRemoteViewConfig: canvas is null:-1"); return -1; } if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API][Result]setRemoteViewConfig: SDK is null:-1"); return -1; } RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant == null) { AlivcLog.e(TAG, "[API][Result]setRemoteViewConfig: remote user is null:-1"); return -1; } int sourceIndex = remoteParticipant.getSubVideoSurceIndex(track); if (sourceIndex == -1) { return 0; } if (canvas.textureId > 0 && remoteParticipant.getVideoCanvas(sourceIndex) != null && remoteParticipant.getVideoCanvas(sourceIndex).textureId == canvas.textureId) { if (track == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera) { removeRemoteDisplayWindow(remoteParticipant.getCallID(), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge); } else { removeRemoteDisplayWindow(remoteParticipant.getCallID(), ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_ScreenShare); } remoteParticipant.getVideoCanvas(sourceIndex).textureId = 0; } if (!this.mAliRtcConfig.isInCall()) { remoteParticipant.setVideoCanvas(track, canvas); return 0; } ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type vst = ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.values()[sourceIndex]; if (!TextUtils.isEmpty(remoteParticipant.getVideoSubscribed()[sourceIndex])) { boolean flip = getIsFlip(canvas.mirrorMode, getPreCameraType(), true); canvas.flip = flip; if (remoteParticipant.getVideoCanvas(sourceIndex) != null) { if (canvas.textureId != remoteParticipant.getVideoCanvas(sourceIndex).textureId || remoteParticipant.getVideoCanvas(sourceIndex).view != canvas.view) { AlivcLog.e(TAG, "setRemoteViewConfig: remove and add "); removeRemoteDisplayWindow(remoteParticipant.getCallID(), vst); addRemoteDisplayWindow(remoteParticipant.getCallID(), canvas, vst); } else { updateDisplayWindow(canvas); } } else { addRemoteDisplayWindow(remoteParticipant.getCallID(), canvas, vst); } remoteParticipant.setVideoCanvas(track, canvas); } AlivcLog.i(TAG, "[API][End][Result]setRemoteViewConfig:0"); return 0; } @Override public int muteRemoteAudioPlaying(String uid, boolean mute) { AlivcLog.i(TAG, "[API]muteRemoteAudioPlaying:uid:" + uid + "&&mute:" + mute); if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API][End][Result]muteRemoteAudioPlaying: SDK is null-1"); return -1; } RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant == null) { if (this.mAliRtcConfig.getRemoteParticipants() != null && this.mAliRtcConfig.getRemoteParticipants().size() > 0) { for (Map.Entry<String, RemoteParticipant> remoteParticipantEntry : this.mAliRtcConfig.getRemoteParticipants().entrySet()) { AlivcLog.e(TAG, "[API]muteRemoteAudioPlaying: mAliRtcConfig.getRemoteParticipants() uid is:" + remoteParticipantEntry.getKey() + ",value:" + remoteParticipantEntry.getValue()); } } AlivcLog.e(TAG, "[API][End][Result]muteRemoteAudioPlaying: remote user can not found user " + uid + ":-1"); return -1; } if (TextUtils.isEmpty(remoteParticipant.getCallID())) { AlivcLog.e(TAG, "[API][End][Result]muteRemoteAudioPlaying: callid is null:-1"); return -1; } if (remoteParticipant.isMuteAudioPlaying() != mute) { remoteParticipant.setMuteAudioPlaying(mute); this.mSophonEngine.enableRemoteAudio(remoteParticipant.getCallID(), !mute); } AlivcLog.i(TAG, "[API][End][Result]muteRemoteAudioPlaying:0"); return 0; } @Override public int subscribe(String uid) { AlivcLog.i(TAG, "[API]subscribe: uid:" + uid); if (this.mSophonEngine == null) { AlivcLog.e(TAG, "[API][End][Result]subscribe: SDK is null:-1"); return -1; } if (TextUtils.isEmpty(uid)) { AlivcLog.e(TAG, "[API][End][Result]subscribe: uid is null:-1"); return -1; } RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant == null) { AlivcLog.e(TAG, "[API][End][Result]subscribe: remote user is null:-1"); return -1; } if (TextUtils.isEmpty(remoteParticipant.getCallID())) { AlivcLog.e(TAG, "[API][End][Result]subscribe: remote callId is null:-1"); return -1; } ALI_RTC_INTERFACE.AliSubscribeConfig subscribeConfig = new ALI_RTC_INTERFACE.AliSubscribeConfig(); subscribeConfig.stream_label = remoteParticipant.getStreamLabel(); if (!this.mAliRtcConfig.isAudioOnly()) { subscribeConfig.video_track_labels = remoteParticipant.getAvailableVideoSubed(); subscribeConfig.audio_track_label = remoteParticipant.getAvailableAudioSubed(); } else { subscribeConfig.audio_track_label = remoteParticipant.getAvailableAudioSubed(); Arrays.fill(subscribeConfig.video_track_labels, ""); } if (RemoteParticipant.getAudioTrack(subscribeConfig.audio_track_label) == AliRtcEngine.AliRtcAudioTrack.AliRtcAudioTrackNo && RemoteParticipant.getVideoTrack(subscribeConfig.video_track_labels) == AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackNo) { AlivcLog.i(TAG, "unsubscribe callId: " + remoteParticipant.getCallID()); this.mSophonEngine.unsubscribe(remoteParticipant.getCallID()); return 0; } if (!remoteParticipant.isFirstSubscribe()) { AlivcLog.i(TAG, "subscribe callId: " + remoteParticipant.getCallID() + " reSubscribeConfig: " + getSubscribeConfigString(subscribeConfig)); this.mSophonEngine.resubscribe(remoteParticipant.getCallID(), subscribeConfig); return 0; } AlivcLog.i(TAG, "subscribe callId: " + remoteParticipant.getCallID() + " subscribeConfig: " + getSubscribeConfigString(subscribeConfig)); this.mSophonEngine.subscribe(remoteParticipant.getCallID(), subscribeConfig); remoteParticipant.setFirstSubscribe(false); AlivcLog.e(TAG, "[API][End][Result]subscribe: :0"); return 0; } @Override public void configLocalCameraPublish(boolean enable) { AlivcLog.e(TAG, "[API]configLocalCameraPublish:" + enable); this.mAliRtcConfig.setPublishCameraTrack(enable); AlivcLog.e(TAG, "[API][End]configLocalCameraPublish"); } @Override public boolean isLocalCameraPublishEnabled() { boolean bool = this.mAliRtcConfig.isPublishCameraTrack(); AlivcLog.e(TAG, "[API][Result]isLocalCameraPublishEnabled:" + bool); return bool; } @Override public void configLocalScreenPublish(boolean enable) { AlivcLog.e(TAG, "[API]configLocalScreenPublish:enable:" + enable); this.mAliRtcConfig.setPublishScreenTrack(enable); AlivcLog.e(TAG, "[API][End]configLocalScreenPublish"); } @Override public boolean isLocalScreenPublishEnabled() { AlivcLog.e(TAG, "[API]isLocalScreenPublishEnabled"); boolean bool = this.mAliRtcConfig.isPublishScreenTrack(); AlivcLog.e(TAG, "[API][End][Result]isLocalScreenPublishEnabled:" + bool); return bool; } @Override public void configLocalAudioPublish(boolean enable) { AlivcLog.e(TAG, "[API]configLocalAudioPublish:enable:" + enable); this.mAliRtcConfig.setPublishAudio(enable); AlivcLog.e(TAG, "[API][End]configLocalAudioPublish"); } @Override public boolean isLocalAudioPublishEnabled() { boolean bool = this.mAliRtcConfig.isPublishAudio(); AlivcLog.e(TAG, "[API][Result]isLocalAudioPublishEnabled:" + bool); return bool; } @Override public int configLocalSimulcast(boolean enable, AliRtcEngine.AliRtcVideoTrack track) { AlivcLog.i(TAG, "[API]configLocalSimulcast: enable:" + enable + "&&videoTrack: " + track.toString()); if (track != AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera) { AlivcLog.e(TAG, "configLocalSimulcast: error videoTrack"); return -1; } this.mAliRtcConfig.setDualStream(enable); AlivcLog.i(TAG, "[API][End][Result]configLocalSimulcast: enable:" + enable + "&&videoTrack: " + track.toString() + ":0"); return 0; } @Override public boolean isLocalSimulcastEnabled() { boolean bool = this.mAliRtcConfig.isDualStream(); AlivcLog.e(TAG, "[API][Result]isLocalSimulcastEnabled:" + bool); return bool; } @Override public void configRemoteAudio(String uid, boolean enable) { AlivcLog.i(TAG, "[API]configRemoteAudio:uid: " + uid + "&&enable: " + enable); if (uid == null && !isInCall()) { DefaultValueConstant.SUB_AUDIO = enable; return; } if (TextUtils.isEmpty(uid)) { AlivcLog.e(TAG, "configRemoteAudio: uid is null"); return; } RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant != null) { remoteParticipant.setAudioSubscribed(enable ? remoteParticipant.getAudioTrackLabel() : ""); remoteParticipant.setUcAudeoSubed(enable); } AlivcLog.i(TAG, "[API][End]configRemoteAudio"); } @Override public void configRemoteCameraTrack(String uid, boolean master, boolean enable) { AlivcLog.d(TAG, "[API]configRemoteCameraTrack uid: " + uid + "&&master: " + master + "&&enable: " + enable); if (uid == null && !isInCall()) { DefaultValueConstant.SUB_CAMERA_MASTER = master; DefaultValueConstant.SUB_CAMERA = enable; return; } if (TextUtils.isEmpty(uid)) { AlivcLog.e(TAG, "configRemoteCameraTrack: uid is null"); return; } RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant != null) { String[] videoTrackLabels = remoteParticipant.getVideoTrackLabels(); String[] videoSubscribed = remoteParticipant.getVideoSubscribed(); boolean supportSuper = DeviceConfig.isSupportSuperStream(); int bigIndex = ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge.ordinal(); int smallIndex = ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraSmall.ordinal(); int superIndex = ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraSuper.ordinal(); videoSubscribed[bigIndex] = ""; videoSubscribed[smallIndex] = ""; videoSubscribed[superIndex] = ""; if (enable) { if (master) { if (supportSuper) { if (!TextUtils.isEmpty(videoTrackLabels[superIndex])) { videoSubscribed[superIndex] = videoTrackLabels[superIndex]; } else { videoSubscribed[bigIndex] = videoTrackLabels[bigIndex]; } } else { videoSubscribed[bigIndex] = videoTrackLabels[bigIndex]; } } else { videoSubscribed[smallIndex] = videoTrackLabels[smallIndex]; } } remoteParticipant.setUcVideoSubed(enable); remoteParticipant.setUcVideoSubedMaster(master); AlivcLog.d(TAG, "[API][End]configRemoteCameraTrack"); } } @Override public void configRemoteScreenTrack(String uid, boolean enable) { AlivcLog.i(TAG, "[API]configRemoteScreenTrack uid: " + uid + "&&enable: " + enable); if (uid == null && !isInCall()) { DefaultValueConstant.SUB_SCREEN = enable; return; } if (TextUtils.isEmpty(uid)) { AlivcLog.e(TAG, "configRemoteScreenTrack: uid is null"); return; } RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant != null) { String[] videoTrackLabels = remoteParticipant.getVideoTrackLabels(); String[] videoSubscribed = remoteParticipant.getVideoSubscribed(); int screenIndex = ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_ScreenShare.ordinal(); videoSubscribed[screenIndex] = enable ? videoTrackLabels[screenIndex] : ""; remoteParticipant.setUcScreenSubed(enable); } AlivcLog.i(TAG, "[API][End]configRemoteScreenTrack"); } @Override public String[] getOnlineRemoteUsers() { ArrayList<String> arrayList = new ArrayList<>(); for (Map.Entry<String, RemoteParticipant> entry : this.mAliRtcConfig.getRemoteParticipants().entrySet()) { if (entry.getValue().isOnline()) { arrayList.add(entry.getKey()); } } String[] remoteUsers = new String[arrayList.size()]; AlivcLog.i(TAG, "[API][End]getOnlineRemoteUsers: " + arrayList.toArray(remoteUsers)); return (String[]) arrayList.toArray(remoteUsers); } @Override public AliRtcRemoteUserInfo getUserInfo(String uid) { AlivcLog.i(TAG, "[API]getUserInfo:uid:" + uid); RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); AliRtcRemoteUserInfo userInfo = null; if (remoteParticipant != null) { userInfo = new AliRtcRemoteUserInfo(); userInfo.setUserID(remoteParticipant.getUserID()); userInfo.setCallID(remoteParticipant.getCallID()); userInfo.setSessionID(remoteParticipant.getSessionID()); userInfo.setDisplayName(remoteParticipant.getDisplayName()); userInfo.setStreamLabel(remoteParticipant.getStreamLabel()); userInfo.setFirstSubscribe(remoteParticipant.isFirstSubscribe()); userInfo.setOnline(remoteParticipant.isOnline()); userInfo.setMuteAudioPlaying(remoteParticipant.isMuteAudioPlaying()); userInfo.setCameraCanvas(remoteParticipant.getCameraCanvas()); userInfo.setScreenCanvas(remoteParticipant.getScreenCanvas()); userInfo.setHasAudio(remoteParticipant.isHasAudioStream()); userInfo.setHasCameraMaster(remoteParticipant.isHasVideoSuperStream() || remoteParticipant.isHasVideoLargeStream()); userInfo.setHasCameraSlave(remoteParticipant.isHasVideoSmallStream()); userInfo.setHasScreenSharing(remoteParticipant.isHasScreenShareStream()); userInfo.setSubAudio(remoteParticipant.isAudioSubscribed()); userInfo.setSubCameraMaster(remoteParticipant.isSubVideoSuperStream() || remoteParticipant.isSubVideoLargeStream()); userInfo.setSubCamera(remoteParticipant.isVideoSubscribed()); userInfo.setSubScreenSharing(remoteParticipant.isSubShcreenShareStream()); userInfo.setRequestSubAudio(remoteParticipant.isUcAudeoSubed()); userInfo.setRequestCameraMaster(remoteParticipant.isUcVideoSubedMaster()); userInfo.setRequestCamera(remoteParticipant.isUcVideoSubed()); userInfo.setRequestScreenSharing(remoteParticipant.isUcScreenSubed()); AlivcLog.i(TAG, "[API][End][Result]getUserInfo:" + userInfo.toString()); } return userInfo; } @Override public boolean isUserOnline(String uid) { RemoteParticipant remoteParticipant = this.mAliRtcConfig.getRemoteParticipants().get(uid); if (remoteParticipant != null) { boolean bool = remoteParticipant.isOnline(); AlivcLog.i(TAG, "[API][End][Result]isUserOnline:uid: " + uid + LogUtils.COLON + bool); return bool; } return false; } @Override public int enableSpeakerphone(boolean enable) { AlivcLog.i(TAG, "[API]enableSpeakerphone:enable: " + enable); if (this.mSophonEngine == null) { AlivcLog.i(TAG, "[API][Result]enableSpeakerphone: SDK is null: -1"); return -1; } this.mAliRtcConfig.setSpeakerOn(enable); this.mSophonEngine.selectSpeakePhone(enable); this.mSophonEngine.setSpeakerStatus(enable); AlivcLog.i(TAG, "[API][End][Result]enableSpeakerphone:enable: 0"); return 0; } @Override public boolean isSpeakerOn() { AlivcLog.i(TAG, "[API]isSpeakerOn"); boolean bool = this.mAliRtcConfig.isSpeakerOn(); AlivcLog.i(TAG, "[API][End][Result]isSpeakerOn:" + bool); return bool; } @Override public int switchCamera() { SophonEngine sophonEngine; AlivcLog.i(TAG, "[API]switchCamera"); if (this.mAliRtcConfig.isAudioOnly() || (sophonEngine = this.mSophonEngine) == null) { return -1; } int ret = sophonEngine.switchCramer(); if (ret == 0) { if (this.mAliRtcConfig.getCameraType() == AliRtcEngine.AliRTCCameraType.AliRTCCameraBack.getCameraType()) { this.mAliRtcConfig.setCameraType(AliRtcEngine.AliRTCCameraType.AliRTCCameraFront.getCameraType()); } else { this.mAliRtcConfig.setCameraType(AliRtcEngine.AliRTCCameraType.AliRTCCameraBack.getCameraType()); } setLocalViewConfig(this.mAliRtcConfig.getLocalVideoCanvas(), AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera); } AlivcLog.i(TAG, "[API][End][Result]switchCamera:" + ret); return ret; } @Override public AliRtcEngine.AliRTCCameraType getCurrentCameraType() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]getCurrentCameraType"); AliRtcEngine.AliRTCCameraType aliRTCCameraType = AliRtcEngine.AliRTCCameraType.values()[this.mSophonEngine.getCaptureType().ordinal()]; AlivcLog.i(TAG, "[API][End][Result]getCurrentCameraType:" + aliRTCCameraType); return aliRTCCameraType; } return AliRtcEngine.AliRTCCameraType.AliRTCCameraInvalid; } @Override public void setPreCameraType(int faceTo) { AlivcLog.i(TAG, "[API]setPreCameraType:faceTo:" + faceTo); this.mAliRtcConfig.setCameraType(faceTo); AlivcLog.i(TAG, "[API][End]setPreCameraType"); } @Override public int getPreCameraType() { AlivcLog.i(TAG, "[API]getPreCameraType"); int camereType = this.mAliRtcConfig.getCameraType(); AlivcLog.i(TAG, "[API][End][Result]getPreCameraType:" + camereType); return camereType; } @Override public int setCameraZoom(float zoom, boolean flash, boolean autoFocus) { AlivcLog.i(TAG, "[API]setCameraZoom:zoom: " + zoom + "&&flash: " + flash + "&&autoFocus: " + autoFocus); if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "setCameraZoom: audio only mode"); return -1; } this.mAliRtcConfig.setCamZoom(zoom); this.mAliRtcConfig.setCamFlash(flash); this.mAliRtcConfig.setCamAutoFocus(autoFocus); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine != null) { sophonEngine.setFlash(this.mAliRtcConfig.isCamFlash()); this.mSophonEngine.setCameraZoom(this.mAliRtcConfig.getCamZoom()); } AlivcLog.i(TAG, "[API][End][Result]setCameraZoom:0"); return 0; } @Override public float getCameraZoom() { AlivcLog.i(TAG, "[API]getCameraZoom"); float camZoom = this.mAliRtcConfig.getCamZoom(); AlivcLog.d(TAG, "[API][End][Result]getCameraZoom:" + camZoom); return camZoom; } @Override public boolean isCameraFlash() { AlivcLog.i(TAG, "[API]isCameraFlash"); boolean isCamFlash = this.mAliRtcConfig.isCamFlash(); AlivcLog.i(TAG, "[API][End][Result]isCameraFlash:" + isCamFlash); return isCamFlash; } @Override public boolean isCameraAutoFocus() { AlivcLog.i(TAG, "[API]isCameraAutoFocus"); boolean isCamAutoFocus = this.mAliRtcConfig.isCamAutoFocus(); AlivcLog.i(TAG, "[API][End][Result]isCameraAutoFocus:" + isCamAutoFocus); return isCamAutoFocus; } @Override public boolean isCameraSupportFocusPoint() { if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "isCameraSupportFocusPoint: audio only mode"); return false; } if (this.mSophonEngine == null) { return false; } AlivcLog.i(TAG, "[API]isCameraSupportFocusPoint"); boolean isSupportFocusPoint = this.mSophonEngine.isCameraSupportFocusPoint(); AlivcLog.i(TAG, "[API][End][Result]isCameraSupportFocusPoint:" + isSupportFocusPoint); return isSupportFocusPoint; } @Override public boolean isCameraSupportExposurePoint() { if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "isCameraSupportExposurePoint: audio only mode"); return false; } if (this.mSophonEngine == null) { return false; } AlivcLog.i(TAG, "[API]isCameraSupportExposurePoint"); boolean isSupportExposurePoint = this.mSophonEngine.isCameraSupportExposurePoint(); AlivcLog.i(TAG, "[API][End][Result]isCameraSupportExposurePoint:" + isSupportExposurePoint); return isSupportExposurePoint; } @Override public int setCameraFocusPoint(float x, float y) { if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "setCameraFocusPoint: audio only mode"); return -1; } if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]setCameraFocusPoint:x:" + x + "&&y:" + y); this.mSophonEngine.setCameraFocusPoint(x, y); AlivcLog.i(TAG, "[API][End][Result]setCameraFocusPoint:0"); return 0; } return 0; } @Override public int setCameraExposurePoint(float x, float y) { if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.e(TAG, "setCameraExposurePoint: audio only mode"); return -1; } if (this.mSophonEngine == null) { return -1; } AlivcLog.i(TAG, "[API]setCameraExposurePoint:x:" + x + "&&y: " + y); this.mSophonEngine.setCameraExposurePoint(x, y); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]setCameraExposurePoint:"); sb.append(-1); AlivcLog.i(TAG, sb.toString()); return -1; } @Override public int setRecordingVolume(int volume) { if (this.mSophonEngine == null) { return 0; } AlivcLog.i(TAG, "[API]setRecordingVolume: volume:" + volume); int ret = this.mSophonEngine.setRecordingVolume(volume); return ret; } @Override public int setPlayoutVolume(int volume) { if (this.mSophonEngine == null) { return 0; } AlivcLog.i(TAG, "[API]setPlayoutVolume: volume:" + volume); int ret = this.mSophonEngine.setPlayoutVolume(volume); return ret; } @Override public void setLogLevel(AliRtcEngine.AliRtcLogLevel logLevel) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]setLogLevel:logLevel:" + logLevel); this.mSophonEngine.changeLogLevel(ALI_RTC_INTERFACE.AliRTCSDKLogLevel.values()[logLevel.ordinal()]); AlivcLog.i(TAG, "[API][End][Result]setLogLevel"); } } @Override public void uploadLog() { AlivcLog.i(TAG, "[API]uploadLog"); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine != null) { sophonEngine.uploadLop(); AlivcLog.i(TAG, "[API][End]uploadLog"); } } @Override public void setRtcEngineEventListener(AliRtcEngineEventListener listener) { if (listener != null) { StringBuilder sb = new StringBuilder(); sb.append("[API]setRtcEngineEventListener:listener:"); sb.append(listener != null ? listener.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mEventListener = listener; AlivcLog.i(TAG, "[API][End]setRtcEngineEventListener"); } } @Override public void setRtcEngineNotify(AliRtcEngineNotify engineNotify) { if (engineNotify != null) { StringBuilder sb = new StringBuilder(); sb.append("[API]setRtcEngineNotify:listener:"); sb.append(engineNotify != null ? engineNotify.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mNotifyListener = engineNotify; AlivcLog.i(TAG, "[API][End]setRtcEngineNotify"); } } @Override public void RegisterAudioObserver(ALI_RTC_INTERFACE.AliAudioType type, ALI_RTC_INTERFACE.AliAudioObserver observer) { if (this.mSophonEngine != null) { StringBuilder sb = new StringBuilder(); sb.append("[API]RegisterAudioObserver:AliAudioType:"); sb.append(type); sb.append("&&observer:"); sb.append(observer != null ? observer.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mSophonEngine.RegisterAudioObserver(type, observer); } } @Override public void UnRegisterAudioObserver(ALI_RTC_INTERFACE.AliAudioType type) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]UnRegisterAudioObserver:AliAudioType:" + type); this.mSophonEngine.UnRegisterAudioObserver(type); } } @Override public void RegisterVideoSampleObserver(final ALI_RTC_INTERFACE.AliVideoObserver observer) { if (this.mSophonEngine != null) { StringBuilder sb = new StringBuilder(); sb.append("[API]RegisterVideoSampleObserver:&&observer"); sb.append(observer != null ? observer.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mSophonEngine.RegisterVideoObserver(new ALI_RTC_INTERFACE.AliVideoObserver() { @Override public void onLocalVideoSample(ALI_RTC_INTERFACE.AliVideoSourceType sourceType, ALI_RTC_INTERFACE.AliVideoSample videoSample) { observer.onLocalVideoSample(sourceType, videoSample); } @Override public void onRemoteVideoSample(String callId, ALI_RTC_INTERFACE.AliVideoSourceType sourceType, ALI_RTC_INTERFACE.AliVideoSample videoSample) { observer.onRemoteVideoSample(callId, sourceType, videoSample); } }); } } @Override public void UnRegisterVideoSampleObserver() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]UnRegisterVideoSampleObserver"); this.mSophonEngine.UnRegisterVideoObserver(); } } @Override public void RegisterPreprocessVideoObserver(ALI_RTC_INTERFACE.AliDetectObserver observer) { StringBuilder sb = new StringBuilder(); sb.append("[API]RegisterPreprocessVideoObserver:observer: "); sb.append(observer != null ? observer.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine != null) { sophonEngine.RegisterPreprocessVideoObserver(observer); } AlivcLog.i(TAG, "[API][End]RegisterPreprocessVideoObserver"); } @Override public void UnRegisterPreprocessVideoObserver() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]UnRegisterPreprocessVideoObserver"); this.mSophonEngine.UnRegisterPreprocessVideoObserver(); AlivcLog.i(TAG, "[API][End]UnRegisterPreprocessVideoObserver"); } } @Override public void RegisterTexturePreObserver(String userId, final ALI_RTC_INTERFACE.AliTextureObserver observer) { if (this.mSophonEngine != null) { String callId = userId; if (userId != null && !userId.equals("") && this.mAliRtcConfig.getRemoteParticipants().get(userId) != null) { callId = this.mAliRtcConfig.getRemoteParticipants().get(userId).getCallID(); } StringBuilder sb = new StringBuilder(); sb.append("[API]RegisterTexturePreObserver:userId:"); sb.append(userId); sb.append("&&observer: "); sb.append(observer != null ? observer.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mSophonEngine.RegisterTexturePreObserver(callId, new ALI_RTC_INTERFACE.AliTextureObserver() { @Override public void onTextureCreate(String callId2, long context) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } observer.onTextureCreate(userId2, context); } @Override public int onTexture(String callId2, int textureId, int width, int height, int stride, int rotate, long extraData) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } return observer.onTexture(userId2, textureId, width, height, stride, rotate, extraData); } @Override public void onTextureDestroy(String callId2) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } observer.onTextureDestroy(userId2); } }); } } @Override public void UnRegisterTexturePreObserver(String callId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "UnRegisterTexturePreObserver: callID:" + callId); this.mSophonEngine.UnRegisterTexturePreObserver(callId); } } @Override public void RegisterTexturePostObserver(String userId, final ALI_RTC_INTERFACE.AliTextureObserver observer) { if (this.mSophonEngine != null) { String callId = userId; if (userId != null && !userId.equals("") && this.mAliRtcConfig.getRemoteParticipants().get(userId) != null) { callId = this.mAliRtcConfig.getRemoteParticipants().get(userId).getCallID(); } StringBuilder sb = new StringBuilder(); sb.append("[API]RegisterTexturePostObserver: userId:"); sb.append(userId); sb.append("&&observer: "); sb.append(observer != null ? observer.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mSophonEngine.RegisterTexturePostObserver(callId, new ALI_RTC_INTERFACE.AliTextureObserver() { @Override public void onTextureCreate(String callId2, long context) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } observer.onTextureCreate(userId2, context); } @Override public int onTexture(String callId2, int textureId, int width, int height, int stride, int rotate, long extraData) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } return observer.onTexture(userId2, textureId, width, height, stride, rotate, extraData); } @Override public void onTextureDestroy(String callId2) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } observer.onTextureDestroy(userId2); } }); } } @Override public void UnRegisterTexturePostObserver(String callId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]UnRegisterTexturePostObserver: callId:" + callId); this.mSophonEngine.UnRegisterTexturePostObserver(callId); } } @Override public void RegisterRGBAObserver(String userId, final ALI_RTC_INTERFACE.AliRenderDataObserver observer) { if (this.mSophonEngine != null) { String callId = userId; if (userId != null && !userId.equals("") && this.mAliRtcConfig.getRemoteParticipants().get(userId) != null) { callId = this.mAliRtcConfig.getRemoteParticipants().get(userId).getCallID(); } StringBuilder sb = new StringBuilder(); sb.append("[API]RegisterRGBAObserver: userId:"); sb.append(userId); sb.append("&&observer: "); sb.append(observer != null ? observer.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mSophonEngine.RegisterRGBAObserver(callId, new ALI_RTC_INTERFACE.AliRenderDataObserver() { @Override public void onRenderData(String callId2, long dataPtr, int format, int width, int height, int stride, int rotation, long extraData) { String userId2 = callId2; if (callId2 != null && !callId2.equals("") && AliRtcEngineImpl.this.findParticipantByCallID(callId2) != null) { userId2 = AliRtcEngineImpl.this.findParticipantByCallID(callId2).getUserID(); } observer.onRenderData(userId2, dataPtr, format, width, height, stride, rotation, extraData); } }); } } @Override public void UnRegisterRGBAObserver(String callId) { AlivcLog.i(TAG, "UnRegisterRGBAObserver observer: "); if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]UnRegisterRGBAObserver: callId:" + callId); this.mSophonEngine.UnRegisterRGBAObserver(callId); } } @Override public void enableBackgroundAudioRecording(boolean enable) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]enableBackgroundAudioRecording: enable:" + enable); this.mSophonEngine.enableBackgroundAudioRecording(enable); AlivcLog.i(TAG, "[API][End]enableBackgroundAudioRecording"); } } @Override public boolean isEnableBackgroundAudioRecording() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]isEnableBackgroundAudioRecording:"); boolean isEnable = this.mSophonEngine.isEnableBackgroundAudioRecording(); AlivcLog.i(TAG, "[API][End][Result]isEnableBackgroundAudioRecording:" + isEnable); return isEnable; } return false; } @Override public void setCollectStatusListener(CollectStatusListener collectStatusListener) { if (this.mSophonEngine != null) { StringBuilder sb = new StringBuilder(); sb.append("[API]setCollectStatusListener:collectStatusListener:"); sb.append(collectStatusListener != null ? collectStatusListener.hashCode() : 0); AlivcLog.i(TAG, sb.toString()); this.mSophonEngine.setCollectStatusListener(collectStatusListener); } } @Override public ALI_RTC_INTERFACE.VideoRawDataInterface registerVideoRawDataInterface(ALI_RTC_INTERFACE.AliRawDataStreamType streamType) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]registerVideoRawDataInterface:streamType:" + streamType); return this.mSophonEngine.registerVideoRawDataInterface(streamType); } return null; } @Override public void unRegisterVideoRawDataInterface(ALI_RTC_INTERFACE.AliRawDataStreamType streamType) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]unRegisterVideoRawDataInterface:streamType:" + streamType); this.mSophonEngine.unRegisterVideoRawDataInterface(streamType); } } public void configRemoteParticipantDefaultValues(RemoteParticipant info) { info.setUcAudeoSubed(DefaultValueConstant.SUB_AUDIO); info.setUcVideoSubed(DefaultValueConstant.SUB_CAMERA); info.setUcVideoSubedMaster(DefaultValueConstant.SUB_CAMERA_MASTER); info.setUcScreenSubed(DefaultValueConstant.SUB_SCREEN); } private ALI_RTC_INTERFACE.AliPublishConfig getConfig() { boolean camBig = false; boolean camSmall = false; boolean screen = false; boolean supportSuper = false; boolean audio = this.mAliRtcConfig.isPublishAudio(); boolean isDual = this.mAliRtcConfig.isDualStream(); if (!this.mAliRtcConfig.isAudioOnly()) { if (this.mAliRtcConfig.isPublishCameraTrack()) { if (DeviceConfig.isSupportSuperStream()) { supportSuper = true; camBig = true; } else { camBig = true; } if (isDual) { camSmall = true; } } if (this.mAliRtcConfig.isPublishScreenTrack()) { screen = true; } } ALI_RTC_INTERFACE.AliPublishConfig config = new ALI_RTC_INTERFACE.AliPublishConfig(); boolean[] videoTracks = new boolean[ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_MAX.getValue()]; videoTracks[ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge.ordinal()] = camBig; videoTracks[ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraSmall.ordinal()] = camSmall; videoTracks[ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_ScreenShare.ordinal()] = screen; videoTracks[ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraSuper.ordinal()] = supportSuper; config.audio_track = audio; config.video_tracks = videoTracks; int[] videoTrackProfile = new int[ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_MAX.getValue()]; int count = videoTracks.length; for (int i = 0; i < count; i++) { if (videoTracks[i]) { videoTrackProfile[i] = this.mAliRtcConfig.getCamVideoProfile().getId(); AlivcLog.i(TAG, "videotrack index : " + i + ", videoprofile : " + this.mAliRtcConfig.getCamVideoProfile().toString()); } } config.video_track_profile = videoTrackProfile; return config; } public RemoteParticipant findParticipantByCallID(String callID) { return this.mAliRtcConfig.getRemotePublishParticipants().get(callID); } public void addRemoteDisplayWindow(String callID, AliRtcEngine.AliVideoCanvas aliVideoCanvas, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type videoSourceType) { if (aliVideoCanvas == null || (aliVideoCanvas.textureId == 0 && aliVideoCanvas.view == null)) { AlivcLog.e(TAG, "addRemoteDisplayWindow: canvas is null"); return; } SophonEngine.AliRendererConfig aliRendererConfig = new SophonEngine.AliRendererConfig(); if (aliVideoCanvas.textureId > 0) { AlivcLog.e(TAG, "addRemoteDisplayWindow: videoCanvas.textureId != 0 videoCanvas.textureId is = " + aliVideoCanvas.textureId + "aliRendererConfig.sharedContext" + aliVideoCanvas.sharedContext); aliRendererConfig.textureId = aliVideoCanvas.textureId; aliRendererConfig.textureWidth = aliVideoCanvas.textureWidth; aliRendererConfig.textureHeight = aliVideoCanvas.textureHeight; aliRendererConfig.sharedContext = aliVideoCanvas.sharedContext; } else { SophonSurfaceView surfaceView = aliVideoCanvas.view; if (surfaceView != null) { aliRendererConfig.displayView = surfaceView; aliRendererConfig.width = surfaceView.getWidth(); aliRendererConfig.height = surfaceView.getHeight(); } } AliRtcEngine.AliRtcRenderMode renderMode = aliVideoCanvas.renderMode; aliRendererConfig.displayMode = renderMode.ordinal(); aliVideoCanvas.flip = getIsFlip(aliVideoCanvas.mirrorMode, getPreCameraType(), true); aliRendererConfig.flip = aliVideoCanvas.flip; aliRendererConfig.sharedContext = this.mAliRtcConfig.getSharedContext(); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine != null) { sophonEngine.addRemoteDisplayWindow(callID, videoSourceType, aliRendererConfig); } } public void removeRemoteNullTracksDisplayWindow(String callId, String[] videoTracks) { if (!TextUtils.isEmpty(callId) && videoTracks != null) { String allTracksStr = Arrays.toString(videoTracks); if (!allTracksStr.contains(ALI_RTC_INTERFACE.CAMERA_STRING) && !allTracksStr.contains(ALI_RTC_INTERFACE.SMALL_STRING) && !allTracksStr.contains(ALI_RTC_INTERFACE.SUPER_STRING)) { removeRemoteDisplayWindow(callId, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge); } if (!allTracksStr.contains(ALI_RTC_INTERFACE.SCREEN_STRING)) { removeRemoteDisplayWindow(callId, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_ScreenShare); } } } public void removeRemoteDisplayWindow(String callId, ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type videoSourceType) { SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine != null) { sophonEngine.removeRemoteDisplayWindow(callId, videoSourceType); } } public void addLocalDisplayWindow(AliRtcEngine.AliVideoCanvas videoCanvas) { if (videoCanvas.textureId <= 0 && videoCanvas.view == null) { AlivcLog.e(TAG, "addLocalDisplayWindow: canvas is null"); return; } SophonEngine.AliRendererConfig config = new SophonEngine.AliRendererConfig(); if (videoCanvas.textureId > 0) { AlivcLog.e(TAG, "addLocalDisplayWindow: videoCanvas.textureId != 0 videoCanvas.textureId is = " + videoCanvas.textureId + "videoCanvas.textureWidth:" + videoCanvas.textureWidth + "videoCanvas.textureHeight" + videoCanvas.textureHeight); config.textureId = videoCanvas.textureId; StringBuilder sb = new StringBuilder(); sb.append("addLocalDisplayWindow1: config.textureId is = "); sb.append(config.textureId); AlivcLog.e(TAG, sb.toString()); config.textureWidth = videoCanvas.textureWidth; config.textureHeight = videoCanvas.textureHeight; } else if (this.mAliRtcConfig.getLocalVideoCanvas().view != null) { config.displayView = this.mAliRtcConfig.getLocalVideoCanvas().view; config.width = config.displayView.getWidth(); config.height = config.displayView.getHeight(); AlivcLog.e(TAG, "addLocalDisplayWindow: textureId is = " + videoCanvas.textureId + " ,w:" + config.width + " ,h:" + config.height); } config.displayMode = videoCanvas.renderMode.ordinal(); videoCanvas.flip = getIsFlip(videoCanvas.mirrorMode, getPreCameraType(), false); config.flip = videoCanvas.flip; config.sharedContext = videoCanvas.sharedContext; config.enableBeauty = videoCanvas.enableBeauty; if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]addLocalDisplayWindow: VideSource_Type:" + ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge + "&&config:" + config.toString()); this.mSophonEngine.addLocalDisplayWindow(ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge, config); } } private void removeLocalDisplayWindow() { if (this.mAliRtcConfig.getLocalVideoCanvas() == null || (this.mAliRtcConfig.getLocalVideoCanvas().view == null && this.mAliRtcConfig.getLocalVideoCanvas().textureId <= 0)) { AlivcLog.e(TAG, "removeLocalDisplayWindow: canvas is null"); return; } if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]addLocalDisplayWindow: VideSource_Type:" + ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge); this.mSophonEngine.removeLocalDisplayWindow(ALI_RTC_INTERFACE.AliRTCSdk_VideSource_Type.AliRTCSDK_VideoSource_Type_CameraLarge); } } private void updateDisplayWindow(AliRtcEngine.AliVideoCanvas videoCanvas) { if (this.mSophonEngine != null) { SophonEngine.AliRendererConfig aliRendererConfig = new SophonEngine.AliRendererConfig(); aliRendererConfig.displayMode = videoCanvas.renderMode.ordinal(); if (videoCanvas.textureId > 0) { aliRendererConfig.textureId = videoCanvas.textureId; aliRendererConfig.textureWidth = videoCanvas.textureWidth; aliRendererConfig.textureHeight = videoCanvas.textureHeight; aliRendererConfig.width = videoCanvas.textureWidth; aliRendererConfig.height = videoCanvas.textureHeight; AlivcLog.e(TAG, "updateDisplayWindow videoCanvas.textureId" + videoCanvas.textureId); } if (videoCanvas.view != null) { aliRendererConfig.displayView = videoCanvas.view; aliRendererConfig.width = videoCanvas.view.getWidth(); aliRendererConfig.height = videoCanvas.view.getHeight(); AlivcLog.e(TAG, "updateDisplayWindow view != null"); } else { AlivcLog.e(TAG, "updateDisplayWindow view == null"); } aliRendererConfig.flip = videoCanvas.flip; AlivcLog.i(TAG, "[API][Callback]addLocalDisplayWindow: config:" + aliRendererConfig.toString()); this.mSophonEngine.updateDisplayWindow(aliRendererConfig); } } private boolean getIsFlip(AliRtcEngine.AliRtcRenderMirrorMode mirrorMode, int cameraType, boolean isRemote) { if (mirrorMode == null) { return true; } int i = AnonymousClass7.$SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcRenderMirrorMode[mirrorMode.ordinal()]; if (i != 1) { if (i != 2) { return false; } return true; } if (cameraType != AliRtcEngine.AliRTCCameraType.AliRTCCameraFront.getCameraType() || isRemote) { return false; } return true; } public String getSubscribeConfigString(ALI_RTC_INTERFACE.AliSubscribeConfig aliSubscribeConfig) { StringBuffer stringBuffer = new StringBuffer(); if (aliSubscribeConfig != null) { stringBuffer.append(aliSubscribeConfig.stream_label); stringBuffer.append(","); if (aliSubscribeConfig.video_track_labels != null) { for (int i = 0; i < aliSubscribeConfig.video_track_labels.length; i++) { stringBuffer.append(aliSubscribeConfig.video_track_labels[i]); stringBuffer.append(","); } } stringBuffer.append(aliSubscribeConfig.audio_track_label); } return stringBuffer.toString(); } public String getOsInfo() { JSONObject jsonObject = new JSONObject(); try { jsonObject.putOpt(AliRtcConstants.OS_NAME, AliRtcConstants.ANDROID); jsonObject.putOpt(AliRtcConstants.OS_SDK, Integer.valueOf(Build.VERSION.SDK_INT)); jsonObject.putOpt(AliRtcConstants.OS_VERSION, Build.VERSION.RELEASE); jsonObject.putOpt(AliRtcConstants.OS_CPUABI, Build.CPU_ABI); jsonObject.putOpt(AliRtcConstants.DEVICENAME, Build.MODEL); jsonObject.putOpt(AliRtcConstants.BRAND, Build.BRAND); jsonObject.putOpt(AliRtcConstants.PLATFORM, Build.HARDWARE); jsonObject.putOpt(AliRtcConstants.ACCESS, AliRtcEngineUtil.getNetWorkStatus(this.mContext)); jsonObject.putOpt(AliRtcConstants.CARRIER, AliRtcEngineUtil.getOperators(this.mContext)); jsonObject.putOpt(AliRtcConstants.CPU_TYPE, ""); jsonObject.putOpt(AliRtcConstants.UDID, UTDevice.getUtdid(this.mContext)); jsonObject.putOpt(AliRtcConstants.SCREEN_RESOLUTION, AliRtcEngineUtil.getWindowHeight(this.mContext) + "x" + AliRtcEngineUtil.getWindowWidth(this.mContext)); } catch (Exception e) { e.printStackTrace(); } return jsonObject.toString(); } @Override public void setTraceId(String traceId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]setTraceId: traceId:" + traceId); this.mSophonEngine.setTraceId(traceId); AlivcLog.i(TAG, "[API][End]setTraceId"); } } @Override public String getMediaInfoWithUserId(String userId, AliRtcEngine.AliRtcVideoTrack track, String[] keys) { AlivcLog.i(TAG, "[API]getMediaInfoWithUserId: &&userCallId" + userId + "&&traceId:" + track.toString() + "&&keys:" + Arrays.toString(keys)); String ret = null; if (this.mSophonEngine != null) { RemoteParticipant user = null; if (userId != null) { RemoteParticipant user2 = this.mAliRtcConfig.getRemoteParticipants().get(userId); user = user2; } String userCallId = user != null ? user.getCallID() : ""; if (TextUtils.isEmpty(userCallId)) { track = null; } String trackId = ""; if (track != null) { int i = AnonymousClass7.$SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcVideoTrack[track.ordinal()]; if (i == 1) { trackId = DeviceConfig.isSupportSuperStream() ? ALI_RTC_INTERFACE.SUPER_STRING : ALI_RTC_INTERFACE.CAMERA_STRING; } else if (i == 2 || i == 3) { trackId = ALI_RTC_INTERFACE.SCREEN_STRING; } } ret = this.mSophonEngine.getMediaInfo(userCallId, trackId, keys); } AlivcLog.i(TAG, "[API][End][Result]getMediaInfoWithUserId:" + ret); return ret; } @Override public int startAudioCapture() { AlivcLog.i(TAG, "[API]startAudioCapture"); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine == null) { return -1; } int ret = sophonEngine.startAudioCapture(); AlivcLog.i(TAG, "[API][End][Result]startAudioCapture:" + ret); return ret; } @Override public int stopAudioCapture() { AlivcLog.i(TAG, "[API]stopAudioCapture"); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine == null) { return -1; } int ret = sophonEngine.startAudioCapture(); AlivcLog.i(TAG, "[API][End][Result]stopAudioCapture:" + ret); return ret; } @Override public int startAudioPlayer() { AlivcLog.i(TAG, "[API]startAudioPlayer"); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine == null) { return -1; } int ret = sophonEngine.startAudioPlayer(); AlivcLog.i(TAG, "[API][End][Result]startAudioPlayer:" + ret); return ret; } @Override public int stopAudioPlayer() { AlivcLog.i(TAG, "[API]stopAudioPlayer"); SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine == null) { return -1; } int ret = sophonEngine.stopAudioPlayer(); AlivcLog.i(TAG, "[API][End][Result]stopAudioPlayer:" + ret); return ret; } @Override public void setDeviceOrientationMode(AliRtcEngine.AliRtcOrientationMode mode) { if (this.mSophonEngine != null) { AlivcLog.e(TAG, "[API]setDeviceOrientationMode: " + mode.ordinal()); ALI_RTC_INTERFACE.Ali_RTC_Device_Orientation_Mode ret = ALI_RTC_INTERFACE.Ali_RTC_Device_Orientation_Mode.Ali_RTC_Device_Orientation_0; int i = AnonymousClass7.$SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcOrientationMode[mode.ordinal()]; if (i == 1) { ret = ALI_RTC_INTERFACE.Ali_RTC_Device_Orientation_Mode.Ali_RTC_Device_Orientation_0; } else if (i == 2) { ret = ALI_RTC_INTERFACE.Ali_RTC_Device_Orientation_Mode.Ali_RTC_Device_Orientation_90; } else if (i == 3) { ret = ALI_RTC_INTERFACE.Ali_RTC_Device_Orientation_Mode.Ali_RTC_Device_Orientation_270; } else if (i == 4) { ret = ALI_RTC_INTERFACE.Ali_RTC_Device_Orientation_Mode.Ali_RTC_Device_Orientation_Adaptive; } this.mSophonEngine.setDeviceOrientationMode(ret); AlivcLog.e(TAG, "[API][End]setDeviceOrientationMode"); } } public static class AnonymousClass7 { static final int[] $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcOrientationMode; static final int[] $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcRenderMirrorMode; static final int[] $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcVideoTrack; static final int[] $SwitchMap$org$webrtc$alirtcInterface$ALI_RTC_INTERFACE$AliRTCMediaConnectionReConnectState; static { int[] iArr = new int[AliRtcEngine.AliRtcOrientationMode.values().length]; $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcOrientationMode = iArr; try { iArr[AliRtcEngine.AliRtcOrientationMode.AliRtcOrientationModePortrait.ordinal()] = 1; } catch (NoSuchFieldError e) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcOrientationMode[AliRtcEngine.AliRtcOrientationMode.AliRtcOrientationModeLandscapeLeft.ordinal()] = 2; } catch (NoSuchFieldError e2) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcOrientationMode[AliRtcEngine.AliRtcOrientationMode.AliRtcOrientationModeLandscapeRight.ordinal()] = 3; } catch (NoSuchFieldError e3) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcOrientationMode[AliRtcEngine.AliRtcOrientationMode.AliRtcOrientationModeAuto.ordinal()] = 4; } catch (NoSuchFieldError e4) { } int[] iArr2 = new int[AliRtcEngine.AliRtcVideoTrack.values().length]; $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcVideoTrack = iArr2; try { iArr2[AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera.ordinal()] = 1; } catch (NoSuchFieldError e5) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcVideoTrack[AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackScreen.ordinal()] = 2; } catch (NoSuchFieldError e6) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcVideoTrack[AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth.ordinal()] = 3; } catch (NoSuchFieldError e7) { } int[] iArr3 = new int[AliRtcEngine.AliRtcRenderMirrorMode.values().length]; $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcRenderMirrorMode = iArr3; try { iArr3[AliRtcEngine.AliRtcRenderMirrorMode.AliRtcRenderMirrorModeOnlyFront.ordinal()] = 1; } catch (NoSuchFieldError e8) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcRenderMirrorMode[AliRtcEngine.AliRtcRenderMirrorMode.AliRtcRenderMirrorModeAllEnabled.ordinal()] = 2; } catch (NoSuchFieldError e9) { } try { $SwitchMap$com$alivc$rtc$AliRtcEngine$AliRtcRenderMirrorMode[AliRtcEngine.AliRtcRenderMirrorMode.AliRtcRenderMirrorModeAllDisable.ordinal()] = 3; } catch (NoSuchFieldError e10) { } int[] iArr4 = new int[ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState.values().length]; $SwitchMap$org$webrtc$alirtcInterface$ALI_RTC_INTERFACE$AliRTCMediaConnectionReConnectState = iArr4; try { iArr4[ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState.AliRTC_MeidaConnection_ReConnect_Failed.ordinal()] = 1; } catch (NoSuchFieldError e11) { } try { $SwitchMap$org$webrtc$alirtcInterface$ALI_RTC_INTERFACE$AliRTCMediaConnectionReConnectState[ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState.AliRTC_MeidaConnection_ReConnect_Connected.ordinal()] = 2; } catch (NoSuchFieldError e12) { } try { $SwitchMap$org$webrtc$alirtcInterface$ALI_RTC_INTERFACE$AliRTCMediaConnectionReConnectState[ALI_RTC_INTERFACE.AliRTCMediaConnectionReConnectState.AliRTC_MeidaConnection_ReConnect_Connecting.ordinal()] = 3; } catch (NoSuchFieldError e13) { } } } @Override public int startAudioAccompany(String fileName, boolean onlyLocalPlay, boolean replaceMic, int loopCycles) { if (this.mSophonEngine != null) { AlivcLog.e(TAG, "[API]startAudioAccompany:fileName:" + fileName + "&&onlyLocalPlay:" + onlyLocalPlay + "&&replaceMic" + replaceMic + "&&loopCycles" + loopCycles); int ret = this.mSophonEngine.startAudioAccompany(fileName, onlyLocalPlay, replaceMic, loopCycles); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]startAudioAccompany:"); sb.append(ret); AlivcLog.i(TAG, sb.toString()); return ret; } return -1; } @Override public int stopAudioAccompany() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]stopAudioAccompany"); int ret = this.mSophonEngine.stopAudioAccompany(); AlivcLog.i(TAG, "[API][End]stopAudioAccompany:" + ret); return ret; } return -1; } @Override public int setAudioAccompanyVolume(int volume) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]setAudioAccompanyVolume:volume:" + volume); int ret = this.mSophonEngine.setAudioAccompanyVolume(volume); AlivcLog.i(TAG, "[API][End][Result]setAudioAccompanyVolume:" + ret); return ret; } return -1; } @Override public int setAudioAccompanyPublishVolume(int volume) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]setAudioAccompanyPublishVolume:volume:" + volume); int ret = this.mSophonEngine.SetAudioAccompanyPublishVolume(volume); AlivcLog.i(TAG, "[API][End][Result]setAudioAccompanyPublishVolume:" + ret); return ret; } return -1; } @Override public int getAudioAccompanyPublishVolume() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]GetAudioAccompanyPublishVolume"); int ret = this.mSophonEngine.GetAudioAccompanyPublishVolume(); AlivcLog.i(TAG, "[API][End][Result]GetAudioAccompanyPublishVolume:" + ret); return ret; } return -1; } @Override public int setAudioAccompanyPlayoutVolume(int volume) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]setAudioAccompanyPlayoutVolume:volume:" + volume); int ret = this.mSophonEngine.SetAudioAccompanyPlayoutVolume(volume); AlivcLog.i(TAG, "[API][End][Result]setAudioAccompanyPlayoutVolume:" + ret); return ret; } return -1; } @Override public int getAudioAccompanyPlayoutVolume() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]GetAudioAccompanyPlayoutVolume"); int ret = this.mSophonEngine.GetAudioAccompanyPlayoutVolume(); AlivcLog.i(TAG, "[API][End][Result]GetAudioAccompanyPlayoutVolume:" + ret); return ret; } return -1; } @Override public int pauseAudioAccompany() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]pauseAudioAccompany"); int ret = this.mSophonEngine.PauseAudioMixing(); AlivcLog.i(TAG, "[API][End][Result]pauseAudioAccompany:" + ret); return ret; } return -1; } @Override public int resumeAudioAccompany() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]resumeAudioAccompany"); int ret = this.mSophonEngine.ResumeAudioMixing(); AlivcLog.i(TAG, "[API][End][Result]resumeAudioAccompany:" + ret); return ret; } return -1; } @Override public int preloadAudioEffect(int soundId, String filePath) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]preloadAudioEffect:soundId:" + soundId + "&&filePath:" + filePath); int ret = this.mSophonEngine.PreloadAudioEffect(soundId, filePath); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]preloadAudioEffect:"); sb.append(ret); AlivcLog.i(TAG, sb.toString()); return ret; } return -1; } @Override public int unloadAudioEffect(int soundId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]UnloadAudioEffect:soundId:" + soundId); int ret = this.mSophonEngine.UnloadAudioEffect(soundId); AlivcLog.i(TAG, "[API][End][Result]UnloadAudioEffect:" + ret); return ret; } return -1; } @Override public int playAudioEffect(int soundId, String filePath, int cycles, boolean publish) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]playAudioEffect:soundId:" + soundId + "&&filePath:" + filePath + "&&cycles:" + cycles + "&&publish:" + publish); int ret = this.mSophonEngine.PlayAudioEffect(soundId, filePath, cycles, publish); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]playAudioEffect:"); sb.append(ret); AlivcLog.i(TAG, sb.toString()); return ret; } return -1; } @Override public int stopAudioEffect(int soundId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]StopAudioEffect:soundId:" + soundId); int ret = this.mSophonEngine.StopAudioEffect(soundId); AlivcLog.i(TAG, "[API][Result]StopAudioEffect:" + ret); return ret; } return -1; } @Override public int setAudioEffectPublishVolume(int soundId, int volume) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]SetAudioEffectPublishVolume:soundId:" + soundId + "&&volume" + volume); int ret = this.mSophonEngine.SetAudioEffectPublishVolume(soundId, volume); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]SetAudioEffectPublishVolume:"); sb.append(ret); AlivcLog.i(TAG, sb.toString()); return ret; } return -1; } @Override public int getAudioEffectPublishVolume(int soundId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]GetAudioEffectPublishVolume:soundId:" + soundId); int ret = this.mSophonEngine.GetAudioEffectPublishVolume(soundId); AlivcLog.i(TAG, "[API][End][Result]GetAudioEffectPublishVolume:" + ret); return ret; } return -1; } @Override public int setAudioEffectPlayoutVolume(int soundId, int volume) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]SetAudioEffectPlayoutVolume:soundId:" + soundId + "&&volume" + volume); int ret = this.mSophonEngine.SetAudioEffectPlayoutVolume(soundId, volume); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]SetAudioEffectPlayoutVolume:"); sb.append(ret); AlivcLog.i(TAG, sb.toString()); return ret; } return -1; } @Override public int getAudioEffectPlayoutVolume(int soundId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]GetAudioEffectPlayoutVolume:soundId:" + soundId); int ret = this.mSophonEngine.GetAudioEffectPlayoutVolume(soundId); AlivcLog.i(TAG, "[API][End][Result]GetAudioEffectPlayoutVolume:" + ret); return ret; } return -1; } @Override public int pauseAudioEffect(int soundId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]PauseAudioEffect:soundId:" + soundId); int ret = this.mSophonEngine.PauseAudioEffect(soundId); AlivcLog.i(TAG, "[API][End][Result]PauseAudioEffect:" + ret); return ret; } return -1; } @Override public int resumeAudioEffect(int soundId) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]ResumeAudioEffect:soundId:" + soundId); int ret = this.mSophonEngine.ResumeAudioEffect(soundId); AlivcLog.i(TAG, "[API][End][Result]ResumeAudioEffect:" + ret); return ret; } return -1; } @Override public int enableEarBack(boolean enable) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]EnableEarBack:enable:" + enable); int ret = this.mSophonEngine.EnableEarBack(enable); AlivcLog.i(TAG, "[API][End][Result]EnableEarBack:" + ret); return ret; } return -1; } @Override public int setEarBackVolume(int volume) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]SetEarBackVolume:volume:" + volume); int ret = this.mSophonEngine.SetEarBackVolume(volume); AlivcLog.i(TAG, "[API][End][Result]SetEarBackVolume:" + ret); return ret; } return -1; } @Override public int setChannelProfile(ALI_RTC_INTERFACE.AliRTCSDK_Channel_Profile channel_profile) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]SetChannelProfile:channel_profile:" + channel_profile.getValue()); int ret = this.mSophonEngine.SetChannelProfile(channel_profile); AlivcLog.i(TAG, "[API][End][Result]SetChannelProfile:" + ret); return ret; } return -1; } @Override public int setClientRole(ALI_RTC_INTERFACE.AliRTCSDK_Client_Role client_role) { SophonEngine sophonEngine = this.mSophonEngine; if (sophonEngine != null) { int ret = sophonEngine.SetClientRole(client_role); AlivcLog.i(TAG, "[API][Result]SetClientRole:client_role:" + client_role + LogUtils.COLON + ret); return ret; } return -1; } @Override public int generateTexture() { if (this.mSophonEngine == null) { return -1; } if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.i(TAG, "[API][Result]generateTexture: audio only mode error:-1"); return -1; } int ret = this.mSophonEngine.generateTexture(); AlivcLog.i(TAG, "generateTexture = " + ret); return ret; } @Override public int setTexture(AliRtcEngine.AliRtcTextureInfo textureInfo, int track, String userId) { if (this.mSophonEngine == null) { return -1; } if (textureInfo.textureId <= 0) { AlivcLog.i(TAG, "[API] setTexture invalid textureInfo id" + textureInfo.textureId); return -1; } if (this.mAliRtcConfig.isAudioOnly()) { AlivcLog.i(TAG, "[API][Result]setTexture: audio only mode error:-1"); return -1; } AliRtcEngine.AliVideoCanvas aliVideoCanvas = new AliRtcEngine.AliVideoCanvas(); aliVideoCanvas.textureId = textureInfo.textureId; aliVideoCanvas.textureWidth = 720; aliVideoCanvas.textureHeight = 1280; aliVideoCanvas.renderMode = AliRtcEngine.AliRtcRenderMode.AliRtcRenderModeAuto; aliVideoCanvas.mirrorMode = textureInfo.mirrorMode; aliVideoCanvas.view = null; AliRtcEngine.AliRtcRemoteTextureInfo aliRtcRemoteTextureInfo = new AliRtcEngine.AliRtcRemoteTextureInfo(); aliRtcRemoteTextureInfo.aliVideoCanvas = aliVideoCanvas; aliRtcRemoteTextureInfo.userId = userId; aliRtcRemoteTextureInfo.videoTrack = track; aliRtcRemoteTextureInfos.add(aliRtcRemoteTextureInfo); AlivcLog.i(TAG, "[API] setTexture uid = " + userId + " videoTrack" + track + "textureId" + textureInfo.textureId + "mirrorMode" + textureInfo.mirrorMode); StringBuilder sb = new StringBuilder(); sb.append("userId isEmpty = "); sb.append(TextUtils.isEmpty(userId)); Log.d(TAG, sb.toString()); if (TextUtils.isEmpty(userId)) { return setLocalViewConfig(aliVideoCanvas, swapTrack(track)); } return setRemoteViewConfig(aliVideoCanvas, userId, swapTrack(track)); } private static AliRtcEngine.AliRtcVideoTrack swapTrack(int track) { if (track == 0) { AliRtcEngine.AliRtcVideoTrack aliRtcVideoTrack = AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackNo; return aliRtcVideoTrack; } if (track == 1) { AliRtcEngine.AliRtcVideoTrack aliRtcVideoTrack2 = AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackCamera; return aliRtcVideoTrack2; } if (track == 2) { AliRtcEngine.AliRtcVideoTrack aliRtcVideoTrack3 = AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackScreen; return aliRtcVideoTrack3; } if (track == 4) { AliRtcEngine.AliRtcVideoTrack aliRtcVideoTrack4 = AliRtcEngine.AliRtcVideoTrack.AliRtcVideoTrackBoth; return aliRtcVideoTrack4; } throw new IllegalStateException("Unexpected value: " + track); } @Override public void removeTexture(int textureId) { if (this.mSophonEngine != null && !aliRtcRemoteTextureInfos.isEmpty()) { AliRtcEngine.AliRtcRemoteTextureInfo needRemoveTextureInfo = null; Iterator<AliRtcEngine.AliRtcRemoteTextureInfo> it = aliRtcRemoteTextureInfos.iterator(); while (it.hasNext()) { AliRtcEngine.AliRtcRemoteTextureInfo aliRtcRemoteTextureInfo = it.next(); if (aliRtcRemoteTextureInfo.aliVideoCanvas.textureId == textureId) { needRemoveTextureInfo = aliRtcRemoteTextureInfo; if (TextUtils.isEmpty(aliRtcRemoteTextureInfo.userId)) { setLocalViewConfig(aliRtcRemoteTextureInfo.aliVideoCanvas, swapTrack(aliRtcRemoteTextureInfo.videoTrack)); } else { setRemoteViewConfig(aliRtcRemoteTextureInfo.aliVideoCanvas, aliRtcRemoteTextureInfo.userId, swapTrack(aliRtcRemoteTextureInfo.videoTrack)); } } } aliRtcRemoteTextureInfos.remove(needRemoveTextureInfo); } } @Override public int startAudioFileRecording(String file_Name, AliRtcEngine.AliRtcAudioSampleRate sample_Rate, AliRtcEngine.AliRtcAudioCodecQualityType quality) { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]StartAudioFileRecording: filename:" + file_Name + " sample_Rate:" + sample_Rate + " quality:" + quality.getId()); int ret = this.mSophonEngine.StartAudioFileRecording(file_Name, sample_Rate.getId(), quality.getId()); StringBuilder sb = new StringBuilder(); sb.append("[API][End][Result]StartAudioFileRecording:"); sb.append(ret); AlivcLog.i(TAG, sb.toString()); return ret; } return -1; } @Override public int stopAudioFileRecording() { if (this.mSophonEngine != null) { AlivcLog.i(TAG, "[API]StopAudioFileRecording"); int ret = this.mSophonEngine.StopAudioFileRecording(); AlivcLog.i(TAG, "[API][End][Result]StopAudioFileRecording ret:" + ret); return ret; } return -1; } }