今天驱动工程师要我写一段代码验证听筒功能是否正常,我一开始把听筒播放设置为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();
本文介绍了一段用于验证手机听筒功能的代码,并详细解释了如何通过更改播放模式来确保声音从听筒而非扬声器播放。通过设置AudioManager.MODE_IN_COMMUNICATION并调整MediaPlayer的音频流类型为STREAM_VOICE_CALL,可以实现这一功能。
3568

被折叠的 条评论
为什么被折叠?



