|
@@ -7,6 +7,7 @@ import com.util.LogUtil;
|
|
|
|
|
|
import java.util.concurrent.BlockingQueue;
|
|
|
import java.util.concurrent.LinkedBlockingQueue;
|
|
|
+import java.util.concurrent.TimeUnit;
|
|
|
|
|
|
import kr.co.icontrols.wallpadcall.MainActivity;
|
|
|
|
|
@@ -16,41 +17,124 @@ public class DataSender extends Thread {
|
|
|
|
|
|
public BlockingQueue<AVPacket> blockingQueue = new LinkedBlockingQueue<AVPacket>();
|
|
|
|
|
|
+ private boolean mbisClose = false;
|
|
|
+
|
|
|
+ private boolean isCallFront = false;
|
|
|
+
|
|
|
+ public boolean isCalledFront(){
|
|
|
+ return isCallFront;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean mbLoobyCalled = false;
|
|
|
+
|
|
|
+ public void InputData(AVPacket packet)
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ if(blockingQueue!=null && !mbisClose)
|
|
|
+ {
|
|
|
+ blockingQueue.put(packet);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void onClose(){
|
|
|
+ mbisClose = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ public void onCalledFront(){
|
|
|
+ Log.d(TAG, "jglee Remote onCalledFront()");
|
|
|
+ isCallFront = true;
|
|
|
+ }
|
|
|
+
|
|
|
+ public boolean isClose() {
|
|
|
+ Log.d(TAG, "jglee Remote isClose()");
|
|
|
+ boolean temp = mbisClose;
|
|
|
+ return temp;
|
|
|
+ };
|
|
|
+
|
|
|
+ public void Init()
|
|
|
+ {
|
|
|
+ mbisClose = false;
|
|
|
+ if(blockingQueue == null)
|
|
|
+ blockingQueue = new LinkedBlockingQueue<AVPacket>();
|
|
|
+ }
|
|
|
+
|
|
|
+ protected void Release()
|
|
|
+ {
|
|
|
+ Log.d(TAG, "jglee Remote Release()");
|
|
|
+ if(blockingQueue!=null)
|
|
|
+ blockingQueue.clear();
|
|
|
+ blockingQueue = null;
|
|
|
+
|
|
|
+ MainActivity.mRemoteCallController.sendCloseRemoteCall();
|
|
|
+ }
|
|
|
+
|
|
|
public void run() {
|
|
|
+
|
|
|
try {
|
|
|
- //Log.e(TAG, "DataSender =============== [1] ===============");
|
|
|
+ //String currentDate = new SimpleDateFormat("HH:mm:ss z yyyy", Locale.getDefault()).format(new Date());
|
|
|
+ //Log.d(TAG, "CallDataSender : Instance Start Time : " + currentDate);
|
|
|
VisitorCallLib mVisitorCallLib = VisitorCallLib.getInstance();
|
|
|
+ //currentDate = new SimpleDateFormat("HH:mm:ss z yyyy", Locale.getDefault()).format(new Date());
|
|
|
+ //Log.d(TAG, "CallDataSender : Instance Start Send Packet TIme : " + currentDate);
|
|
|
+// i= 0;
|
|
|
+// long Thread_ID = Thread.currentThread().getId();
|
|
|
+// int ThreadCount = Thread.activeCount();
|
|
|
for (;;) {
|
|
|
try {
|
|
|
- //Log.e(TAG, "DataSender =============== [2] ===============");
|
|
|
- AVPacket avPacket = blockingQueue.take();
|
|
|
- //Log.e(TAG, "DataSender =============== [3] ===============");
|
|
|
- if (mVisitorCallLib != null) {
|
|
|
-// Log.e(TAG, "DataSender =============== [3] ===============");
|
|
|
- //Log.d(TAG, "[DataSender.run()] ndkHandle [" + mVisitorCallLib.ndkHandle + "], avType [" + avPacket.avType + "], length [" + avPacket.length + "], frameType [" + avPacket.frameType + "]");
|
|
|
+ if(mbisClose)
|
|
|
+ {
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ AVPacket avPacket = null;
|
|
|
+
|
|
|
+ if (blockingQueue != null) {
|
|
|
+ if (!blockingQueue.isEmpty() ) avPacket = blockingQueue.poll(10, TimeUnit.MILLISECONDS);;//blockingQueue.take();
|
|
|
+ }
|
|
|
+
|
|
|
+// if (blockingQueue != null) {
|
|
|
+// if ( blockingQueue.size() > 0 ) avPacket = blockingQueue.poll(10, TimeUnit.MILLISECONDS);
|
|
|
+// }
|
|
|
+
|
|
|
+
|
|
|
+ if (avPacket != null && mVisitorCallLib != null) {
|
|
|
+// Log.d(TAG, "Count : " + ThreadCount + "ID : " + Thread_ID + ", jglee - CallDataSender********************************************************" + i++);
|
|
|
+// Log.d(TAG, "[DataSender.run()] ndkHandle [" + mVisitorCallLib.ndkHandle + "], avType [" + avPacket.avType + "], length [" + avPacket.length + "], frameType [" + avPacket.frameType + "]");
|
|
|
int sendMediaResult = mVisitorCallLib.SendMedia(mVisitorCallLib.ndkHandle, avPacket.avType, avPacket.data, avPacket.length, avPacket.frameType);
|
|
|
-// Log.d(TAG, "[DataSender.run()] EVENT_sendMediaResult [" + sendMediaResult + "]");
|
|
|
- if (sendMediaResult == -2) { // define.SendMediaFail
|
|
|
+ Log.d(TAG, "[DataSender.run()] EVENT_sendMediaResult [" + sendMediaResult + "]");
|
|
|
+ if (sendMediaResult == -2) {
|
|
|
+ // define.SendMediaFail
|
|
|
Log.w(TAG, "[DataSender.run()] RemoteCall SendMedia FAIL!!!");
|
|
|
MainActivity.mRemoteCallController.sendCloseRemoteCall();
|
|
|
break;
|
|
|
}
|
|
|
-// Log.e(TAG, "DataSender =============== [3-1] ===============");
|
|
|
}
|
|
|
+ } catch (RuntimeException re) {
|
|
|
+ Log.e(TAG, "[RuntimeException] DataSender.run()");
|
|
|
+ LogUtil.errorLogInfo("", TAG, re);
|
|
|
} catch (InterruptedException e) {
|
|
|
-// Log.e(TAG, "DataSender =============== [5] ===============");
|
|
|
Log.e(TAG, "[InterruptedException] DataSender.run()");
|
|
|
- //e.printStackTrace();
|
|
|
LogUtil.errorLogInfo("", TAG, e);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ Release();
|
|
|
+
|
|
|
} catch (RuntimeException re) {
|
|
|
+ Log.e(TAG, "[RuntimeException] DataSender.run()");
|
|
|
LogUtil.errorLogInfo("", TAG, re);
|
|
|
+ Release();
|
|
|
} catch (Exception e) {
|
|
|
-// Log.e(TAG, "DataSender =============== [6] ===============");
|
|
|
Log.e(TAG, "[Exception] DataSender.run()");
|
|
|
- //e.printStackTrace();
|
|
|
LogUtil.errorLogInfo("", TAG, e);
|
|
|
+ Release();
|
|
|
}
|
|
|
}
|
|
|
}
|