【问题标题】:Forcing sound output through speaker in Android在Android中强制通过扬声器输出声音
【发布时间】:2010-05-26 22:08:59
【问题描述】:

Android 中是否有办法通过手机扬声器强制输出,即使耳机已插入插孔?我知道必须有一种方法,因为当您在打电话时,您可以将某人放在免提电话上,即使插孔中插入了耳机。

【问题讨论】:

    标签: java android


    【解决方案1】:

    您可以使用AudioManager.setSpeakerphoneOn 方法在系统范围内更改此设置。

    我不相信您可以为特定的 MediaPlayer/AudioTrack/SoundPool 实例设置此设置,但根据您的用例,您可能实际上希望设置您的使用MediaPlayer.setAudioStreamType 或其他音频播放类的等效项的音频流类型。

    【讨论】:

    • @Icemanind 你试过这样吗?在大多数情况下,您不会违反用户设置,例如通过耳机播放声音。但是,如果您的用例是有效的,这听起来会起作用。
    • 是的。我试图做的是为我自己的安卓手机创建一个闹钟程序。但有时,我不小心忘记拔下耳机,闹钟会通过耳机响起,我听不到。这就是为什么我想知道如何做到这一点。
    【解决方案2】:

    通过扬声器输出声音

    AudioManager m_amAudioManager = 
            AudioManager)getSystemService(Context.AUDIO_SERVICE);  
    
    m_amAudioManager.setMode(AudioManager.MODE_NORMAL); 
    m_amAudioManager.setSpeakerphoneOn(true); 
    

    【讨论】:

    • 不适用于 HTC M9 和 nexus 设备 :(,任何替代解决方案??
    【解决方案3】:

    这对我有用

    首先,我在 Manifest.xml 中添加了权限

    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    

    然后,我使用了这段代码

    AudioManager m_amAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
    
        m_amAudioManager.setMode(AudioManager.MODE_RINGTONE | AudioManager.MODE_IN_CALL);
        m_amAudioManager.setSpeakerphoneOn(true);
    

    【讨论】:

      猜你喜欢
      • 2011-10-28
      • 2016-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多