📄 vojxtacallcontrol.java
字号:
return rtn; } /** * Statistical accessor */ public int getIncomingBufferSize () { return speakerControl.getBufferSize (); } /** * Statistical accessor */ public int getIncomingBufferCapacity () { return speakerControl.getBufferCapacity (); } /** * Statistical accessor */ public int getOutgoingBufferSize () { return micControl.getBufferSize (); } /** * Statistical accessor */ public int getOutgoingBufferCapacity () { return micControl.getBufferCapacity (); } /** * Command StartAccept received from remote */ protected void localActionStartAcceptReceived (DialogMessage msg) { MessageElement me = msg.getMessageElement (this.TAG_QUALITY_ELEMENT); if(me != null) { ByteArrayMessageElement remoteVoiceQualityElement = (ByteArrayMessageElement) me; String remoteVoiceQualityString = remoteVoiceQualityElement.toString (); if( remoteVoiceQualityString != null) { setRemoteVoiceQuality (remoteVoiceQualityString); } } } /** * Command SendStartRquest to remote. */ protected void localActionSendStartRequest () { /* DialogMessage startRequestMsg = (DialogMessage)templateMessage.clone (); StringMessageElement commandElement = new StringMessageElement ( TAG_SESSION_COMMAND, this.COMMAND_VOJXTA_START_REQUEST, null); startRequestMsg.addMessageElement (TAG_SESSION_COMMAND, commandElement); String voiceQualityString = String.valueOf (getLocalVoiceQuality ()); StringMessageElement voiceQualityElement = new StringMessageElement ( TAG_QUALITY_ELEMENT, voiceQualityString, null); startRequestMsg.addMessageElement (TAG_QUALITY_ELEMENT, voiceQualityElement); this.vojxtaDialog.dispatch (startRequestMsg); */ String voiceQualityString = String.valueOf (getLocalVoiceQuality ()); StringMessageElement voiceQualityElement = new StringMessageElement ( TAG_QUALITY_ELEMENT, voiceQualityString, null); HashMap elementMap = new HashMap (); elementMap.put (TAG_QUALITY_ELEMENT,voiceQualityElement); sendCommand (this.COMMAND_VOJXTA_START_REQUEST, this.COMMAND_VOJXTA_START_ACCEPT, elementMap); setProtocolState (this.SESSION_VOJXTA_START_REQUEST_SENT); } /** * Command StartRquest received from remote */ protected void localActionStartRequestReceived (DialogMessage msg) { /** retrieve the quality element */ MessageElement me = msg.getMessageElement (this.TAG_QUALITY_ELEMENT); if(me != null) { ByteArrayMessageElement remoteVoiceQualityElement = (ByteArrayMessageElement) me; String remoteVoiceQualityString = remoteVoiceQualityElement.toString (); if( remoteVoiceQualityString != null) { setRemoteVoiceQuality (remoteVoiceQualityString); } /** determine who has the lowest quality and send to remote */ String commonVoiceQualityString = String.valueOf (getMinimumVoiceQuality ()); /* DialogMessage startAcceptMsg = (DialogMessage)templateMessage.clone (); StringMessageElement commandElement = new StringMessageElement ( TAG_SESSION_COMMAND, this.COMMAND_VOJXTA_START_ACCEPT, null); startAcceptMsg.addMessageElement (TAG_SESSION_COMMAND, commandElement); StringMessageElement voiceQualityElement = new StringMessageElement ( TAG_QUALITY_ELEMENT, commonVoiceQualityString, null); startAcceptMsg.addMessageElement (TAG_QUALITY_ELEMENT, voiceQualityElement); this.vojxtaDialog.dispatch (startAcceptMsg); */ StringMessageElement voiceQualityElement = new StringMessageElement ( TAG_QUALITY_ELEMENT, commonVoiceQualityString, null); HashMap elementMap = new HashMap (); elementMap.put (TAG_QUALITY_ELEMENT, voiceQualityElement); sendCommand (this.COMMAND_VOJXTA_START_ACCEPT, null, elementMap); setProtocolState (this.SESSION_VOJXTA_START_ACCEPT_SENT); }else{ if(LOG.isEnabledFor (Level.INFO) ){ LOG.info ("remote voice quality element is NULL"); } } } /** * Sets if this sesseion is to be persisted * TODO */ public void setPersistSession (boolean persist, String fileName) { this.sessionPersisted = persist; this.sessionFileName = fileName; } /** * determines if this audio session is to be persisted */ public boolean isSessionPersisted () { return this.sessionPersisted; } /** * Return the file name to which we persist this audio session */ public String getSessionPersistFileName () { return this.sessionFileName; } /** * Called by UI to alert us to start this audio call */ public void viewActionPlaceCall () { sendCommand (this.COMMAND_VOJXTA_INVITE_REQUEST,this.COMMAND_VOJXTA_INVITE_ACCEPT); setProtocolState (this.SESSION_VOJXTA_INVITE_REQUEST_SENT); } /** * Command EndCall reveived from remote peer */ private void localActionEndCall () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("localActionEndCall"); } setCallEndTime (); receiveTimeoutThread.stopThread (); if(micControl != null) { micControl.endMic (); micControl.releaseHardware (); } if(speakerControl != null) { speakerControl.endSpeaker (); speakerControl.releaseHardware (); } } /** * start the audio controls for sending and receiving */ private void localActionStartVoiceTransmision () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("localActionStartVoiceTransmision"); } setCallStartTime (); micControl.beginMic (); speakerControl.beginSpeaker (); receiveTimeoutThread = new ReceivedMessageTimeoutThread (); receiveTimeoutThread.start (); } /** * Sets the time in ms this call started */ protected void setCallStartTime () { this.callStartTime = System.currentTimeMillis (); } /** * Sets the time in ms this call ended */ protected void setCallEndTime () { this.callEndTime = System.currentTimeMillis (); } /** * Command HoldCall reveived from remote */ private void localActionHoldCall (boolean myHold) { micControl.pauseMic (); speakerControl.pauseSpeaker (); } /** * Command Resume call received from remote */ /** * Command ResumeCall received from remote */ private void localActionResumeCall () { micControl.resumeMic (); speakerControl.resumeSpeaker (); } /** * Command EndSession received from remote */ private void localActionEndSession () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("localActionEndSession"); } if(receiveTimeoutThread != null) { receiveTimeoutThread.stopThread (); } if(micControl != null) { micControl.endMic (); micControl.releaseHardware (); } if(speakerControl != null) { speakerControl.endSpeaker (); speakerControl.releaseHardware (); } } /** * Called from UI signaling user accepts call invitation */ public void viewActionAcceptCall () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("viewActionAcceptCall"); } sendCommand (this.COMMAND_VOJXTA_INVITE_ACCEPT, null); setProtocolState (this.SESSION_VOJXTA_INVITE_ACCEPT_SENT); } /** * Called from IU signaling user wishes to place call on hold. */ public void viewActionHoldCall () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("viewActionHoldCall"); } sendCommand (this.COMMAND_VOJXTA_HOLD_REQUEST, this.COMMAND_VOJXTA_HOLD_ACCEPT); setProtocolState (this.SESSION_VOJXTA_HOLD_REQUEST_SENT); } /** * Called from IU signaling user wishes to hangup call. */ public void viewActionHangupCall () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("viewActionHangupCall"); } sendCommand (this.COMMAND_VOJXTA_HANGUP_REQUEST,this.COMMAND_VOJXTA_HANGUP_ACCEPT); setProtocolState (this.SESSION_VOJXTA_HANGUP_REQUEST_SENT); setCallEndTime (); micControl.endMic (); micControl.releaseHardware (); speakerControl.endSpeaker (); speakerControl.releaseHardware (); } /** * Called from IU signaling user wishes to resume a call previsously placed * on hold. */ public void viewActionResumeCall () { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("viewActionResumeCall"); } sendCommand (this.COMMAND_VOJXTA_RESUME_REQUEST,this.COMMAND_VOJXTA_RESUME_ACCEPT); setProtocolState (this.SESSION_VOJXTA_RESUME_REQUEST_SENT); } private void sendCommand (String command,String ackCommand) { sendCommand (command,ackCommand, null); } /** * Sends a command on the vojxta dialog pipe. This does not change the * Protocol state. We have to remember to do this ourselves. * */ private void sendCommand (String command,String ackCommand, HashMap elementMap ) { if (LOG.isEnabledFor (Level.INFO)) { LOG.info ("sendCommand : "+ command);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -