setSpeakerphoneOn()在2.1上工作,工作在2.3

时间:2012-04-19 17:09:57

标签: android audio android-audiomanager audiotrack speakerphone

我需要通过耳机播放一些音频。我正在使用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

任何帮助?

1 个答案:

答案 0 :(得分:0)

2.3以下,Android setSpeakerPhoneOn()有点儿错误。根据{{​​3}},我认为您需要使用这两种API方法。

关于2.3根本没有播放的音频,请检查您的通话音量设置(将使用的是什么)。在使用setMode()之前,请尝试并跟踪手机所处的状态,一旦音频管理器不再使用,可能会将其重新设置为MODE_NORMAL