setSpeakerphoneOn()不工作2.1,工作于2.3

setSpeakerphoneOn()不工作2.1,工作于2.3

问题描述:

我需要通过耳机播放一些音频。我正在使用AudioTrack在设备上播放一些声音。并且音频模式设置为STREAM_VOICE_CALL。 此外,在我的活动,扬声器被关闭:setSpeakerphoneOn()不工作2.1,工作于2.3

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()不应该被应用程序使用,因为它影响系统范围的电话状态。 here:http://code.google.com/p/sipdroid/issues/detail?id=270

任何帮助?

2.3以下,Android已与setSpeakerPhoneOn()有点小错误。根据this answer,我认为你需要使用两种API方法。

关于2.3音频根本不播放,请检查您的通话音量设置(将使用什么)。在使用setMode()之前,尝试并跟踪手机的状态,也可以在音频管理器不再使用时重新设置为MODE_NORMAL

+0

我确实将其设置回MODE_NORMAL。仍然是问题。 我想我必须忍受2.1版本的应用程序是2.3+还是bug。 setmode()根本不推荐用于这种应用程序(请查看我的问题编辑中的链接) – Alabhya 2012-04-19 18:52:05

+0

由于路由方法已过时,我不认为还有其他解决方案,除非您专门为2.2-使用它们。这可能是你使用手机的一个错误,顺便说一句,就像一个不完整的音频驱动程序或其他东西。 – 2012-04-19 19:00:38