如何在pjsip android app中启用扬声器?

时间:2016-06-16 21:51:49

标签: android audio voip pjsip speaker

我正在尝试在我的pjsip应用中使用扬声器,所以我使用的是setOutputRoute:

pjmedia_aud_dev_route route = pjmedia_aud_dev_route.PJMEDIA_AUD_DEV_ROUTE_LOUDSPEAKER; MyApp.ep.audDevManager()。setOutputRoute(route,true);

但我收到错误:音频功能无效或不受支持(PJMEDIA_EAUD_INVCAP)。

在pjsua中它说:只有当设备在AudioDevInfo.caps标志中具有PJMEDIA_AUD_DEV_CAP_OUTPUT_ROUTE功能时,此方法才有效,否则将抛出错误。

我想也许我必须设置这个标志......但我不知道如何

2 个答案:

答案 0 :(得分:4)

前几天我遇到了同样的问题。我知道它不是答案,只是另一种选择,但我最终使用它并且它运作良好。

AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setSpeakerphoneOn(true);

我使用Android AudioManger通过调用 setSpeakerOn()在听筒和扬声器之间切换。如果您使用它,请注意,如果您切换输出,则其设置永久对应于上下文。您可以通过调用 audioManager.isSpeakerphoneOn()来获取当前状态。

答案 1 :(得分:0)

Pjsip/Pjsua 自 2.11 版起不支持以这种方式更改 Android 上的输出路由,但如果您总是希望声音在扬声器上播放,并作为媒体/音乐类型流,您可以更改 PJSIP 用于所有传出 android 音频的流类型。

要更改它,必须修改此文件中用于编译PJSIP的源代码;

pjmedia/src/pjmedia-audiodev/android_jni_dev.c

在创建 android 音轨时,更改此:

0, /* STREAM_VOICE_CALL */

为此:

3, /* STREAM_MUSIC */

这将导致音频作为媒体/音乐类型的音频播放,媒体/音乐的系统音量控制将控制它的音量。