Android SIP通话无音频问题技术求助:POC项目双向无声音故障排查
嘿,我碰到过不少类似的SIP音频坑,咱们一步步来排查解决:
1. 先补全必要的权限
你提供的清单片段里只提到了minSdkVersion,但SIP通话依赖关键权限,缺了这些肯定没音频。把下面的权限加到你的AndroidManifest.xml里:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.USE_SIP" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 声明硬件依赖,确保设备支持 --> <uses-feature android:name="android.hardware.sip.voip" android:required="true" /> <uses-feature android:name="android.hardware.microphone" android:required="true" />
另外,Android 6.0及以上系统,你还得在代码里动态申请RECORD_AUDIO和MODIFY_AUDIO_SETTINGS这两个危险权限,不然权限会被拒绝。
2. 强制配置音频路由与焦点
SIP通话需要把系统音频切换到「通话模式」,不然音频会走普通媒体通道,导致没声音。在发起呼叫/接听呼叫的代码里加上这段:
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); // 保存当前音频模式,通话结束后恢复 int originalAudioMode = audioManager.getMode(); // 切换到通话专用模式 audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION); // 请求音频焦点,确保通话优先 int focusResult = audioManager.requestAudioFocus( null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT ); if (focusResult != AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { // 处理焦点获取失败的情况,比如提示用户关闭其他音频应用 return; } // 可选:开启扬声器(如果需要免提),或者设为false用听筒 audioManager.setSpeakerphoneOn(true);
通话结束后一定要记得恢复音频设置:
audioManager.setMode(originalAudioMode); audioManager.abandonAudioFocus(null); audioManager.setSpeakerphoneOn(false);
3. 检查SIP会话的音频初始化
在通话建立的回调里,必须手动启动音频流并解锁麦克风:
@Override public void onCallEstablished(SipAudioCall call) { try { // 绑定音频模式 call.setAudioMode(AudioManager.MODE_IN_COMMUNICATION); // 启动音频传输 call.startAudio(); // 确保麦克风没被静音 call.setMicrophoneMute(false); } catch (IOException e) { e.printStackTrace(); call.close(); } }
至于设备A没有拨号音的问题:系统默认的拨号音可能因为音频模式没切换而无法播放,你可以手动添加一个音频文件,在发起呼叫时用MediaPlayer播放。
4. 硬件与系统设置排查
- 先确认两台设备的麦克风、扬声器正常(录一段音/播放音乐测试)
- 检查设备的通话音量是否调大,有没有开启静音
- 部分设备可能需要在系统设置里启用「VoIP通话音频权限」,去设置里找找相关选项
内容的提问来源于stack exchange,提问作者Pieter Du Toit
相关产品推荐
相关产品推荐

