最近遇到一个如何在耳机插入的情况下任然用扬声器播放音频的问题。
用搜索引擎找了一些网上的demo 。发现按照他们的方法成功实现。
最后成功解决了。先说解决办法吧。
问题的关键是某度搜出来的第一个解决方案没有在mainfest中添加如下权限。
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
除了这个权限,我下面的代码基本http://blog.csdn.net/menghnhhuan/article/details/7415843差不多
下面贴出代码
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.util.Log;
public class MusicPlay {
Context context = null;
AudioManager audioManager;
MediaPlayer playerSound;
Thread playThread;
// 播放音频文件,固定使用扬声器播放
public MusicPlay(Context context) {
this.context = context;
audioManager = (AudioManager) context
.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMicrophoneMute(false);
audioManager.setSpeakerphoneOn(true);// 使用扬声器播放,即使已经插入耳机
audioManager.setMode(AudioManager.STREAM_MUSIC);
}
public void play() {
playThread = new Thread(new PlayThread());
playThread.run();
}
class PlayThread implements Runnable {
@Override
public void run() {
//Log.e("zhiyinqing", "执行到了run方法");
if (audioManager.isSpeakerphoneOn()) {
// Log.e("liuyu","扬声器打开了");
} else {
audioManager.setSpeakerphoneOn(false);
Log.e("liuyu", "扬声器关闭了");
if (audioManager.isSpeakerphoneOn()) {
// Log.e("liuyu","扬声器打开了");
} else {
// Log.e("liuyu","扬声器还是没打开");
}
}
playerSound = MediaPlayer.create(context, R.raw.abc);
playerSound.start();
}
}
}
如果有帮到您,打个赏呗