【发布时间】:2017-03-10 18:04:12
【问题描述】:
我想通过带有插入式耳机的扬声器播放音频文件。
我尝试了以下方法: 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" />
但音频仍通过插入的耳机播放。如何在插入耳机的情况下正确地将音频输出定向到扬声器?
编辑 1:
我尝试了Android, how to route the audio to speakers when headphones inserted?帖子中的以下代码:
MediaPlayer mp = MediaPlayer.create(mainActivity, R.raw.chime);
AudioManager am = (AudioManager) mainActivity.getSystemService(mainActivity.AUDIO_SERVICE);
try {
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setLooping(true);
mp.prepare();
} catch (IllegalArgumentException | SecurityException| IllegalStateException | IOException e) {
Log.i("TAG","Error is " + e.toString());
e.printStackTrace();
}
am.requestAudioFocus(null, AudioManager.STREAM_ALARM,AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
mp.start();
但我得到了
java.lang.IllegalStateException
有什么办法解决这个问题吗?
【问题讨论】:
-
非常感谢@GreyBeardedGeek,我尝试了您建议的帖子中的代码,但仍然无法使其正常工作。还有其他想法如何通过扬声器播放音频吗?
标签: android audio android-mediaplayer