Java Android中通过扬声器强制声音输出

Java Android中通过扬声器强制声音输出,java,android,Java,Android,在安卓系统中,有没有一种方法可以强制通过手机扬声器输出,即使耳机插入了插孔?我知道一定有办法,因为当你在打电话的时候,你可以把别人放在扬声器上,即使有耳机插在插孔上 您可以使用此方法更改整个系统 我不相信您可以为特定的MediaPlayer/AudioTrack/SoundPool实例设置此选项,但根据您的使用情况,您可能实际上希望使用或等效于其他音频播放类设置音频流类型。通过扬声器输出声音 AudioManager m_amAudioManager = AudioManage

在安卓系统中,有没有一种方法可以强制通过手机扬声器输出,即使耳机插入了插孔?我知道一定有办法,因为当你在打电话的时候,你可以把别人放在扬声器上,即使有耳机插在插孔上

您可以使用此方法更改整个系统


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

通过扬声器输出声音

AudioManager m_amAudioManager = 
        AudioManager)getSystemService(Context.AUDIO_SERVICE);  

m_amAudioManager.setMode(AudioManager.MODE_NORMAL); 
m_amAudioManager.setSpeakerphoneOn(true); 
这对我有用

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

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

@Icemanand你试过这种方法吗?在大多数情况下,您不会违反用户设置,例如通过耳机播放声音。但是,如果你的用例是有效的,这听起来像是可行的。我想做的是为我自己的安卓手机创建一个闹钟程序。但有时,我会不小心忘记拔下耳机,闹钟会通过耳机响起,我听不到。这就是为什么我想知道如何做到这一点。不适用于HTC M9和nexus设备:(,任何替代解决方案??
AudioManager m_amAudioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);

    m_amAudioManager.setMode(AudioManager.MODE_RINGTONE | AudioManager.MODE_IN_CALL);
    m_amAudioManager.setSpeakerphoneOn(true);