[英]How to play audio through Bluetooth speaker even when headset is plugged in?
[英]How to Play audio through speaker even when headset is plugged in?
问题的标题可能看起来重复,但我的问题有时是问题并导致故障。 插入耳机时,我使用以下代码播放扬声器。
AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.STREAM_MUSIC);
audioManager.setSpeakerphoneOn(true);
if(! Globals.mediaPlayer.isPlaying()){
Globals.mediaPlayer.start();
}
上面的代码通过以下方式播放音频:1。很少次,它播放完美。 2.大多数时候,它在背景中播放循环声。 几次,它什么都不玩。
插入耳机时似乎系统声音播放没有错误。例如 - 设置铃声正确播放相应的铃声,没有任何故障。 请帮我理解如何通过插入耳机的扬声器正确播放声音。
我有一个类似的问题,我解决了,创建一个新的媒体播放器,如果它没有播放,并将媒体播放器流类型设置为音频管理器的相同模式,尝试这样的事情:
AudioManager audioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.STREAM_MUSIC);
audioManager.setSpeakerphoneOn(true);
if(! Globals.mediaPlayer.isPlaying()){
MediaPlayer mp = MediaPlayer.create(....);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
mp.start();
}
就我而言,我使用的是AudioManager.MODE_IN_COMMUNICATION。 另外一定要设置权限
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
在AndroidManifest.xml中
稍微研究一下(可能更多),我找到了解决方案。
我们应该创建自己的MediaPlayer实例并为该实例设置音频流类型,而不是更改AudioManager的设置。 我们可以将其设置为STREAM_RING以将音频路由到耳机和扬声器。
player.reset();
player.setAudioStreamType(AudioManager.STREAM_RING);
try {
player.setDataSource(context, uri);
player.prepareAsync();}
然后,您可以收听onPreparedListener以启动音频。 请查看博客通过Android中的扬声器路由音频以获得更好的画面。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.