0

我需要通过听筒播放一些音频。我正在使用 AudioTrack 在设备上播放一些声音。并且音频模式设置为 STREAM_VOICE_CALL。此外,在我的活动中,扬声器通过以下方式关闭:

AudioManager am;            
am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
am.setSpeakerphoneOn(false);

这似乎在 2.3 设备上完美运行。但是在 2.1 上,声音仍然从扬声器播放。

作为对此的修复,我尝试使用 setMode() 作为:

am.setMode(AudioManager.MODE_IN_CALL);

有了这个,声音通过听筒播放 2.1 和 2.3,但大多数时候 2.3 根本不播放。另外,我在某些地方读到 setMode() 不应该被应用程序使用,因为它会影响系统范围的电话状态。这里:http ://code.google.com/p/sipdroid/issues/detail?id=270

有什么帮助吗?

4

1 回答 1

0

在 2.3 以下,Android 的setSpeakerPhoneOn(). 根据这个答案,我认为您需要同时使用这两种 API 方法。

关于根本不播放 2.3 音频,请检查您的通话音量设置(将使用该设置)。尝试跟踪手机在使用前的状态,也许在音频管理器不再使用时setMode()将其设置回。MODE_NORMAL

于 2012-04-19T18:28:16.300 回答