【问题标题】:setSpeakerphoneOn() not working on 2.1, working on 2.3setSpeakerphoneOn() 不能在 2.1 上工作,在 2.3 上工作
【发布时间】:2012-04-19 17:09:56
【问题描述】:

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

有什么帮助吗?

【问题讨论】:

    标签: android audio android-audiomanager audiotrack speakerphone


    【解决方案1】:

    在 2.3 以下,Android 与setSpeakerPhoneOn() 存在一些问题。根据this answer,我认为您需要同时使用这两种 API 方法。

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

    【讨论】:

    • 我确实将其设置回 MODE_NORMAL。仍然是问题。我想我将不得不忍受 2.3+ 的应用程序或 2.1 的错误。 setmode() 根本不推荐用于此类应用程序(检查我的问题编辑中的链接)
    • 因为路由方法已被弃用,我认为没有其他解决方案,除非您专门将它们用于 2.2-。顺便说一句,这也可能是您正在使用的手机的错误,例如不完整的音频驱动程序或其他东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多