java - 在android中同时在外部扬声器上播放声音和在内部扬声器上进行主动通话

标签 java android audio playback

我正在构建一个在来电时播放背景音乐的应用程序。

当我接到来电时,它可以正常工作,但它会在外部扬声器上启动音乐,但是当我接听电话时,我的setSpeakerphoneOn(true)可以在外部扬声器上播放音乐和 call 者语音,但麦克风无法拾取该播放声音,只能拾取我的声音。

我在哪里错我不知道。任何人都知道,请让我知道。我会很感激。

m_audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
Log.d("Is phone speaker : ","IDLE-1-->"+ m_audioManager.isSpeakerphoneOn());
m_audioManager.setMode(AudioManager.MODE_IN_CALL);    
m_audioManager.setSpeakerphoneOn(true); 
RecieverDialog.mp.start();

最佳答案

通过电话扬声器播放音频并通过电话麦克风录制的任何音频质量都会很差,因为电话扬声器通常效果不佳,而且您很少处于无噪音,无回声的环境中。

至于为什么在您的用例中音乐被静音或严重衰减:您的手机可能正在使用两个(或更多)麦克风进行噪声抑制,其中来自一个麦克风的信号可用作噪声中的一种引用。您周围的环境。
该算法的目标是消除所有周围的噪音,以便通话另一端的人只能听到您的声音。根据麦克风的位置和算法的调整,您正在播放的音乐可能被认为是噪声,因此在上行链路信号中被抑制。

关于java - 在android中同时在外部扬声器上播放声音和在内部扬声器上进行主动通话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13084853/

相关文章:

ios - 在带有WiFi的iOS设备上同步音频的最佳方法是什么?

vb.net - 为什么要写入 BinaryWriter 两次?

android - 在Android中支持对视频文件进行编码/解码

java - 如何检查一个类是否扩展了另一个

java - 流口水正则表达式来匹配非 Alpha

java - 在不改变分辨率的情况下缩小大 JPEG 的大小

android - 清理未使用的 Android 权限

java - Android AutoCompleteTextView 显示错误的建议

java - Activity 间数据绑定(bind)的两种方式

android - Android 中通信(客户端/服务器)时屏幕暂停