Explorar o código

1。修改呼叫显示音量控制以
2。增加a133适配

xunchuanzhi hai 1 ano
pai
achega
ea0f78b12a

+ 1 - 1
android_bed/src/main/res/layout/callingbed_hospital_info_main.xml

@@ -211,7 +211,7 @@
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_marginTop="@dimen/d7"
-                        android:text="hlttp:/yuan.com"
+                        android:text="http:/yuan.com"
                         android:layout_below="@+id/hospital_info_web_img"
                         android:textColor="@color/black"
                         android:textSize="@dimen/font_size_12"

+ 1 - 0
android_host/build.gradle

@@ -69,6 +69,7 @@ static String getDate() {
 }
 
 dependencies {
+    implementation files('libs/zhylapi.jar')
 
     /**
      * 单元测试

BIN=BIN
android_host/libs/zhylapi.jar


+ 48 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/SkyCallFragment.kt

@@ -7,6 +7,7 @@ import android.os.SystemClock
 import android.util.Log
 import android.view.View
 import android.view.ViewGroup
+import android.widget.SeekBar
 import com.alibaba.android.vlayout.VirtualLayoutManager
 import com.alibaba.fastjson.JSONObject
 import com.google.gson.Gson
@@ -63,6 +64,11 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
     private var outGoing: Boolean = false
     private var acceptCall = false
 
+    private var speakerMute = false
+    private var micMute: Boolean = false // 是否关闭麦克风
+    private var volume = 60
+
+
     private var janusClient: JanusClient? = null
     private var room: Room?=null
     private var videoRoomCallback: VideoRoomCallback? = null
@@ -195,6 +201,44 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
             Constant.CALL_STATE = Constant.CALL_STANDBY
             DeviceChannel.calling = false
         }
+        sky_call_speaker.setOnClickListener {
+            speakerMute = !speakerMute
+            Log.d(TAG,"Speaker enable: $speakerMute")
+
+            WebRTCEngine.getInstance().setVolumeMute(speakerMute)
+            sky_call_speaker.isSelected = speakerMute
+        }
+
+        sky_voice_call_mute.setOnClickListener {
+            micMute = !micMute
+            Log.d(TAG,"静音切换: $micMute")
+
+            WebRTCEngine.getInstance().muteAudio(micMute)
+            sky_voice_call_mute.isSelected = micMute
+        }
+
+        call_volume_bar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{
+            override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
+                tv_volume.text = "" + progress
+                if (seekBar!!.progress <= 1) {
+                    tv_volume.text = "1"
+                } else {
+                    tv_volume.text = "" + progress
+                }
+            }
+
+            override fun onStartTrackingTouch(seekBar: SeekBar?) {
+                //
+            }
+
+            override fun onStopTrackingTouch(seekBar: SeekBar?) {
+                if (seekBar!!.progress <= 2) {
+                    VoiceManagerUtil.setCallVoice(activity, 20)
+                } else {
+                    VoiceManagerUtil.setCallVoice(activity, seekBar.progress*10)
+                }
+            }
+        })
     }
 
     override fun destroy() {
@@ -244,6 +288,9 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
         sky_voice_call_timer.visibility = View.VISIBLE
         sky_voice_call_timer.base = SystemClock.elapsedRealtime()
         sky_voice_call_timer.start()
+        sky_call_speaker.visibility = View.VISIBLE
+        sky_voice_call_mute.visibility = View.VISIBLE
+        ll_voice_volume_bar.visibility = View.VISIBLE
     }
 
     private fun cancelCall(fromId: Int, toId: Int?, interactionId: Int?) {
@@ -436,7 +483,7 @@ class SkyCallFragment: BaseCallFragment(), CallSessionCallback {
                     } else {
                         //分机加入视频通话,显示探视双方画面,并静音
                         visit_list_view.visibility = View.GONE
-                        sky_call_speaker_on.visibility = View.VISIBLE
+                        sky_call_speaker.visibility = View.VISIBLE
                         inVisiting = true
                         WebRTCEngine.getInstance().muteAudio(true)
                         HardWareFactroy.getHardTools().setAudioMute(BaseApplication.appContext, true)

+ 1 - 1
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/hardware/HardTools.java

@@ -22,7 +22,7 @@ public  class HardTools {
     //是否卸载旧版本
     public void uninstallApp(Context context , boolean isuninstall, String name){}
     //串口设置
-  public void setSerial(NurseHomeActivity activity){}
+    public void setSerial(NurseHomeActivity activity){}
     //导航栏隐藏或者显示
     public void toggleStatusBar(Context context,boolean is){}
 

+ 178 - 0
android_host/src/main/java/com/wdkl/ncs/android/component/nursehome/hardware/imp/A133HardTools.java

@@ -0,0 +1,178 @@
+package com.wdkl.ncs.android.component.nursehome.hardware.imp;
+
+import android.app.Application;
+import android.app.zhyl.ZhylManager;
+import android.content.Context;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.util.Log;
+
+import com.wdkl.ncs.android.component.nursehome.activity.AppUpdateActivity;
+import com.wdkl.ncs.android.component.nursehome.activity.NurseHomeActivity;
+import com.wdkl.ncs.android.component.nursehome.hardware.HardTools;
+import com.wdkl.ncs.android.component.nursehome.util.AppUpdateHelper;
+import com.wdkl.ncs.android.component.nursehome.util.NetHelper;
+import com.wdkl.ncs.android.component.nursehome.util.StatusBarHelper;
+import com.wdkl.ncs.android.component.nursehome.util.VoiceManagerUtil;
+import com.wdkl.ncs.android.lib.base.BaseApplication;
+import com.wdkl.ncs.android.lib.utils.AppTool;
+import com.wdkl.ncs.android.middleware.common.Constant;
+import com.wdkl.ncs.android.middleware.utils.AppUtil;
+
+import java.util.List;
+
+import kotlin.Unit;
+import kotlin.jvm.functions.Function0;
+
+/**
+ * W——KR主机硬件控制类
+ *
+ * */
+public class A133HardTools extends HardTools {
+
+    public static final String HARDWDT_SERVICE = "A133HardTools";
+    private Application app;
+
+    private ZhylManager zhylManager;
+
+    private static class A133HardToolsHolder{
+        private final  static A133HardTools a133HardTools = new A133HardTools();
+    }
+
+    public static A133HardTools getInstance(){
+        return A133HardToolsHolder.a133HardTools;
+    }
+
+    @Override
+    public void init() {
+
+    }
+
+    @Override
+    public void unInit() {
+
+    }
+    @Override
+    public void toggleStatusBar(Context context,boolean is) {
+        ZhylManager.getInstance(BaseApplication.appContext).disp_setNavigationBar(false);
+        ZhylManager.getInstance(BaseApplication.appContext).disp_setStatusBar(false);
+    }
+    @Override
+    public void resetDevice() {
+//        SerialPortHelper.resetDevice();
+    }
+
+    @Override
+    public void setAudioMode(Context context, int mode) {
+
+    }
+
+    @Override
+    public void setAudioMute(Context context, boolean mute) {
+        VoiceManagerUtil.setAudioMute(BaseApplication.appContext, mute);
+    }
+
+    @Override
+    public void resetDevicex(Application application) {
+        AppUpdateHelper.reboot(application);
+    }
+    @Override
+    public void Registration(Context context) {
+        try {
+            ZhylManager zhylManager = ZhylManager.getInstance(BaseApplication.appContext);
+            //设置开机自启动
+            zhylManager.sys_setSystemBootApp("com.wdkl.app.ncs.callingdoor/com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity");
+            //隐藏虚拟导航栏
+            zhylManager.disp_setNavigationBar(false);
+
+            //切换mic
+            if (!zhylManager.sys_getMICEnable()) {
+                zhylManager.sys_setMICEnable(true);
+                AppTool.Time.delay(10000, new Function0<Unit>() {
+                    @Override
+                    public Unit invoke() {
+                        zhylManager.sys_setReboot();
+                        return null;
+                    }
+                });
+            }
+            Constant.LOCAL_MAC = zhylManager.net_getMacAddress("eth0");
+            Constant.DEVICE_REGISTER_ID = Constant.LOCAL_MAC;
+        } catch (Exception e) {
+            //异常处理
+        }
+    }
+
+    @Override
+    public void setSerial(NurseHomeActivity activity) {
+//        activity.kaerregReceiver();
+//        activity.updatePower();
+
+    }
+
+    @Override
+    public void uninstallApp(Context context, boolean isuninstall, String name) {
+        //卸载原来二代系统apk
+        if (isuninstall) {
+            Thread thread = new Thread(new Runnable() {
+                @Override
+                public void run() {
+                    // 在子线程中执行的代码
+                    if (checkAppExist(context,name)) {
+                        AppUtil.uninstallApp(name);
+                    }
+                }
+            });
+        }
+    }
+
+    @Override
+    public void setSOSStart() {
+//        SOSHelper.sosStart();
+    }
+
+    @Override
+    public void setSOSStop() {
+//        SOSHelper.sosStop();
+    }
+    @Override
+    public void setDoorLight(int type) {
+//        if (type==1){
+//            //绿色
+//            SerialPortHelper.setDoorLight(1, Constant.nursingColor);
+//        }else if (type==2){
+//            //白色
+//            SerialPortHelper.setDoorLight(1, "111"); //白色
+//        }else if (type==3){
+//            //红色
+//            SerialPortHelper.setDoorLight(1, "200"); //红色闪烁
+//        }else if (type==4){
+//            //红色
+//            SerialPortHelper.setDoorLight(0, "000"); //关闭
+//        }
+    }
+
+    @Override
+    public void installApk(AppUpdateActivity context) {
+    }
+
+    @Override
+    public void startInstallApk(AppUpdateActivity context) {
+
+    }
+
+    private boolean checkAppExist(Context context, String name) {
+        PackageManager packageManager = context.getPackageManager();
+        List<PackageInfo> packageInfoList = packageManager.getInstalledPackages(0);
+        boolean appExist = false;
+        for (PackageInfo pInfo : packageInfoList) {
+            if (name.equals(pInfo.packageName)) {
+                appExist = true;
+                break;
+            }
+        }
+        Log.e("wdkl_app", "callingdoor app exist: " + appExist);
+        return appExist;
+    }
+}

+ 2 - 2
android_host/src/main/res/layout/sky_voice_call_layout.xml

@@ -139,11 +139,11 @@
                         android:src="@drawable/selector_call_hangup" />
 
                     <ImageView
-                        android:id="@+id/sky_call_speaker_on"
+                        android:id="@+id/sky_call_speaker"
                         android:layout_width="84dp"
                         android:layout_height="84dp"
                         android:layout_marginStart="40dp"
-                        android:src="@drawable/ic_speaker_on"
+                        android:src="@drawable/av_speaker_selector"
                         android:visibility="gone"/>
                 </LinearLayout>
             </LinearLayout>

+ 0 - 3
callingdoor/src/main/java/com/wdkl/app/ncs/callingdoor/hardware/imp/Wa133HardTools.java

@@ -31,9 +31,6 @@ public class Wa133HardTools extends HardTools {
 
     public static final String HARDWDT_SERVICE = "Wa133HardTools";
 
-
-
-
     private static class Wa133HardToolsHolder{
         private final  static Wa133HardTools wa133HardTools = new Wa133HardTools();
     }

+ 13 - 1
janus/src/main/java/com/wdkl/ncs/janus/rtc/WebRTCEngine.java

@@ -96,6 +96,8 @@ public class WebRTCEngine {
     private boolean screencaptureEnabled = false;
     private boolean isSwitch = false; // 是否正在切换摄像头
 
+    private AudioDeviceModule audioDeviceModule;
+
     private ScheduledExecutorService executor;
     private static final WebRTCEngine instance = new WebRTCEngine();
     private WebRTCEngine() {
@@ -216,7 +218,11 @@ public class WebRTCEngine {
         }
 
         // 构造Factory
-        AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(mContext).createAudioDeviceModule();
+        // 构造Factory
+        audioDeviceModule = JavaAudioDeviceModule.builder(mContext)
+                //.setSampleRate(44100)
+                .createAudioDeviceModule();
+//        AudioDeviceModule audioDeviceModule = JavaAudioDeviceModule.builder(mContext).createAudioDeviceModule();
         PeerConnectionFactory.Options options = new PeerConnectionFactory.Options();
         return PeerConnectionFactory.builder()
                 .setOptions(options)
@@ -466,6 +472,12 @@ public class WebRTCEngine {
         return false;
     }
 
+    public void setVolumeMute(boolean on) {
+        if (audioDeviceModule != null) {
+            audioDeviceModule.setSpeakerMute(on);
+        }
+    }
+
     /**
      * 结束本地预览
      */

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

@@ -36,7 +36,6 @@ public class DeviceChannel {
                         responseTcpModel = VoiceUtil.voiceSuccess(tcpModel.getTid(), tcpModel.getToId(), tcpModel.getFromId(), interactionVO);
                         return responseTcpModel;
                     }else {
-
                         if (Constant.CALL_STATE != Constant.CALL_STANDBY){
                             responseTcpModel = VoiceUtil.voiceCalling(tcpModel.getTid(), tcpModel.getToId(), tcpModel.getFromId(), interactionVO.getId());
                             return responseTcpModel;