今天驱动工程师要我写一段代码验证听筒功能是否正常,我一开始把听筒播放设置为AudioManager.MODE_IN_CALL,发现声音是从speaker出来的而不是receiver出来的,通过查阅源码发现听筒播放模式应更改AudioManager.MODE_IN_COMMUNICATION。
AudioManager am;
MediaPlayer myPlayer;
myPlayer = MediaPlayer.create(MainActivity.this, R.raw.prestigio1);
if(myPlayer.isPlaying()==true)
{
myPlayer.reset();
}
myPlayer.setLooping(true);
if (!speakerphoneOn){//听筒
am.setSpeakerphoneOn(false);
am.setMode(AudioManager.MODE_IN_COMMUNICATION);
myPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
}else {//扬声器
am.setMode(AudioManager.MODE_NORMAL);
am.setSpeakerphoneOn(true);
myPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
}
myPlayer.start();