public void playVoice(String filePath) {
    if (!(new File(filePath).exists())) {
      return;
    }
    ((ChatActivity) activity).playMsgId = message.getMsgId();
    AudioManager audioManager = (AudioManager) activity.getSystemService(Context.AUDIO_SERVICE);

    mediaPlayer = new MediaPlayer();
    if (HXSDKHelper.getInstance().getModel().getSettingMsgSpeaker()) {
      audioManager.setMode(AudioManager.MODE_NORMAL);
      audioManager.setSpeakerphoneOn(true);
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING);
    } else {
      audioManager.setSpeakerphoneOn(false); // 关闭扬声器
      // 把声音设定成Earpiece(听筒)出来,设定为正在通话中
      audioManager.setMode(AudioManager.MODE_IN_CALL);
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
    }
    try {
      mediaPlayer.setDataSource(filePath);
      mediaPlayer.prepare();
      mediaPlayer.setOnCompletionListener(
          new MediaPlayer.OnCompletionListener() {

            @Override
            public void onCompletion(MediaPlayer mp) {
              // TODO Auto-generated method stub
              mediaPlayer.release();
              mediaPlayer = null;
              stopPlayVoice(); // stop animation
            }
          });
      isPlaying = true;
      currentPlayListener = this;
      mediaPlayer.start();
      showAnimation();

      // 如果是接收的消息
      if (message.direct == EMMessage.Direct.RECEIVE) {
        try {
          if (!message.isAcked) {
            message.isAcked = true;
            // 告知对方已读这条消息
            if (chatType != ChatType.GroupChat && chatType != ChatType.ChatRoom)
              EMChatManager.getInstance().ackMessageRead(message.getFrom(), message.getMsgId());
          }
        } catch (Exception e) {
          message.isAcked = false;
        }
        if (!message.isListened()
            && iv_read_status != null
            && iv_read_status.getVisibility() == View.VISIBLE) {
          // 隐藏自己未播放这条语音消息的标志
          iv_read_status.setVisibility(View.INVISIBLE);
          EMChatManager.getInstance().setMessageListened(message);
        }
      }

    } catch (Exception e) {
    }
  }