Android 通过插入耳机的扬声器播放音频

Android 通过插入耳机的扬声器播放音频,android,audio,android-mediaplayer,Android,Audio,Android Mediaplayer,我想通过带有插入式耳机的扬声器播放音频文件 我尝试了以下方法: MainActivity.java: AudioManager audioManager = (AudioManager)mainActivity .getSystemService(Context.AUDIO_SERVICE); audioManager.setMode(AudioManager.STREAM_MUSIC); audioManager.setSpeakerphoneOn(true); MediaPlaye

我想通过带有插入式耳机的扬声器播放音频文件

我尝试了以下方法: MainActivity.java:

AudioManager audioManager = (AudioManager)mainActivity
     .getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.STREAM_MUSIC);
audioManager.setSpeakerphoneOn(true);
MediaPlayer mp = MediaPlayer.create(mainActivity, R.raw.chime);
mp.setAudioStreamType(AudioManager.STREAM_RING);
mp.start();
舱单:

<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
但是我越来越

java.lang.IllegalStateException


有什么办法可以解决这个问题吗?

我将提供一个完整的代码片段(在Android 24上测试),我必须从多个提示聚合到解决方案:

public class AudioClass
{
    AudioManager audioManager;
    Activity activity;

    public AudioClass(Activity activity)
    {
       this.activity = activity;

        //NEEDS TO BE DONE BEFORE PLAYING AUDIO!
        audioManager = (AudioManager)
            activity.getSystemService(Context.AUDIO_SERVICE);
        audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
        audioManager.setSpeakerphoneOn(true);
    }

    public void playAudio() {
        //CAN BE CALLED FROM ANYWHERE AFTER AudioClass IS INSTANTIATED
        MediaPlayer mp = MediaPlayer.create(activity, R.raw.audio_file_name);
        mp.setAudioStreamType(AudioManager.MODE_IN_COMMUNICATION);
        mp.start();
    }
}
需要在清单中设置修改音频设置的权限:

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

非常感谢@greybearedgeek的可能重复代码,我在你建议的帖子中尝试了该代码,但仍然无法使用。有没有其他办法通过扬声器播放音频?
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />