ソースを参照

修改普通电话通话记录上传方式,不再使用tcp来记录,而是在通话结束时双方查找本地最新的一条记录通过接口上传服务器。

weizhengliang 2 年 前
コミット
8cd51f8533

+ 2 - 3
home/src/main/code/com/wdkl/ncs/android/component/home/activity/AppUpdateActivity.kt

@@ -17,6 +17,7 @@ import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.lib.vo.MessageEvent
 import com.wdkl.ncs.android.lib.vo.filter
+import com.wdkl.ncs.android.middleware.api.ApiManager
 import com.wdkl.ncs.android.middleware.api.UrlManager
 import com.wdkl.ncs.android.middleware.common.Constants
 import com.wdkl.ncs.android.middleware.logic.contract.home.AppUpdateContract
@@ -30,8 +31,6 @@ import org.greenrobot.eventbus.ThreadMode
 class AppUpdateActivity : BaseActivity<AppUpdatePresenter, ActivityAppUpdateBinding>(), AppUpdateContract.View {
     private val TAG = "AppUpdateActivity"
 
-    private val urlManager = UrlManager.build()
-
     companion object instance {
         var opened = false;
     }
@@ -66,7 +65,7 @@ class AppUpdateActivity : BaseActivity<AppUpdatePresenter, ActivityAppUpdateBind
     override fun handleAppVersion(appInfo: AppVersionDO) {
         if (BuildConfig.VERSION_CODE < appInfo.versionNo){
             if (!TextUtils.isEmpty(appInfo.appPath)) {
-                downLoadAPK(urlManager.base + ":8006/" + appInfo.appPath)
+                downLoadAPK(ApiManager.urlManager.device_url + appInfo.appPath)
             } else {
                 showMessage("下载路径异常")
                 finish()

+ 2 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchCallRecordsActivity.kt

@@ -146,7 +146,7 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
                                 startActivity(intent)
 
                                 //发送tcp
-                                val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, receivedData!!.deviceId)
+                                /*val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, receivedData!!.deviceId)
                                 NettyClient.instance.sendMsg(tcpModel.toJson())
                                     .subscribe { res: Boolean ->
                                         if (res) {
@@ -155,7 +155,7 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
                                             Log.e(TAG, "TCP.发送消息失败")
                                             HandleTcpConnect.instance.tcpReConnectWithMsgShow()
                                         }
-                                    }
+                                    }*/
                             } else {
                                 showMessage("呼叫失败,可能手机号异常")
                             }

+ 1 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/activity/WatchHome2Activity.kt

@@ -436,6 +436,7 @@ class WatchHome2Activity : BaseActivity<WatchHomeActivityPresenter, WatchActivit
                 watch_user_phone_tv.text = data.phoneNumber
             }
         }
+        Constants.phoneNumber = data.phoneNumber
 
         //获取频道列表
         if (data.memberId != null) {

+ 15 - 3
home/src/main/code/com/wdkl/ncs/android/component/home/adapter/NewEventItemAdapter.kt

@@ -3,6 +3,7 @@ package com.wdkl.ncs.android.component.home.adapter
 import android.app.Activity
 import android.content.Intent
 import android.graphics.Color
+import android.text.TextUtils
 import android.util.Log
 import android.view.View
 import android.view.ViewGroup
@@ -64,18 +65,29 @@ class NewEventItemAdapter(var data:ArrayList<InteractionVO>, val activity: Activ
 
             var toDeviceId:Int?
             binding.eliEventTime.text = TimeTransition().stampToDate(itemData.createDate*1000)
-            binding.eliRoomName.text = itemData.fromFrameFullName
+            //binding.eliRoomName.text = itemData.fromFrameFullName
             var showName: String? = ""
             if (itemData.fromDeviceMemberId == Constants.memberId){
+                binding.eliRoomName.text = itemData.toFrameFullName
                 showName = itemData.toMemberName
                 toDeviceId = itemData.toDeviceId
             } else {
+                binding.eliRoomName.text = itemData.fromFrameFullName
                 showName = itemData.fromMemberName
                 toDeviceId = itemData.fromDeviceId
             }
-            binding.eliMemberName.text = showName
 
-            binding.eliVoiceRecorder.visibility = View.VISIBLE
+            if (TextUtils.isEmpty(showName)) {
+                binding.eliMemberName.text = "未知"
+            } else {
+                binding.eliMemberName.text = showName
+            }
+
+            if (toDeviceId != null) {
+                binding.eliVoiceRecorder.visibility = View.VISIBLE
+            } else {
+                binding.eliVoiceRecorder.visibility = View.GONE
+            }
             binding.eliVoiceRecorder.setOnClickListener{
                 var intent = Intent(activity,VoiceMsgActivity::class.java)
                 intent.putExtra(VoiceMsgActivity.TO_DEVICE_ID,toDeviceId)

+ 2 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/adapter/TakeoverItemAdapter.kt

@@ -105,7 +105,7 @@ class TakeoverItemAdapter(var data:ArrayList<JsonObject>, val context: Context)
                             //Constants.phoneState = Constants.PHONE_OUTGOING
 
                             //发送tcp
-                            val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, itemData.get("id").asInt)
+                            /*val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, itemData.get("id").asInt)
                             NettyClient.instance.sendMsg(tcpModel.toJson()).subscribe { res: Boolean ->
                                 if (res) {
                                     Log.d(TAG, "TCP.发送消息完成")
@@ -113,7 +113,7 @@ class TakeoverItemAdapter(var data:ArrayList<JsonObject>, val context: Context)
                                     Log.e(TAG, "TCP.发送消息失败")
                                     HandleTcpConnect.instance.tcpReConnectWithMsgShow()
                                 }
-                            }
+                            }*/
                         } catch (e: Exception) {
                             showMessage("呼叫失败,请检查手机号")
                         }

+ 2 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/adapter/TakeoverItemSearchAdapter.kt

@@ -92,7 +92,7 @@ class TakeoverItemSearchAdapter : FuzzySearchBaseAdapter<ContactItemEntity, Take
                         //Constants.phoneState = Constants.PHONE_OUTGOING
 
                         //发送tcp
-                        val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, itemData.id)
+                        /*val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, itemData.id)
                         NettyClient.instance.sendMsg(tcpModel.toJson()).subscribe { res: Boolean ->
                             if (res) {
                                 Log.d(TAG, "TCP.发送消息完成")
@@ -100,7 +100,7 @@ class TakeoverItemSearchAdapter : FuzzySearchBaseAdapter<ContactItemEntity, Take
                                 Log.e(TAG, "TCP.发送消息失败")
                                 HandleTcpConnect.instance.tcpReConnectWithMsgShow()
                             }
-                        }
+                        }*/
                     } catch (e: Exception) {
                         showMessage("呼叫失败,请检查手机号")
                     }

+ 19 - 4
home/src/main/code/com/wdkl/ncs/android/component/home/adapter/WatchCallRecordsItemAdapter.kt

@@ -78,7 +78,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 if (itemData.fromDeviceMemberId == Constants.memberId){
                     binding.sickbedTv.text = itemData.toFrameFullName
                     if (TextUtils.isEmpty(itemData.toMemberName)) {
-                        binding.nameTv.text = ""
+                        binding.nameTv.text = "To: 未知"
                     } else {
                         binding.nameTv.text = "To: " + itemData.toMemberName
                     }
@@ -86,7 +86,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 } else {
                     binding.sickbedTv.text = itemData.fromFrameFullName
                     if (TextUtils.isEmpty(itemData.fromMemberName)) {
-                        binding.nameTv.text = ""
+                        binding.nameTv.text = "From: 未知"
                     } else {
                         binding.nameTv.text = "From: " + itemData.fromMemberName
                     }
@@ -150,7 +150,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 if(Constants.memberId != itemData.fromDeviceMemberId){
                     binding.sickbedTv.text = itemData.fromFrameFullName
                     if (TextUtils.isEmpty(itemData.fromMemberName)) {
-                        binding.nameTv.text = ""
+                        binding.nameTv.text = "From: 未知"
                     } else {
                         binding.nameTv.text = "From: " + itemData.fromMemberName
                     }
@@ -158,7 +158,7 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 }else{
                     binding.sickbedTv.text = itemData.toFrameFullName
                     if (TextUtils.isEmpty(itemData.toMemberName)) {
-                        binding.nameTv.text = ""
+                        binding.nameTv.text = "To: 未知"
                     } else {
                         binding.nameTv.text = "To: " + itemData.toMemberName
                     }
@@ -203,6 +203,21 @@ class WatchCallRecordsItemAdapter(val data: ArrayList<InteractionVO>) : BaseDele
                 }
             }
 
+            if(itemData.actionType == TcpType.VOICE.name || itemData.actionType == TcpType.PHONE.name) {
+                if (itemData.actionAccept != null) {
+                    if (itemData.fromDeviceMemberId == Constants.memberId){
+                        binding.callStatusImagev.setImageResource(R.drawable.hu_chu_yi_jie)
+                    } else {
+                        binding.callStatusImagev.setImageResource(R.drawable.hu_ru_yi_jie)
+                    }
+                } else {
+                    if(Constants.memberId != itemData.fromDeviceMemberId){
+                        binding.callStatusImagev.setImageResource(R.drawable.hu_ru_wei_jie)
+                    }else{
+                        binding.callStatusImagev.setImageResource(R.drawable.hu_chu_wei_jie)
+                    }
+                }
+            }
         }
     }
 

+ 2 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/adapter/WatchContactsItemAdapter.kt

@@ -88,7 +88,7 @@ class WatchContactsItemAdapter(val data:ArrayList<WatchContactsVO>, val context:
                             context.startActivity(intent)
 
                             //发送tcp
-                            val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, itemData.deviceId)
+                            /*val tcpModel = PhoneUtil.phoneCall(Constants.deviceId, itemData.deviceId)
                             NettyClient.instance.sendMsg(tcpModel.toJson())
                                 .subscribe { res: Boolean ->
                                     if (res) {
@@ -97,7 +97,7 @@ class WatchContactsItemAdapter(val data:ArrayList<WatchContactsVO>, val context:
                                         Log.e(TAG, "TCP.发送消息失败")
                                         HandleTcpConnect.instance.tcpReConnectWithMsgShow()
                                     }
-                                }
+                                }*/
                         } else {
                             showMessage("呼叫失败,可能手机号异常")
                         }

+ 35 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/helper/HttpHelper.java

@@ -23,6 +23,41 @@ import static com.wdkl.ncs.android.component.home.helper.AppUpdateHelper.FILE_AP
 public class HttpHelper {
     private static OkHttpClient okHttpClient;
 
+    public static void postData(String url, String jsonData, final UploadCallback callback) {
+        if (okHttpClient == null) {
+            okHttpClient = new OkHttpClient();
+        }
+
+        RequestBody requestBody = RequestBody.create(MediaType.parse("application/json"), jsonData);
+        Request request = new Request.Builder()
+                .url(url)
+                .post(requestBody)
+                .build();
+
+        okHttpClient.newCall(request).enqueue(new Callback() {
+            @Override
+            public void onFailure(Call call, IOException e) {
+                if (callback != null) {
+                    callback.onFail();
+                }
+            }
+
+            @Override
+            public void onResponse(Call call, Response response) throws IOException {
+                Log.d("HttpHelper", "post response: " + response.toString());
+                if( response.code()==200) {
+                    if (callback != null) {
+                        callback.onSuccess("success");
+                    }
+                } else {
+                    if (callback != null) {
+                        callback.onFail();
+                    }
+                }
+            }
+        });
+    }
+
     /**
      * @param url   服务器地址
      * @param file  所要上传的文件

+ 10 - 4
home/src/main/code/com/wdkl/ncs/android/component/home/service/PhoneStateReceiver.java

@@ -85,7 +85,7 @@ public class PhoneStateReceiver extends BroadcastReceiver {
                 //Log.d(TAG, "PhoneStateReceiver idle");
                 if (Constants.Companion.getPhoneState() == Constants.PHONE_OUTGOING) {
                     //发送tcp
-                    if (Constants.Companion.getPhoneDataVO() != null) {
+                    /*if (Constants.Companion.getPhoneDataVO() != null) {
                         TcpModel tcpModel = PhoneUtil.phoneHandoff(Constants.Companion.getDeviceId(), Constants.Companion.getPhoneDataVO());
                         NettyClient.Companion.getInstance().sendMsg(tcpModel.toJson()).subscribe(it -> {
                             if (it) {
@@ -95,8 +95,14 @@ public class PhoneStateReceiver extends BroadcastReceiver {
                                 HandleTcpConnect.Companion.getInstance().tcpReConnectWithMsgShow();
                             }
                         });
-                    }
+                    }*/
+                }
+
+                if (extraIncomingNumber != null) {
+                    //通话结束,上传通话记录
+                    EventBus.getDefault().post(new MessageEvent("call_end", Constants.EVENT_CALL_END));
                 }
+
                 DeviceChannel.calling = false;
                 Constants.Companion.setPhoneState(Constants.PHONE_IDLE);
                 SpeechUtil.getInstance().stopSpeak();
@@ -148,7 +154,7 @@ public class PhoneStateReceiver extends BroadcastReceiver {
                 EventBus.getDefault().post(new MessageEvent(true, Constants.EVENT_CLEAR_IM));
                 if (Constants.Companion.getPhoneState() == Constants.PHONE_INCOMING) {
                     //发送tcp
-                    if (Constants.Companion.getPhoneDataVO() != null) {
+                    /*if (Constants.Companion.getPhoneDataVO() != null) {
                         TcpModel tcpModel = PhoneUtil.phoneAccept(Constants.Companion.getDeviceId(), Constants.Companion.getPhoneDataVO());
                         NettyClient.Companion.getInstance().sendMsg(tcpModel.toJson()).subscribe(it -> {
                             if (it) {
@@ -158,7 +164,7 @@ public class PhoneStateReceiver extends BroadcastReceiver {
                                 HandleTcpConnect.Companion.getInstance().tcpReConnectWithMsgShow();
                             }
                         });
-                    }
+                    }*/
                 } else if (Constants.Companion.getPhoneState() == Constants.PHONE_IDLE) {
                     Constants.Companion.setPhoneState(Constants.PHONE_OUTGOING);
                 } else {

+ 36 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/service/WdKeepAliveService.kt

@@ -21,6 +21,7 @@ import com.google.gson.reflect.TypeToken
 import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.activity.AppUpdateActivity
 import com.wdkl.ncs.android.component.home.activity.NewEventListActivity
+import com.wdkl.ncs.android.component.home.helper.HttpHelper
 import com.wdkl.ncs.android.component.home.settingconfig.SettingConfig
 import com.wdkl.ncs.android.component.home.ui.CallSingleActivity
 import com.wdkl.ncs.android.component.home.util.*
@@ -706,9 +707,44 @@ class WdKeepAliveService : AbsWorkService() {
                     MediaPlayHelper.getInstance().stopMusic(true)
                 }
             }
+
+            Constants.EVENT_CALL_END -> {
+                //通话结束,上传这条通话记录
+                Thread {
+                    //等待1s再上传
+                    try {
+                        Thread.sleep(1500)
+
+                        val callLog = ContactHelper.getLatestCallLog(BaseApplication.appContext)
+                        val gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+                        val data = gson.toJson(callLog)
+                        uploadCallLog(data, 0)
+                    } catch (e: Exception) {
+                        //
+                    }
+                }.start()
+            }
         }
     }
 
+    private fun uploadCallLog(jsonData: String, count: Int) {
+        if (count > 2) {
+            return
+        }
+
+        Log.i(TAG, "upload call log: $jsonData")
+        HttpHelper.postData(ApiManager.urlManager.device_url + "interaction/set_phone_interaction", jsonData, object: HttpHelper.UploadCallback{
+            override fun onFail() {
+                Log.e(TAG, "call log upload failed")
+                uploadCallLog(jsonData, count+1)
+            }
+
+            override fun onSuccess(data: String?) {
+                Log.d(TAG, "call log upload success")
+            }
+        })
+    }
+
     private fun eventSpeechOut(model: TcpModel) {
         if (model.type == TcpType.IM && model.action == TcpAction.IMAction.MSG) {
             SoundPoolManager.getInstance().playSound(1)

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/common/Constants.kt

@@ -17,6 +17,7 @@ class Constants {
         var sipPassword: String? =""//sip密码
         var memberId:Int? = -1
         var userName: String? = "" //当前用户
+        var phoneNumber: String? = "" //本机号码
         var userRoleName: String? = "" //当前用户的角色
         var tcpServer: String = ""
         var tcpPort: Int = 5080   //tcp端口
@@ -82,5 +83,6 @@ class Constants {
         const val EVENT_CLEAR_IM = 0x50
         const val EVENT_SERVER_CHANGE = 0x51
         const val EVENT_DATA_REFRESH = 0x52
+        const val EVENT_CALL_END = 0x53
     }
 }

+ 102 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/model/vo/PhoneInteractionVO.java

@@ -0,0 +1,102 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+/**
+ * @author
+ * @title: Vothin
+ * @projectName nc
+ * @date 2022/9/2218:25
+ */
+public class PhoneInteractionVO {
+
+    // 发起方的设备id
+    private Integer fromId;
+    // 接收方的设备id
+    private Integer toId;
+    // 发起通话的人
+    private String fromDevicePhoneNumber;
+    // 接收通话的人
+    private String toDevicePhoneNumber;
+    // 发起通话的时间
+    private Long actionStart;
+    // 接收通话的时间
+    private Long actionAccept;
+    // 结束通话的时间
+    private Long actionEnd;
+    // 通话时长
+    private Integer actionCallTime;
+    // 通话类型
+    private Integer actionStatus;
+
+    public Integer getFromId() {
+        return fromId;
+    }
+
+    public void setFromId(Integer fromId) {
+        this.fromId = fromId;
+    }
+
+    public Integer getToId() {
+        return toId;
+    }
+
+    public void setToId(Integer toId) {
+        this.toId = toId;
+    }
+
+    public String getFromDevicePhoneNumber() {
+        return fromDevicePhoneNumber;
+    }
+
+    public void setFromDevicePhoneNumber(String fromDevicePhoneNumber) {
+        this.fromDevicePhoneNumber = fromDevicePhoneNumber;
+    }
+
+    public String getToDevicePhoneNumber() {
+        return toDevicePhoneNumber;
+    }
+
+    public void setToDevicePhoneNumber(String toDevicePhoneNumber) {
+        this.toDevicePhoneNumber = toDevicePhoneNumber;
+    }
+
+    public Long getActionStart() {
+        return actionStart;
+    }
+
+    public void setActionStart(Long actionStart) {
+        this.actionStart = actionStart;
+    }
+
+    public Long getActionAccept() {
+        return actionAccept;
+    }
+
+    public void setActionAccept(Long actionAccept) {
+        this.actionAccept = actionAccept;
+    }
+
+    public Long getActionEnd() {
+        return actionEnd;
+    }
+
+    public void setActionEnd(Long actionEnd) {
+        this.actionEnd = actionEnd;
+    }
+
+    public Integer getActionCallTime() {
+        return actionCallTime;
+    }
+
+    public void setActionCallTime(Integer actionCallTime) {
+        this.actionCallTime = actionCallTime;
+    }
+
+
+    public Integer getActionStatus() {
+        return actionStatus;
+    }
+
+    public void setActionStatus(Integer actionStatus) {
+        this.actionStatus = actionStatus;
+    }
+}

+ 68 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/ContactHelper.java

@@ -15,7 +15,9 @@ import android.text.TextUtils;
 import android.util.Log;
 
 import com.wdkl.ncs.android.lib.base.BaseApplication;
+import com.wdkl.ncs.android.middleware.common.Constants;
 import com.wdkl.ncs.android.middleware.model.ContactItem;
+import com.wdkl.ncs.android.middleware.model.vo.PhoneInteractionVO;
 import com.wdkl.ncs.android.middleware.model.vo.WatchContactVO;
 
 import java.text.SimpleDateFormat;
@@ -78,6 +80,72 @@ public class ContactHelper {
     }
 
 
+    public static PhoneInteractionVO getLatestCallLog(final Context context) {
+        Uri callUri = CallLog.Calls.CONTENT_URI;
+        String[] columns = {CallLog.Calls.CACHED_NAME,
+                CallLog.Calls.NUMBER,
+                CallLog.Calls.DATE,
+                CallLog.Calls.DURATION,
+                CallLog.Calls.TYPE};
+        Cursor cursor = null;
+        PhoneInteractionVO interactionVO = null;
+
+        try {
+            cursor = context.getContentResolver().query(
+                    callUri, // 查询通话记录的URI
+                    columns,  //数据库列选择 不选则获取所有列
+                    null,
+                    null,
+                    CallLog.Calls.DEFAULT_SORT_ORDER  //按照时间逆序排列,最近打的最先显示
+            );
+            Log.i(TAG, "cursor count:" + cursor.getCount());
+            if (cursor.moveToNext()) {
+                String name = cursor.getString(cursor.getColumnIndex(CallLog.Calls.CACHED_NAME));  //姓名
+                String number = cursor.getString(cursor.getColumnIndex(CallLog.Calls.NUMBER));  //号码
+                long dateLong = cursor.getLong(cursor.getColumnIndex(CallLog.Calls.DATE)); //获取通话日期
+                String date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(dateLong));
+                int duration = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.DURATION));//获取通话时长,值为多少秒
+                int type = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE)); //获取通话类型:1.来电 2.去电 3.未接的来电 4.voicemail 5.拒接的来电
+
+                interactionVO = new PhoneInteractionVO();
+                if (type == CallLog.Calls.INCOMING_TYPE || type == CallLog.Calls.MISSED_TYPE || type == CallLog.Calls.REJECTED_TYPE) {
+                    //接通的来电,未接的来电,拒接的来电
+                    interactionVO.setFromDevicePhoneNumber(number);
+                    interactionVO.setToDevicePhoneNumber(Constants.Companion.getPhoneNumber());
+                    interactionVO.setToId(Constants.Companion.getDeviceId());
+                } else if (type == CallLog.Calls.OUTGOING_TYPE) {
+                    //去电:包括接通的,自己取消的,对方拒接的
+                    interactionVO.setFromDevicePhoneNumber(Constants.Companion.getPhoneNumber());
+                    interactionVO.setToDevicePhoneNumber(number);
+                    interactionVO.setFromId(Constants.Companion.getDeviceId());
+                }
+                interactionVO.setActionStart(dateLong);
+                interactionVO.setActionCallTime(duration);
+                interactionVO.setActionStatus(type);
+                //interactionVO.setActionAccept();
+                //结束时间需要减去延时的时间
+                interactionVO.setActionEnd(System.currentTimeMillis()-1200);
+
+                Log.i(TAG, "Call log: " + "\n"
+                        + "name: " + name + "\n"
+                        + "date: " + date + "\n"
+                        + "phone number: " + number + "\n"
+                        + "duration: " + duration + "\n"
+                        + "type: " + type
+                );
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            if (cursor != null) {
+                cursor.close();
+            }
+        }
+
+        return interactionVO;
+    }
+
+
     /**
      * 插入手机号
      *