wangjk 4 سال پیش
والد
کامیت
784472e28b

+ 33 - 7
home/src/main/code/com/wdkl/ncs/android/component/home/activity/RTCVoipAudioActivity.java

@@ -10,7 +10,9 @@ import android.view.WindowManager;
 import android.widget.Chronometer;
 import android.widget.TextView;
 
+import com.google.gson.FieldNamingPolicy;
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
 import com.starrtc.demo.database.CoreDB;
 import com.starrtc.demo.database.HistoryBean;
 import com.starrtc.demo.demo.BaseActivity;
@@ -31,6 +33,10 @@ import com.wdkl.ncs.android.middleware.tcp.channel.VoiceUtil;
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel;
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction;
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpType;
+import com.wdkl.ncs.android.middleware.utils.MessageEvent;
+
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 
 import java.text.SimpleDateFormat;
 import java.util.Set;
@@ -42,6 +48,7 @@ public class RTCVoipAudioActivity extends BaseActivity implements View.OnClickLi
     private Chronometer timer;
 
     private TextView bao_mother_name_tv;
+    private TextView voiceStatus;
 
     public static String ACTION = "ACTION";
     public static String RING = "RING";
@@ -90,6 +97,7 @@ public class RTCVoipAudioActivity extends BaseActivity implements View.OnClickLi
         timer = (Chronometer) findViewById(R.id.call_duration_tv);
 
         bao_mother_name_tv = (TextView) findViewById(R.id.bao_mother_name_tv);
+        voiceStatus = (TextView)findViewById(R.id.voice_status);
 
 //        ((TextView)findViewById(com.starrtc.demo.R.id.targetid_text)).setText(targetId);
 //        ((ImageView)findViewById(com.starrtc.demo.R.id.head_img)).setImageResource(MLOC.getHeadImage(RTCVoipAudioActivity.this,targetId));
@@ -103,13 +111,8 @@ public class RTCVoipAudioActivity extends BaseActivity implements View.OnClickLi
 //        voice_time_tv.setVisibility(View.GONE);
 
         if (tcpModel.getType() == TcpType.VOICE) {
-            if(tcpModel.getAction() == TcpAction.VoiceAction.CALL) {
-                InteractionVO interactionVO =  new Gson().fromJson(tcpModel.getData().toString(), InteractionVO.class);
-                bao_mother_name_tv.setText(interactionVO.getFromMemberName());
-            }else if(tcpModel.getAction() == TcpAction.VoiceAction.SUCCESS){
-                InteractionVO interactionVO = (InteractionVO) tcpModel.getData();
-                bao_mother_name_tv.setText(interactionVO.getToMemberName());
-            }
+            InteractionVO interactionVO = new Gson().fromJson(tcpModel.getData().toString(), InteractionVO.class);
+            bao_mother_name_tv.setText(interactionVO.getToMemberName());
         }
 
 
@@ -372,4 +375,27 @@ public class RTCVoipAudioActivity extends BaseActivity implements View.OnClickLi
         }
         RTCVoipAudioActivity.this.finish();
     }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    void onMoonEvent(MessageEvent messageEvent) {
+        if (messageEvent.getType() == 2){
+            TcpModel tcpModel = (TcpModel) messageEvent.getMessage();
+
+            if (tcpModel.getAction() == TcpAction.VoiceAction.ACCEPT){
+                Log.i(TAG,"对方接听电话啦");
+                //data 是 InteractionVO
+                Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create();
+                InteractionVO interactionVO = gson.fromJson(tcpModel.getData().toString(), InteractionVO.class);
+
+                audioCall();
+
+            } else if (tcpModel.getAction() == TcpAction.VoiceAction.REJECT){
+                voiceStatus.setText("对方拒绝接听");
+            } else if (tcpModel.getAction() == TcpAction.VoiceAction.CALLING){
+                voiceStatus.setText("对方正在通话");
+            } else if (tcpModel.getAction() == TcpAction.VoiceAction.FAILED){
+                voiceStatus.setText("对方拒绝");
+            }
+        }
+    }
 }

+ 13 - 2
home/src/main/code/com/wdkl/ncs/android/component/home/activity/RTCVoipAudioRingingActivity.java

@@ -4,7 +4,9 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.view.View;
 import android.view.WindowManager;
+import android.widget.TextView;
 
+import com.google.common.base.Strings;
 import com.google.gson.Gson;
 import com.starrtc.demo.database.CoreDB;
 import com.starrtc.demo.database.HistoryBean;
@@ -42,8 +44,17 @@ public class RTCVoipAudioRingingActivity extends BaseActivity implements View.On
         targetId = getIntent().getStringExtra("targetId");
         tcpModel = (TcpModel) getIntent().getSerializableExtra("TcpModel");
 
-        findViewById(R.id.hang_up_imagev).setOnClickListener(this);
-        findViewById(R.id.call_the_voice_imagev).setOnClickListener(this);
+        if (Strings.isNullOrEmpty(targetId)){
+            findViewById(R.id.hang_up_imagev).setVisibility(View.GONE);
+            findViewById(R.id.call_the_voice_imagev).setVisibility(View.GONE);
+
+            interactionVO =  new Gson().fromJson(tcpModel.getData().toString(), InteractionVO.class);
+            TextView eventText = (TextView) findViewById(R.id.event_text);
+            eventText.setText(interactionVO.getData());
+        } else {
+            findViewById(R.id.hang_up_imagev).setOnClickListener(this);
+            findViewById(R.id.call_the_voice_imagev).setOnClickListener(this);
+        }
 //        ((TextView)findViewById(R.id.targetid_text)).setText(targetId);
 //        ((ImageView)findViewById(R.id.head_img)).setImageResource(MLOC.getHeadImage(RTCVoipAudioRingingActivity.this,targetId));
 //        findViewById(R.id.head_bg).setBackgroundColor(ColorUtils.getColor(RTCVoipAudioRingingActivity.this,targetId));

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

@@ -162,17 +162,18 @@ class WatchCallRecordsActivity : BaseActivity<WatchCallRecordsFragmentPresenter,
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-        if (messageEvent.type == 1){
+        if (messageEvent.tag == 1){
             var tcpModel = messageEvent.getMessage() as TcpModel
             //data 是 InteractionVO
-            var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
-            var interactionVO = gson.fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+//            var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+//            var interactionVO = gson.fromJson(tcpModel.data.toString(), InteractionVO::class.java)
             //界面呈现
             AppTool.Time.delay(300){
                 var intent = Intent()
                 intent.setClass(this,RTCVoipAudioActivity::class.java)
-                intent.putExtra("targetId", interactionVO.toSipId)
+                intent.putExtra("targetId", receivedData?.deviceSipId)
                 intent.putExtra("TcpModel",tcpModel)
+                intent.putExtra(RTCVoipAudioActivity.ACTION, RTCVoipAudioActivity.CALLING)
                 startActivity(intent)
             }
         }

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

@@ -114,7 +114,7 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     fun onMoonEvent(messageEvent: MessageEvent) {
-        if (messageEvent.type == 1) {
+        if (messageEvent.tag == 1) {
             return
         }
 
@@ -149,17 +149,6 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
                         startActivity(intent)
                     }
                 }
-            } else if (tcpModel.getAction() === TcpAction.VoiceAction.ACCEPT) { //我方呼出,对方接受
-                //todo:调用通话中界面;建立数据通话
-            } else if (tcpModel.getAction() === TcpAction.VoiceAction.REJECT) { //我方呼出,对方拒绝
-                //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方拒绝并停留3秒,结束至正常界面
-
-            } else if (tcpModel.getAction() === TcpAction.VoiceAction.CALLING) { //我方呼出,对方通话中
-                //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方占线并停留3秒,结束至正常界面;更新左侧
-
-            } else if (tcpModel.getAction() === TcpAction.VoiceAction.FAILED) { //我方呼出,对方不在线,设备离线或其它错误
-                //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方离线并停留3秒,结束至正常界面;更新左侧
-
             } else if (tcpModel.getAction() === TcpAction.VoiceAction.HANDOFF) { //对方挂断,不论我方呼出或呼入
                 //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方已挂断并停留3秒,结束至正常界面;更新左侧
 

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

@@ -11,6 +11,7 @@ import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.databinding.WatchActivityRegisterBinding
 import com.wdkl.ncs.android.component.home.databinding.WatchContactsLayBinding
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
+import com.wdkl.ncs.android.component.home.service.TcpHandleService
 import com.wdkl.ncs.android.component.home.util.NetHelper
 import com.wdkl.ncs.android.component.nursehome.common.Constants
 import com.wdkl.ncs.android.lib.base.BaseActivity
@@ -74,6 +75,9 @@ class WatchRegisterActivity: BaseActivity<WatchDevicePresenter, WatchActivityReg
         intent.putExtra("DeviceSipId", DeviceSipId)
         startService(intent)
 
+        val intent2 = Intent(this, TcpHandleService::class.java)
+        startService(intent2)
+
 //        val intent2 = Intent(this, RTCKeepLiveService::class.java)
 //        startService(intent2)
     }

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

@@ -0,0 +1,50 @@
+package com.wdkl.ncs.android.component.home.service
+
+import android.app.Service
+import android.content.Intent
+import android.os.IBinder
+import android.util.Log
+import com.google.gson.FieldNamingPolicy
+import com.google.gson.GsonBuilder
+import com.wdkl.ncs.android.component.home.activity.RTCVoipAudioRingingActivity
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
+import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
+import com.wdkl.ncs.android.middleware.utils.MessageEvent
+import org.greenrobot.eventbus.EventBus
+import org.greenrobot.eventbus.Subscribe
+import org.greenrobot.eventbus.ThreadMode
+
+class TcpHandleService : Service(){
+    override fun onBind(intent: Intent?): IBinder? {
+        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+    }
+
+    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
+        Log.i("TcpHandleService", "已经启动")
+        EventBus.getDefault().register(this)
+        return super.onStartCommand(intent, flags, startId)
+    }
+
+    override fun onDestroy() {
+        EventBus.getDefault().unregister(this)
+        super.onDestroy()
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    fun onMoonEvent(messageEvent: MessageEvent) {
+        Log.i("TcpHandleService", "MessageEvent : " + messageEvent.tag)
+        if (messageEvent.tag==3){
+            var tcpModel = messageEvent.getMessage() as TcpModel
+            Log.i("TcpHandleService", "TcpModel : " + tcpModel.fromId)
+
+            //data 是 InteractionVO
+            var gson = GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).create()
+            var interactionVO = gson.fromJson(tcpModel.data.toString(), InteractionVO::class.java)
+
+            var intent = Intent()
+            intent.setClass(this, RTCVoipAudioRingingActivity::class.java)
+            intent.putExtra("TcpModel",tcpModel)
+            startActivity(intent)
+        }
+    }
+}

+ 2 - 2
home/src/main/res/layout/watch_activity_call_records.xml

@@ -30,8 +30,8 @@
             android:visibility="gone">
 
             <ImageView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="200dp"
+                android:layout_height="200dp"
                 android:layout_centerInParent="true"
                 android:background="@drawable/hu_jiao" />
         </RelativeLayout>

+ 14 - 6
home/src/main/res/layout/watch_activity_dialing_voice.xml

@@ -13,8 +13,8 @@
 
         <ImageView
             android:id="@+id/bao_mother_image_imagev"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="280dp"
+            android:layout_height="280dp"
             android:src="@drawable/bao_ma_tou_xiang" />
 
         <TextView
@@ -24,7 +24,7 @@
             android:layout_gravity="center_horizontal"
             android:layout_marginTop="8px"
             android:text="宝妈名字"
-            android:textSize="16px" />
+            android:textSize="50dp" />
 
     </LinearLayout>
 
@@ -42,12 +42,20 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center_horizontal"
             android:text="00:00:12"
-            android:textSize="16px" />
+            android:textSize="45dp" />
 
-        <ImageView
-            android:id="@+id/hang_up_imagev"
+        <TextView
+            android:id="@+id/voice_status"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="8px"
+            android:textSize="50dp" />
+
+        <ImageView
+            android:id="@+id/hang_up_imagev"
+            android:layout_width="200dp"
+            android:layout_height="200dp"
             android:layout_marginTop="13px"
             android:src="@drawable/yu_yin_gua_duan" />
 

+ 18 - 9
home/src/main/res/layout/watch_activity_voice_calls.xml

@@ -13,8 +13,8 @@
 
         <ImageView
             android:id="@+id/bao_mother_image_imagev"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="280dp"
+            android:layout_height="280dp"
             android:src="@drawable/bao_ma_tou_xiang" />
 
         <TextView
@@ -24,7 +24,16 @@
             android:layout_gravity="center_horizontal"
             android:layout_marginTop="8px"
             android:text="宝妈名字"
-            android:textSize="16px" />
+            android:textSize="50dp" />
+
+        <TextView
+            android:id="@+id/event_text"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="8px"
+            android:text=""
+            android:textSize="45dp" />
 
     </LinearLayout>
 
@@ -35,8 +44,8 @@
         android:layout_height="wrap_content"
         android:layout_above="@+id/call_out_linlyout"
         android:layout_centerHorizontal="true"
-        android:text="00:00:12"
-        android:textSize="16px"
+        android:text=""
+        android:textSize="40dp"
         android:visibility="gone"/>
 
     <LinearLayout
@@ -51,14 +60,14 @@
 
         <ImageView
             android:id="@+id/hang_up_imagev"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="200dp"
+            android:layout_height="200dp"
             android:src="@drawable/yu_yin_gua_duan" />
 
         <ImageView
             android:id="@+id/call_the_voice_imagev"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
+            android:layout_width="200dp"
+            android:layout_height="200dp"
             android:layout_marginLeft="20px"
             android:src="@drawable/yu_yin_jie_ting" />
 

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

@@ -0,0 +1,133 @@
+package com.wdkl.ncs.android.middleware.model.vo;
+
+import com.wdkl.ncs.android.middleware.model.annotation.Column;
+
+<<<<<<< HEAD
+import java.io.Serializable;
+
+=======
+>>>>>>> parent of f5f16a1... 修改
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @program nc
+ * @description:
+ * @author: Vothin
+ * @create: 2021/04/07 16:30
+ */
+
+<<<<<<< HEAD
+public class WatchContactsVO implements Serializable {
+=======
+public class WatchContactsVO {
+>>>>>>> parent of f5f16a1... 修改
+
+    @Column(name = "device_id")
+    @ApiModelProperty(name = "device_id", value = "设备id", hidden = false)
+    private Integer deviceId;
+
+    @Column(name = "device_sip_id")
+    @ApiModelProperty(name = "device_sip_id", value = "设备sip_id", hidden = false)
+    private String deviceSipId;
+
+    @Column(name = "device_eth_ip")
+    @ApiModelProperty(name = "device_eth_ip", value = "设备eth_ip", hidden = false)
+    private String deviceEthIp;
+
+    @Column(name = "frame_type")
+    @ApiModelProperty(name = "frame_type", value = "空间类型", hidden = false)
+    private Integer frameType;
+
+    @Column(name = "frame_name")
+    @ApiModelProperty(name = "frame_name", value = "空间名", hidden = false)
+    private String frameName;
+
+    @Column(name = "frame_alias")
+    @ApiModelProperty(name = "frame_alias", value = "空间别名", hidden = false)
+    private String frameAlias;
+
+    @Column(name = "frame_full_name")
+    @ApiModelProperty(name = "frame_full_name", value = "空间全名", hidden = false)
+    private String frameFullName;
+
+    @Column(name = "customer_named")
+    @ApiModelProperty(name = "customer_named", value = "病人名称", hidden = false)
+    private String customerNamed;
+
+    @Column(name = "customer_id")
+    @ApiModelProperty(name = "customer_id", value = "病人id", hidden = false)
+    private Integer customerId;
+
+    public Integer getDeviceId() {
+        return deviceId;
+    }
+
+    public void setDeviceId(Integer deviceId) {
+        this.deviceId = deviceId;
+    }
+
+    public String getDeviceSipId() {
+        return deviceSipId;
+    }
+
+    public void setDeviceSipId(String deviceSipId) {
+        this.deviceSipId = deviceSipId;
+    }
+
+    public String getDeviceEthIp() {
+        return deviceEthIp;
+    }
+
+    public void setDeviceEthIp(String deviceEthIp) {
+        this.deviceEthIp = deviceEthIp;
+    }
+
+    public Integer getFrameType() {
+        return frameType;
+    }
+
+    public void setFrameType(Integer frameType) {
+        this.frameType = frameType;
+    }
+
+    public String getFrameName() {
+        return frameName;
+    }
+
+    public void setFrameName(String frameName) {
+        this.frameName = frameName;
+    }
+
+    public String getFrameAlias() {
+        return frameAlias;
+    }
+
+    public void setFrameAlias(String frameAlias) {
+        this.frameAlias = frameAlias;
+    }
+
+    public String getFrameFullName() {
+        return frameFullName;
+    }
+
+    public void setFrameFullName(String frameFullName) {
+        this.frameFullName = frameFullName;
+    }
+
+    public String getCustomerNamed() {
+        return customerNamed;
+    }
+
+    public void setCustomerNamed(String customerNamed) {
+        this.customerNamed = customerNamed;
+    }
+
+    public Integer getCustomerId() {
+        return customerId;
+    }
+
+    public void setCustomerId(Integer customerId) {
+        this.customerId = customerId;
+    }
+}
+

+ 12 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -28,6 +28,18 @@ public class DeviceChannel {
 
         if (tcpModel.getType()== TcpType.VOICE && tcpModel.getAction()==TcpAction.VoiceAction.SUCCESS){
             EventBus.getDefault().post(new MessageEvent(tcpModel, 1));
+        } else if ((tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.ACCEPT)  //我方呼出,对方接受
+            //todo:调用通话中界面;建立数据通话
+            || (tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.REJECT) //我方呼出,对方拒绝
+            //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方拒绝并停留3秒,结束至正常界面
+            || (tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.CALLING) //我方呼出,对方通话中
+            //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方占线并停留3秒,结束至正常界面;更新左侧
+            || (tcpModel.getType()== TcpType.VOICE && tcpModel.getAction() == TcpAction.VoiceAction.FAILED)){ //我方呼出,对方不在线,设备离线或其它错误
+            //todo: 清掉呼出的TcpModel,通话中界面更新 --- 显示对方离线并停留3秒,结束至正常界面;更新左侧
+            EventBus.getDefault().post(new MessageEvent(tcpModel, 2));
+        } else if ((tcpModel.getType()==TcpType.IM && tcpModel.getAction() == TcpAction.IMAction.MSG)
+            || (tcpModel.getType()==TcpType.EVENT && tcpModel.getAction() == TcpAction.EventAction.KEY_CLICK)) {
+            EventBus.getDefault().post(new MessageEvent(tcpModel, 3));
         } else {
             EventBus.getDefault().post(new MessageEvent(tcpModel, 0));
         }

+ 6 - 6
middleware/src/main/code/com/wdkl/ncs/android/middleware/utils/MessageEvent.kt

@@ -1,9 +1,9 @@
 package com.wdkl.ncs.android.middleware.utils
 
-class MessageEvent(var tcpModel: Any,var type: Int) {
+class MessageEvent(var tcpModel: Any,var tag: Int) {
 
     private var message: Any? = null
-    private var types: Int? =0
+    private var tagInit: Int =0
 
     fun getMessage(): Any? {
         return tcpModel
@@ -13,12 +13,12 @@ class MessageEvent(var tcpModel: Any,var type: Int) {
         this.message = tcpModel
     }
 
-    fun getType(): Int? {
-        return types
+    fun getType(): Int {
+        return tagInit
     }
 
-    fun setType(type: Int?) {
-        this.types = type
+    fun setType(tag: Int) {
+        this.tagInit = tag
     }