فهرست منبع

<增加权限检查,增加网络检查>

weizhengliang 4 سال پیش
والد
کامیت
f0d567561c

+ 6 - 2
app/src/main/AndroidManifest.xml

@@ -17,6 +17,10 @@
 
     <uses-permission android:name ="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
+    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
+
     <application
         android:allowBackup="true"
         android:icon="@mipmap/launcher"
@@ -31,10 +35,10 @@
             android:value="GlideModule" />
         <meta-data
             android:name="design_width_in_dp"
-            android:value="640"/>
+            android:value="240"/>
         <meta-data
             android:name="design_height_in_dp"
-            android:value="400"/>
+            android:value="240"/>
 
 <!--        <activity android:name="com.wdkl.ncs.android.component.welcome.activity.WelcomeActivity"-->
 <!--            >-->

+ 1 - 0
gradle.properties

@@ -21,3 +21,4 @@ org.gradle.parallel=true
 org.gradle.configureondemand=true
 android.useAndroidX=true
 android.enableJetifier=true
+android.enableAapt2=false

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

@@ -1,7 +1,16 @@
 package com.wdkl.ncs.android.component.home.activity
 
+import android.content.BroadcastReceiver
+import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
 import android.graphics.Color
+import android.net.ConnectivityManager
+import android.net.wifi.WifiInfo
+import android.net.wifi.WifiManager
+import android.telephony.PhoneStateListener
+import android.telephony.SignalStrength
+import android.telephony.TelephonyManager
 import android.util.Log
 import android.view.View
 import com.enation.javashop.android.jrouter.external.annotation.Router
@@ -10,6 +19,7 @@ import com.google.gson.Gson
 import com.wdkl.ncs.android.component.home.R
 import com.wdkl.ncs.android.component.home.databinding.WatchActivityHomeBinding
 import com.wdkl.ncs.android.component.home.launch.HomeLaunch
+import com.wdkl.ncs.android.component.home.util.NetHelper
 import com.wdkl.ncs.android.lib.base.BaseActivity
 import com.wdkl.ncs.android.lib.utils.AppTool
 import com.wdkl.ncs.android.lib.utils.push
@@ -34,6 +44,12 @@ import org.greenrobot.eventbus.ThreadMode
 class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivityHomeBinding>(), WatchHomeActivityContract.View, View.OnClickListener {
     var TAG = WatchHomeActivity::class.java.getSimpleName()
 
+    //监听网络变化
+    lateinit var wifiManager: WifiManager
+    lateinit var teleManager: TelephonyManager
+    lateinit var wifiReceiver: WifiReceiver
+    private var netType: Int = -1
+
     override fun getLayId(): Int {
         return R.layout.watch_activity_home
     }
@@ -52,6 +68,39 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
 //                TcpClient.getInstance().init("47.106.200.55", 5080, 9)
             }
         }).start()
+
+        wifiManager = (applicationContext.getSystemService(Context.WIFI_SERVICE)) as WifiManager
+        teleManager = (applicationContext.getSystemService(Context.TELEPHONY_SERVICE)) as TelephonyManager
+
+        netType = NetHelper.getInstance().getNetworkState(applicationContext)
+        Log.e(TAG, "wzlll 网络类型:" + netType)
+        if (netType == NetHelper.NETWORK_2G || netType == NetHelper.NETWORK_3G || netType == NetHelper.NETWORK_4G) {
+            if (teleManager != null) {
+                teleManager.listen(object : PhoneStateListener() {
+                    override fun onSignalStrengthsChanged(signalStrength: SignalStrength) {
+                        super.onSignalStrengthsChanged(signalStrength)
+                        val asu = signalStrength.gsmSignalStrength
+                        val lastSignal = -113 + 2 * asu;
+                        if (lastSignal > 0) {
+                            var mobileNetworkSignal = lastSignal
+                        }
+                        Log.e(TAG, "wzlll 数据连接信号强度:" + lastSignal)
+                    }
+                }, PhoneStateListener.LISTEN_SIGNAL_STRENGTHS);
+            }
+        }
+        regReceiver()
+    }
+
+    private fun regReceiver() {
+        wifiReceiver = WifiReceiver()
+        val intentFilter = IntentFilter()
+        intentFilter.addAction(WifiManager.RSSI_CHANGED_ACTION)
+        registerReceiver(wifiReceiver, intentFilter)
+    }
+
+    private fun unRegReceiver() {
+        unregisterReceiver(wifiReceiver)
     }
 
     override fun bindEvent() {
@@ -63,6 +112,7 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
     }
 
     override fun destory() {
+        unRegReceiver()
     }
 
     override fun render() {
@@ -164,4 +214,26 @@ class WatchHomeActivity : BaseActivity<WatchHomeActivityPresenter, WatchActivity
             }
         }
     }
+
+
+    //WiFi监听
+    inner class WifiReceiver: BroadcastReceiver() {
+        override fun onReceive(context: Context, intent: Intent) {
+            if (intent.action == WifiManager.RSSI_CHANGED_ACTION) {
+                if (wifiManager != null && netType == NetHelper.NETWORK_WIFI) {
+                    val wifiInfo = wifiManager.getConnectionInfo()
+                    val wifi = wifiInfo.getRssi ();//获取wifi信号强度
+                    if (wifi > -50 && wifi < 0) {//最强
+                        Log.e(TAG, "wzlll 最强")
+                    } else if (wifi > -70 && wifi < -50) {//较强
+                        Log.e(TAG, "wzlll 较强")
+                    } else if (wifi > -80 && wifi < -70) {//较弱
+                        Log.e(TAG, "wzlll 较弱")
+                    } else if (wifi > -100 && wifi < -80) {//微弱
+                        Log.e(TAG, "wzlll 微弱")
+                    }
+                }
+            }
+        }
+    }
 }

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

@@ -1,10 +1,12 @@
 package com.wdkl.ncs.android.component.home.activity
 
+import android.Manifest
 import android.content.Intent
 import android.os.Handler
 import android.util.Log
 import com.enation.javashop.android.jrouter.external.annotation.Router
 import com.enation.javashop.net.engine.model.NetState
+import com.enation.javashop.net.engine.plugin.permission.RxPermissions
 import com.starrtc.demo.demo.service.KeepLiveService
 import com.starrtc.demo.utils.AEvent
 import com.wdkl.ncs.android.component.home.R
@@ -16,7 +18,9 @@ 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
 import com.wdkl.ncs.android.lib.utils.AppTool
+import com.wdkl.ncs.android.lib.utils.joinManager
 import com.wdkl.ncs.android.lib.utils.push
+import com.wdkl.ncs.android.lib.utils.showMessage
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchActivityContract
 import com.wdkl.ncs.android.middleware.logic.contract.home.WatchDeviceContract
 import com.wdkl.ncs.android.middleware.logic.presenter.home.WatchActivityPresenter
@@ -25,6 +29,7 @@ import com.wdkl.ncs.android.middleware.model.dos.DeviceDO
 import com.wdkl.ncs.android.middleware.model.vo.WatchContactsVO
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
+import io.reactivex.Observable
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode
 
@@ -43,8 +48,8 @@ class WatchRegisterActivity: BaseActivity<WatchDevicePresenter, WatchActivityReg
     override fun init() {
         Constants.mac = NetHelper.getInstance().macAddress
         Log.e(TAG,"mac "+Constants.mac)
-        presenter.loadData(Constants.mac)
 
+        requestPermissions()
     }
 
     override fun bindEvent() {
@@ -63,11 +68,8 @@ class WatchRegisterActivity: BaseActivity<WatchDevicePresenter, WatchActivityReg
 
 //        initSDK("000100")
         initSDK(data.sipId)
-        AppTool.Time.delay(300) {
-            push("/watch/home")
-            finish()
-        }
 
+        toHome()
     }
 
     private fun initSDK(DeviceSipId: String) {
@@ -81,6 +83,30 @@ class WatchRegisterActivity: BaseActivity<WatchDevicePresenter, WatchActivityReg
 //        val intent2 = Intent(this, RTCKeepLiveService::class.java)
 //        startService(intent2)
     }
+
+    private fun requestPermissions(){
+        Observable.just("").compose(RxPermissions(this).ensure(Manifest.permission.CAMERA,
+                Manifest.permission.READ_EXTERNAL_STORAGE,
+                Manifest.permission.WRITE_EXTERNAL_STORAGE,
+                Manifest.permission.ACCESS_WIFI_STATE,
+                Manifest.permission.BLUETOOTH,
+                Manifest.permission.RECORD_AUDIO)).subscribe {
+            if (it){
+                presenter.loadData(Constants.mac)
+            }else{
+                showMessage("请重新授权,进入App")
+                requestPermissions()
+            }
+        }.joinManager(disposableManager)
+    }
+
+    fun toHome() {
+        AppTool.Time.delay(200) {
+            push("/watch/home")
+            finish()
+        }
+    }
+
     override fun onError(message: String, type: Int) {
 
     }

+ 82 - 0
home/src/main/code/com/wdkl/ncs/android/component/home/util/NetHelper.java

@@ -3,9 +3,11 @@ package com.wdkl.ncs.android.component.home.util;
 import android.annotation.SuppressLint;
 import android.content.Context;
 import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
 import android.net.wifi.WifiInfo;
 import android.net.wifi.WifiManager;
 import android.os.Build;
+import android.telephony.TelephonyManager;
 import android.text.TextUtils;
 
 import com.wdkl.ncs.android.lib.base.BaseApplication;
@@ -32,6 +34,13 @@ public class NetHelper {
     private static final int SCHEDULE_TIME = 30000;
     public static boolean NetConn = false;
 
+    public static final int NETWORK_NONE = -1;
+    public static final int NETWORK_WIFI = 1;
+    public static final int NETWORK_2G = 2;
+    public static final int NETWORK_3G = 3;
+    public static final int NETWORK_4G = 4;
+    public static final int NETWORK_MOBILE = 5;
+
     /**
      * 以太网是否ping成功
      */
@@ -512,4 +521,77 @@ public class NetHelper {
 
         return -1;
     }
+
+    /**
+     * 获取当前网络连接的类型
+     *
+     * @param context context
+     * @return int
+     */
+    public int getNetworkState(Context context) {
+        ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); // 获取网络服务
+        if (null == connManager) { // 为空则认为无网络
+            return NETWORK_NONE;
+        }
+        // 获取网络类型,如果为空,返回无网络
+        NetworkInfo activeNetInfo = connManager.getActiveNetworkInfo();
+        if (activeNetInfo == null || !activeNetInfo.isAvailable()) {
+            return NETWORK_NONE;
+        }
+        // 判断是否为WIFI
+        NetworkInfo wifiInfo = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+        if (null != wifiInfo) {
+            NetworkInfo.State state = wifiInfo.getState();
+            if (null != state) {
+                if (state == NetworkInfo.State.CONNECTED || state == NetworkInfo.State.CONNECTING) {
+                    return NETWORK_WIFI;
+                }
+            }
+        }
+        // 若不是WIFI,则去判断是2G、3G、4G网
+        TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        int networkType = telephonyManager.getNetworkType();
+        switch (networkType) {
+            /*
+             GPRS : 2G(2.5) General Packet Radia Service 114kbps
+             EDGE : 2G(2.75G) Enhanced Data Rate for GSM Evolution 384kbps
+             UMTS : 3G WCDMA 联通3G Universal Mobile Telecommunication System 完整的3G移动通信技术标准
+             CDMA : 2G 电信 Code Division Multiple Access 码分多址
+             EVDO_0 : 3G (EVDO 全程 CDMA2000 1xEV-DO) Evolution - Data Only (Data Optimized) 153.6kps - 2.4mbps 属于3G
+             EVDO_A : 3G 1.8mbps - 3.1mbps 属于3G过渡,3.5G
+             1xRTT : 2G CDMA2000 1xRTT (RTT - 无线电传输技术) 144kbps 2G的过渡,
+             HSDPA : 3.5G 高速下行分组接入 3.5G WCDMA High Speed Downlink Packet Access 14.4mbps
+             HSUPA : 3.5G High Speed Uplink Packet Access 高速上行链路分组接入 1.4 - 5.8 mbps
+             HSPA : 3G (分HSDPA,HSUPA) High Speed Packet Access
+             IDEN : 2G Integrated Dispatch Enhanced Networks 集成数字增强型网络 (属于2G,来自维基百科)
+             EVDO_B : 3G EV-DO Rev.B 14.7Mbps 下行 3.5G
+             LTE : 4G Long Term Evolution FDD-LTE 和 TDD-LTE , 3G过渡,升级版 LTE Advanced 才是4G
+             EHRPD : 3G CDMA2000向LTE 4G的中间产物 Evolved High Rate Packet Data HRPD的升级
+             HSPAP : 3G HSPAP 比 HSDPA 快些
+             */
+            // 2G网络
+            case TelephonyManager.NETWORK_TYPE_GPRS:
+            case TelephonyManager.NETWORK_TYPE_CDMA:
+            case TelephonyManager.NETWORK_TYPE_EDGE:
+            case TelephonyManager.NETWORK_TYPE_1xRTT:
+            case TelephonyManager.NETWORK_TYPE_IDEN:
+                return NETWORK_2G;
+            // 3G网络
+            case TelephonyManager.NETWORK_TYPE_EVDO_A:
+            case TelephonyManager.NETWORK_TYPE_UMTS:
+            case TelephonyManager.NETWORK_TYPE_EVDO_0:
+            case TelephonyManager.NETWORK_TYPE_HSDPA:
+            case TelephonyManager.NETWORK_TYPE_HSUPA:
+            case TelephonyManager.NETWORK_TYPE_HSPA:
+            case TelephonyManager.NETWORK_TYPE_EVDO_B:
+            case TelephonyManager.NETWORK_TYPE_EHRPD:
+            case TelephonyManager.NETWORK_TYPE_HSPAP:
+                return NETWORK_3G;
+            // 4G网络
+            case TelephonyManager.NETWORK_TYPE_LTE:
+                return NETWORK_4G;
+            default:
+                return NETWORK_MOBILE;
+        }
+    }
 }

+ 1 - 1
home/src/main/res/layout/adapter_watch_contacts_item.xml

@@ -6,7 +6,7 @@
         android:layout_width="match_parent"
         android:layout_height="50px"
         android:layout_marginTop="7px"
-        android:background="#FFFFFF ">
+        android:background="#FFFFFF">
 
         <RelativeLayout
             android:layout_width="match_parent"