环信的语音和扬声器的切换,类似于微信qq的那种,当然比他们的简单。其实环信已经给我们写好了听筒或者扬声器的切换,我们只需要把原生的传感器和播放暂停的结合一下就可以了,android距离传感器,从网上随便找找都有。
在环信的easeui库中,你可以知道EaseChatRowVoicePlayClickListener这个是语音row播放点击事件监听,
public class EaseChatRowVoicePlayClickListener implements View.OnClickListener{
private static final String TAG = "VoicePlayClickListener";
EMMessage message;
EMVoiceMessageBody voiceBody;
ImageView voiceIconView;
private AnimationDrawable voiceAnimation = null;
MediaPlayer mediaPlayer = null;
ImageView iv_read_status;
Activity activity;
private ChatType chatType;
private BaseAdapter adapter;
public static boolean isPlaying = false;
public static EaseChatRowVoicePlayClickListener currentPlayListener = null;
public static String playMsgId;
private SensorManager mManager;//传感器管理对象
private MySensorEventListener eventListener;
public EaseChatRowVoicePlayClickListener(EMMessage message, ImageView v, ImageView iv_read_status, BaseAdapter adapter, Activity context) {
this.message = message;
voiceBody = (EMVoiceMessageBody) message.getBody();
this.iv_read_status = iv_read_status;
this.adapter = adapter;
voiceIconView = v;
this.activity = context;
this.chatType = message.getChatType();
mManager = (SensorManager)activity.getSystemService(Context.SENSOR_SERVICE);
eventListener = new MySensorEventListener();
// mManager.registerListener(eventListener, mManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),// 距离感应器
// SensorManager.SENSOR_DELAY_NORMAL);//注册传感器,第一个参数为距离监听器,第二个是传感器类型,第三个是延迟类型
}
public void stopPlayVoice() {
voiceAnimation.stop();
if (message.direct() == EMMessage.Direct.RECEIVE) {
voiceIconView.setImageResource(R.drawable.ease_chatfrom_voice_playing);
} else {
voiceIconView.