Пример #1
0
  /**
   * 保存通话消息记录
   *
   * @param type 0:音频,1:视频
   */
  protected void saveCallRecord(int type) {
    EMMessage message = null;
    TextMessageBody txtBody = null;
    if (!isInComingCall) { // 打出去的通话
      message = EMMessage.createSendMessage(EMMessage.Type.TXT);
      message.setReceipt(username);
    } else {
      message = EMMessage.createReceiveMessage(EMMessage.Type.TXT);
      message.setFrom(username);
    }

    String st1 = getResources().getString(R.string.call_duration);
    String st2 = getResources().getString(R.string.Refused);
    String st3 = getResources().getString(R.string.The_other_party_has_refused_to);
    String st4 = getResources().getString(R.string.The_other_is_not_online);
    String st5 = getResources().getString(R.string.The_other_is_on_the_phone);
    String st6 = getResources().getString(R.string.The_other_party_did_not_answer);
    String st7 = getResources().getString(R.string.did_not_answer);
    String st8 = getResources().getString(R.string.Has_been_cancelled);
    switch (callingState) {
      case NORMAL:
        txtBody = new TextMessageBody(st1 + callDruationText);
        break;
      case REFUESD:
        txtBody = new TextMessageBody(st2);
        break;
      case BEREFUESD:
        txtBody = new TextMessageBody(st3);
        break;
      case OFFLINE:
        txtBody = new TextMessageBody(st4);
        break;
      case BUSY:
        txtBody = new TextMessageBody(st5);
        break;
      case NORESPONSE:
        txtBody = new TextMessageBody(st6);
        break;
      case UNANSWERED:
        txtBody = new TextMessageBody(st7);
        break;
      default:
        txtBody = new TextMessageBody(st8);
        break;
    }
    // 设置扩展属性
    if (type == 0) message.setAttribute(Constant.MESSAGE_ATTR_IS_VOICE_CALL, true);
    else message.setAttribute(Constant.MESSAGE_ATTR_IS_VIDEO_CALL, true);

    // 设置消息body
    message.addBody(txtBody);
    message.setMsgId(msgid);

    // 保存
    EMChatManager.getInstance().saveMessage(message, false);
  }