Meeting SDK for Android API Reference
Loading...
Searching...
No Matches
ZoomSDKAudioRawDataHelper.java
Go to the documentation of this file.
1package us.zoom.sdk;
2
3import com.zipow.videobox.confapp.enums.CONF_CMD;
4
5import java.lang.ref.WeakReference;
6import java.nio.ByteBuffer;
7
8import us.zoom.common.crossplatform.cmmlib.BuildConfig;
9import us.zoom.core.helper.ZMLog;
10import us.zoom.internal.ErrorCodeMapping;
11import us.zoom.internal.RTCConference;
12import us.zoom.internal.event.RTCConferenceEventUI;
13import us.zoom.internal.event.RTCVideoRawDataDelegate;
14import us.zoom.internal.event.SDKConfUIEventHandler;
15import us.zoom.internal.helper.SDKMeetingInterfaceHelper;
16import us.zoom.internal.impl.ZoomSDKAudioRawDataSender;
17import us.zoom.internal.jni.helper.ZoomMeetingSDKBridgeHelper;
18
20
21 private static final String TAG = "ZoomSDKAudioRawDataHelper";
22 private WeakReference<IZoomSDKAudioRawDataDelegate> weakReference;
23
25
26 private RTCVideoRawDataDelegate rtcAudioRawDataDelegate;
27
28 SDKConfUIEventHandler.ISDKConfUIListener simpleConfUIListener = new SDKConfUIEventHandler.SimpleSDKConfUIListener() {
29 @Override
30 public boolean onConfStatusChanged2(int cmd, long ret) {
31 if (cmd == CONF_CMD.CMD_CONF_LEAVE_COMPLETE) {
33 } else if (cmd == CONF_CMD.CMD_CONF_SILENTMODE_CHANGED) {
34 if (SDKMeetingInterfaceHelper.isInSlientMode()) {
36 }
37 }
38 return true;
39 }
40 };
41
42 private void onConfLeave() {
44 SDKConfUIEventHandler.getInstance().removeListener(simpleConfUIListener);
45 virtualAudioMic=null;
46 }
47
48 RTCVideoRawDataDelegate.SimpleRTCVideoRawDataListener audioRawdataListener = new RTCVideoRawDataDelegate.SimpleRTCVideoRawDataListener() {
49
50 public void onUninitialize() {
51 if (null != virtualAudioMic) {
53 }
54 }
55
56 public void onDeviceInitialize(long nativeHandle) {
57 if (null != virtualAudioMic) {
58 IZoomSDKAudioRawDataSender sender = new ZoomSDKAudioRawDataSender(nativeHandle);
60 }
61 }
62
63 public void onStartSendData() {
64 if (null != virtualAudioMic) {
66 }
67 }
68
69 public void onStopSendData() {
70 if (null != virtualAudioMic) {
72 }
73 }
74
75 public void onDeviceUninitialize() {
76 if (null != virtualAudioMic) {
78 }
79 }
80 };
81
82 RTCConferenceEventUI.SimpleRTCConferenceEventUIListener eventUIListener = new RTCConferenceEventUI.SimpleRTCConferenceEventUIListener() {
83
84 @Override
85 public void onMixedAudioRawDataReceived(ByteBuffer buffer, int bufferLen, int sampleRate,int channel,long timeStamp, long nativeHandle) {
86
87 if (null != weakReference) {
89 if (null != dataDelegate) {
90 ZoomSDKAudioRawData rawData = new ZoomSDKAudioRawData(buffer, bufferLen, sampleRate,channel,timeStamp, nativeHandle);
91 dataDelegate.onMixedAudioRawDataReceived(rawData);
92 } else {
93 if (BuildConfig.LOG_ENABLE) {
94 ZMLog.d(TAG, "onMixedAudioRawDataReceived dataDelegate is null");
95 }
96 }
97 }
98 }
99
100 @Override
101 public void onOneWayAudioRawDataReceivedImpl(ByteBuffer buffer, int bufferLen, int sampleRate, int channel, int userId,long timeStamp, long nativeHandle) {
102 if (null != weakReference) {
103 IZoomSDKAudioRawDataDelegate dataDelegate = weakReference.get();
104 if (null != dataDelegate) {
105 ZoomSDKAudioRawData rawData = new ZoomSDKAudioRawData(buffer, bufferLen, sampleRate,channel,timeStamp,nativeHandle);
106 dataDelegate.onOneWayAudioRawDataReceived(rawData, userId);
107 } else {
108 if (BuildConfig.LOG_ENABLE) {
109 ZMLog.d(TAG, "onOneWayAudioRawDataReceivedImpl dataDelegate is null");
110 }
111 }
112 }
113 }
114
115 @Override
116 public void onShareAudioRawDataReceived(ByteBuffer buffer, int bufferLen, int sampleRate, int channel,long timeStamp, long userId, long nativeHandle) {
117 if (null != weakReference) {
118 IZoomSDKAudioRawDataDelegate dataDelegate = weakReference.get();
119 if (null != dataDelegate) {
120 ZoomSDKAudioRawData rawData = new ZoomSDKAudioRawData(buffer, bufferLen, sampleRate,channel,timeStamp, nativeHandle);
121 dataDelegate.onShareAudioRawDataReceived(rawData, userId);
122 } else {
123 if (BuildConfig.LOG_ENABLE) {
124 ZMLog.d(TAG, "onShareAudioRawDataReceived dataDelegate is null");
125 }
126 }
127 }
128 }
129 };
130
131
133
134 }
135
136 @Override
138 if (SDKMeetingInterfaceHelper.isInSlientMode()) {
140 }
141
142 if (null == RTCConference.getInstance()) {
144 }
145 RTCConferenceEventUI.getInstance().addListener(eventUIListener);
146 weakReference = new WeakReference<>(delegate);
147 int ret = RTCConference.getInstance().getAudioRawDataHelper().start();
148 MobileRTCRawDataError error= ErrorCodeMapping.mapping(ret);
149 ZoomMeetingSDKBridgeHelper.getInstance().trackingMSDKInteractEvent(TAG, "subscribe", error.ordinal());
150 return error;
151 }
152
153 @Override
155 if (null == RTCConference.getInstance()) {
157 }
158 RTCConferenceEventUI.getInstance().removeListener(eventUIListener);
159 weakReference = null;
160 int ret = RTCConference.getInstance().getAudioRawDataHelper().stop();
161 MobileRTCRawDataError error= ErrorCodeMapping.mapping(ret);
162 ZoomMeetingSDKBridgeHelper.getInstance().trackingMSDKInteractEvent(TAG, "unSubscribe", error.ordinal());
163 return error;
164 }
165
166 @Override
168 if (null == RTCConference.getInstance()) {
170 }
171
172 if (SDKMeetingInterfaceHelper.isInSlientMode()) {
174 }
175 if (this.virtualAudioMic == audioMic) {
177 }
178 this.virtualAudioMic = audioMic;
179
180 int result = 0;
181 if (null == audioMic) {
182 result = RTCConference.getInstance().getAudioRawDataHelper().setVirtualAudioMic(0);
184 } else {
185 rtcAudioRawDataDelegate = new RTCVideoRawDataDelegate(audioRawdataListener);
186 result = RTCConference.getInstance().getAudioRawDataHelper().setVirtualAudioMic(rtcAudioRawDataDelegate.getRecevHandle());
187 }
188 if (result != 0) {
189 this.virtualAudioMic = null;
190 }
191 MobileRTCRawDataError error= ErrorCodeMapping.mapping(result);
192 ZoomMeetingSDKBridgeHelper.getInstance().trackingMSDKInteractEvent(TAG, "setExternalAudioSource", error.ordinal());
193 return error;
194 }
195}
RTCConferenceEventUI.SimpleRTCConferenceEventUIListener eventUIListener
MobileRTCRawDataError unSubscribe()
unsubscribe audio raw data
WeakReference< IZoomSDKAudioRawDataDelegate > weakReference
SDKConfUIEventHandler.ISDKConfUIListener simpleConfUIListener
RTCVideoRawDataDelegate.SimpleRTCVideoRawDataListener audioRawdataListener
MobileRTCRawDataError subscribe(IZoomSDKAudioRawDataDelegate delegate)
subscribe audio raw data.
MobileRTCRawDataError setExternalAudioSource(IZoomSDKVirtualAudioMicEvent audioMic)
Set external audio source.
Zoom SDK audio raw data bean.
void onShareAudioRawDataReceived(ZoomSDKAudioRawData rawData, long userId)
share audio raw data received callback
void onOneWayAudioRawDataReceived(ZoomSDKAudioRawData rawData, int userId)
User audio raw data received callback.
void onMixedAudioRawDataReceived(ZoomSDKAudioRawData rawData)
mixed audio raw data received callback
void onMicStartSend()
Callback for virtual audio mic can send raw data with 'sender'.
void onMicInitialize(IZoomSDKAudioRawDataSender sender)
Callback for virtual audio mic to do some initialization.
void onMicStopSend()
Callback for virtual audio mic should stop send raw data.
void onMicUninitialized()
Callback for virtual audio mic is uninitialized.