pjsua2 Android를 사용하여 통화 보류 및 보류 해제
문제
저는 Android 빌드 버전 2.2.1에서 pjsua2를 사용하고 있습니다.다음을 사용하여 통화를 보류할 수 있습니다.
CallOpParam prm = new CallOpParam();
prm.setOptions(pjsua_call_flag.PJSUA_CALL_UPDATE_CONTACT.swigValue());
try {
currentCall.setHold(prm)
} catch(Exception e) {
e.printStackTrace();
}
통화 보류를 해제하려면 다음을 시도했지만 작동하지 않습니다.
CallOpParam prm = new CallOpParam();
prm.setOptions(pjsua_call_flag.PJSUA_CALL_UNHOLD.swigValue());
try {
currentCall.reinvite(prm);
} catch(Exception e) {
e.printStackTrace();
}
그거 pjsua 버그인가요?reinvite 메소드를 어떻게 호출해야 합니까?
해결책
내 코드를 보세요:
public void holdCall() {
CallOpParam prm = new CallOpParam(true);
try {
currentCall.setHold(prm);
} catch (Exception e) {
e.printStackTrace();
}
}
public void unHoldCall() {
CallOpParam prm = new CallOpParam(true);
prm.getOpt().setFlag(1);
try {
currentCall.reinvite(prm);
} catch (Exception e) {
e.printStackTrace();
}
}
에 따르면 이 문제, 플래그를 설정해야 합니다. CallOpParam
.
상수 PJSUA_CALL_UNHOLD == 1
, 하지만 사용할 수 없었습니다 PJSUA_CALL_UNHOLD
곧장.
저는 Asterisk를 사용하고 있는데 작동하고 있습니다.
다른 팁
To unhold the call I need this in version 2.4.5:
CallOpParam prm = new CallOpParam();
CallSetting opt = prm.getOpt();
opt.setAudioCount(1);
opt.setVideoCount(0);
opt.setFlag(pjsua_call_flag.PJSUA_CALL_UNHOLD.swigValue());
call.reinvite(prm);
Here is another example:
public void setHold(boolean hold) {
CallOpParam param = new CallOpParam();
try {
if (hold) {
setHold(param);
} else {
CallSetting opt = param.getOpt();
opt.setAudioCount(1);
opt.setVideoCount(0);
opt.setFlag(pjsua_call_flag.PJSUA_CALL_UNHOLD.swigValue());
reinvite(param);
}
} catch (Exception exc) {
String operation = hold ? "hold" : "unhold";
Logger.error(LOG_TAG, "Error : ", exc);
}
}
You can find here the full implementation.
제휴하지 않습니다 StackOverflow