如何在 android 中静音 PJSUA 调用
How to mute PJSUA call in android
我正在 android 使用 PJSUA 开发 VOIP 应用程序,在这里我想静音通话
我正在阅读与 PJSUA 相关的文档,我找到了用于此目的但无法在 android APP 中实现的方法,请任何可以帮助我将呼叫设置为静音模式的人
这里我提供 PJSUA 文档中的详细信息,
pj_status_t pjsua_conf_adjust_rx_level (pjsua_conf_port_id slot,
float level )
调整从指定端口(到桥接器)接收的信号电平,使其更响亮或更安静。
Parameters
- slot: The conference bridge slot number.
- level: Signal level adjustment. Value 1.0 means no level adjustment, while value 0 means to mute the port.
Returns
- PJ_SUCCESS on success, or the appropriate error code.
我想要这样的解决方案来使用 PJSUA
在 android 中保持通话
public void holdCall() {
CallOpParam prm = new CallOpParam(true);
try {
currentCall.setHold(prm);
} catch (Exception e) {
e.printStackTrace();
}
}
谢谢
我找到了使用 PJSIP 静音和取消静音的解决方案
要了解有关 pjsip 功能的信息,请访问 link
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());
}
}
希望你一切顺利。因为我也是 android PJSUA 的新人。我阅读了更多有关使通话静音的文档。但我找到了一种可能的最佳解决方案,它在我的环境中运行良好,如下所示
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。这样你就可以看到代码了。
享受你的代码时间:)
我也在开发 pjsua 应用程序。我在 OS 图层上设置静音并且效果很好。
AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setMicrophoneMute(true);
顺便说一下,打开扬声器 - 同样的方法:
audioManager.setSpeakerphoneOn(true);
我什至建议在每次通话前关闭扬声器并取消静音,因为其他一些拨号器应用程序在通话结束后不会关闭它们。
我正在 android 使用 PJSUA 开发 VOIP 应用程序,在这里我想静音通话
我正在阅读与 PJSUA 相关的文档,我找到了用于此目的但无法在 android APP 中实现的方法,请任何可以帮助我将呼叫设置为静音模式的人
这里我提供 PJSUA 文档中的详细信息,
pj_status_t pjsua_conf_adjust_rx_level (pjsua_conf_port_id slot,
float level )
调整从指定端口(到桥接器)接收的信号电平,使其更响亮或更安静。
Parameters
- slot: The conference bridge slot number.
- level: Signal level adjustment. Value 1.0 means no level adjustment, while value 0 means to mute the port.
Returns
- PJ_SUCCESS on success, or the appropriate error code.
我想要这样的解决方案来使用 PJSUA
在 android 中保持通话public void holdCall() {
CallOpParam prm = new CallOpParam(true);
try {
currentCall.setHold(prm);
} catch (Exception e) {
e.printStackTrace();
}
}
谢谢
我找到了使用 PJSIP 静音和取消静音的解决方案 要了解有关 pjsip 功能的信息,请访问 link 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());
}
}
希望你一切顺利。因为我也是 android PJSUA 的新人。我阅读了更多有关使通话静音的文档。但我找到了一种可能的最佳解决方案,它在我的环境中运行良好,如下所示
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。这样你就可以看到代码了。
享受你的代码时间:)
我也在开发 pjsua 应用程序。我在 OS 图层上设置静音并且效果很好。
AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.setMicrophoneMute(true);
顺便说一下,打开扬声器 - 同样的方法:
audioManager.setSpeakerphoneOn(true);
我什至建议在每次通话前关闭扬声器并取消静音,因为其他一些拨号器应用程序在通话结束后不会关闭它们。