我正在使用PJSUA开发Android中的VOIP应用程序,这里我要静音调用
我正在阅读与PJSUA相关的文档,我发现用于此目的的方法但无法在Android APP中实现,请任何可以帮助我在静音模式下设置呼叫的人
这里我提供了PJSUA文档的详细信息,
pj_status_t pjsua_conf_adjust_rx_level (pjsua_conf_port_id slot,
float level )
通过使声音更大或更安静来调整从指定端口(到桥接器)接收的信号电平。
参数
- slot:会议桥插槽号。
- 级别:信号级别调整。值1.0表示没有级别调整,而值0表示静音端口。
返回
- PJ_SUCCESS成功或相应的错误代码。
我希望像这样的解决方案使用PJSUA在Android中保持调用
public void holdCall() {
CallOpParam prm = new CallOpParam(true);
try {
currentCall.setHold(prm);
} catch (Exception e) {
e.printStackTrace();
}
}
谢谢
答案 0 :(得分:2)
public void setMute(boolean mute) {
// return immediately if we are not changing the current state
CallInfo info;
try {
info = getCurrentCall().getInfo();
} catch (Exception exc) {
return;
}
for (int i = 0; i < info.getMedia().size(); i++) {
Media media = getCurrentCall().getMedia(i);
CallMediaInfo mediaInfo = info.getMedia().get(i);
if (mediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_AUDIO
&& media != null
&& mediaInfo.getStatus() == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE) {
AudioMedia audioMedia = AudioMedia.typecastFromMedia(media);
// connect or disconnect the captured audio
try {
AudDevManager mgr = MyApp.ep.audDevManager();
if (mute) {
mgr.getCaptureDevMedia().stopTransmit(audioMedia);
} else {
mgr.getCaptureDevMedia().startTransmit(audioMedia);
}
} catch (Exception exc) {
}
}
}
}
对于pjsip的支持,我们中的一个好人做得非常出色here。所以你可以看到代码。
享受您的代码时间:)
答案 1 :(得分:2)
我也正在开发一个pjsua应用程序。我在OS层设置静音,它运行良好。
find
顺便说一句,开启扬声器 - 同样的方式:
AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setMicrophoneMute(true);
即使我建议在每次通话前关闭扬声器并取消静音,因为其他一些拨号器应用程序在通话结束后也不会将其关闭。
答案 2 :(得分:1)
我找到了使用PJSUA进行静音和取消静音呼叫的解决方案 要了解pjsua功能,请访问该链接 enter link description here
CallInfo info;
try {
info = currentCall.getInfo();
} catch (Exception e) {
Log.e("Exception caught while getting call info.", e.toString());
return;
}
for (int i = 0; i < info.getMedia().size(); i++) {
Media media = currentCall.getMedia(i);
CallMediaInfo mediaInfo = info.getMedia().get(i);
if (mediaInfo.getType() == pjmedia_type.PJMEDIA_TYPE_AUDIO && media != null
&& mediaInfo.getStatus() == pjsua_call_media_status.PJSUA_CALL_MEDIA_ACTIVE) {
AudioMedia audioMedia = AudioMedia.typecastFromMedia(media);
try {
AudDevManager mgr = MyApp.ep.audDevManager();
if (isMute) {
mgr.getCaptureDevMedia().stopTransmit(audioMedia);
} else {
mgr.getCaptureDevMedia().startTransmit(audioMedia);
}
} catch (Exception e) {
Log.e("Exception caught while connecting audio media to sound device.", e.toString());
}
}