From 223e5b7de21797cdb4fa4c2a30c58beaad13bc68 Mon Sep 17 00:00:00 2001 From: zhongchao Date: Thu, 25 Feb 2021 18:06:29 +0800 Subject: [PATCH] add wifi register --- .idea/gradle.xml | 1 + app/src/main/AndroidManifest.xml | 11 ++++- .../java/com/mogo/cloud/LivePlayActivity.java | 15 +++++- .../com/mogo/cloud/WifiBroadCastReceiver.java | 43 ---------------- .../mogo/cloud/wifi/IWifiStateListener.java | 9 ++++ .../cloud/wifi/WifiBroadCastReceiver.java | 49 +++++++++++++++++++ .../com/mogo/cloud/wifi/WifiStateManager.java | 46 +++++++++++++++++ .../main/res/layout/activity_live_play.xml | 12 +++-- 8 files changed, 138 insertions(+), 48 deletions(-) delete mode 100644 app/src/main/java/com/mogo/cloud/WifiBroadCastReceiver.java create mode 100644 app/src/main/java/com/mogo/cloud/wifi/IWifiStateListener.java create mode 100644 app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java create mode 100644 app/src/main/java/com/mogo/cloud/wifi/WifiStateManager.java diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 1563bc1..8116b81 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -26,6 +26,7 @@ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d3a9266..d060819 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,6 +11,8 @@ + + - + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/mogo/cloud/LivePlayActivity.java b/app/src/main/java/com/mogo/cloud/LivePlayActivity.java index 4b6da7a..6945598 100644 --- a/app/src/main/java/com/mogo/cloud/LivePlayActivity.java +++ b/app/src/main/java/com/mogo/cloud/LivePlayActivity.java @@ -1,24 +1,29 @@ package com.mogo.cloud; +import android.net.wifi.WifiInfo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.SurfaceView; import android.widget.EditText; +import android.widget.TextView; import android.widget.Toast; import android.widget.ToggleButton; import com.mogo.cloud.trafficlive.api.ITrafficLiveCallBack; import com.mogo.cloud.trafficlive.api.MoGoAiCloudTrafficLive; +import com.mogo.cloud.wifi.IWifiStateListener; +import com.mogo.cloud.wifi.WifiStateManager; -public class LivePlayActivity extends AppCompatActivity implements ITrafficLiveCallBack { +public class LivePlayActivity extends AppCompatActivity implements ITrafficLiveCallBack, IWifiStateListener { private String TAG = "LiveActivity"; private SurfaceView surfaceView; private ToggleButton liveToggleBtn; private EditText etLookRoomId; + private TextView tvWifiState; private String liveSn; @Override @@ -28,6 +33,7 @@ public class LivePlayActivity extends AppCompatActivity implements ITrafficLiveC surfaceView = findViewById(R.id.surfaceView); etLookRoomId = findViewById(R.id.etLookRoomId); liveToggleBtn = findViewById(R.id.liveToggleBtn); + tvWifiState = findViewById(R.id.tvWifiState); liveToggleBtn.setOnCheckedChangeListener((buttonView, isChecked) -> { Toast.makeText(getApplicationContext(), buttonView.getText(), Toast.LENGTH_SHORT).show(); if (isChecked) { @@ -37,6 +43,7 @@ public class LivePlayActivity extends AppCompatActivity implements ITrafficLiveC MoGoAiCloudTrafficLive.stopLive(liveSn); } }); + WifiStateManager.getInstance().registerWifiStateListener(this); } @Override @@ -44,6 +51,7 @@ public class LivePlayActivity extends AppCompatActivity implements ITrafficLiveC super.onDestroy(); MoGoAiCloudTrafficLive.stopLive(liveSn); MoGoAiCloudTrafficLive.destroyLive(); + WifiStateManager.getInstance().unRegisterWifiStateListener(this); } @Override @@ -60,4 +68,9 @@ public class LivePlayActivity extends AppCompatActivity implements ITrafficLiveC public void onError(String errorMsg) { Log.d(TAG, "发生错误 onError msg: " + errorMsg); } + + @Override + public void onWifiState(WifiInfo wifiInfo) { + tvWifiState.setText("wifiLevel: " + Math.abs(wifiInfo.getRssi())); + } } \ No newline at end of file diff --git a/app/src/main/java/com/mogo/cloud/WifiBroadCastReceiver.java b/app/src/main/java/com/mogo/cloud/WifiBroadCastReceiver.java deleted file mode 100644 index 923fc6b..0000000 --- a/app/src/main/java/com/mogo/cloud/WifiBroadCastReceiver.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.mogo.cloud; - -import android.content.BroadcastReceiver; -import android.content.Context; -import android.content.Intent; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; - -import com.mogo.cloud.utils.logger.Logger; - -public class WifiBroadCastReceiver extends BroadcastReceiver { - - private static final String TAG = "WifiBroadCastReceiver"; - - @Override - public void onReceive(Context context, Intent intent) { - int wifiState = intent.getIntExtra("wifi_state", 0); - WifiManager wifiManager = ((WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE)); - WifiInfo wifiInfo = wifiManager.getConnectionInfo(); - int linkSpeed = wifiInfo.getLinkSpeed(); - Logger.d(TAG, "wifi linkSpeed : " + linkSpeed); //wifi连接速度 - //0到-50表示信号最好,-50到-70表示信号偏差,小于-70表示最差,有可能连接不上或者掉线 - int level = Math.abs(wifiInfo.getRssi()); - Logger.d(TAG, "wifi level : " + level); //wifi信号强度 - switch (wifiState) { - case WifiManager.WIFI_STATE_DISABLING: - Logger.d(TAG, "WIFI State : DISABLING"); - break; - case WifiManager.WIFI_STATE_DISABLED: - Logger.d(TAG, "WIFI State : DISABLED"); - break; - case WifiManager.WIFI_STATE_ENABLING: - Logger.d(TAG, "WIFI State : ENABLING"); - break; - case WifiManager.WIFI_STATE_ENABLED: - Logger.d(TAG, "WIFI State : ENABLED"); - break; - case WifiManager.WIFI_STATE_UNKNOWN: - Logger.d(TAG, "WIFI State : UNKNOWN"); - break; - } - } -} diff --git a/app/src/main/java/com/mogo/cloud/wifi/IWifiStateListener.java b/app/src/main/java/com/mogo/cloud/wifi/IWifiStateListener.java new file mode 100644 index 0000000..38cc0cc --- /dev/null +++ b/app/src/main/java/com/mogo/cloud/wifi/IWifiStateListener.java @@ -0,0 +1,9 @@ +package com.mogo.cloud.wifi; + +import android.net.wifi.WifiInfo; + +public interface IWifiStateListener { + + void onWifiState(WifiInfo wifiInfo); + +} diff --git a/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java b/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java new file mode 100644 index 0000000..9f10f4c --- /dev/null +++ b/app/src/main/java/com/mogo/cloud/wifi/WifiBroadCastReceiver.java @@ -0,0 +1,49 @@ +package com.mogo.cloud.wifi; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; + +import com.mogo.cloud.utils.logger.Logger; + +public class WifiBroadCastReceiver extends BroadcastReceiver { + + private static final String TAG = "WifiBroadCastReceiver"; + + @Override + public void onReceive(Context context, Intent intent) { + int wifiState = intent.getIntExtra("wifi_state", 0); + WifiManager wifiManager = ((WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE)); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + if (wifiInfo != null) { + Logger.d(TAG, "onReceive wifiInfo, update wifiState"); + WifiStateManager.getInstance().updateWifiState(wifiInfo); + + int linkSpeed = wifiInfo.getLinkSpeed(); + Logger.d(TAG, "wifi linkSpeed : " + linkSpeed); //wifi连接速度 + //0到-50表示信号最好,-50到-70表示信号偏差,小于-70表示最差,有可能连接不上或者掉线 + int level = Math.abs(wifiInfo.getRssi()); + Logger.d(TAG, "wifi level : " + level); //wifi信号强度 + + switch (wifiState) { + case WifiManager.WIFI_STATE_DISABLING: + Logger.d(TAG, "WIFI State : DISABLING"); + break; + case WifiManager.WIFI_STATE_DISABLED: + Logger.d(TAG, "WIFI State : DISABLED"); + break; + case WifiManager.WIFI_STATE_ENABLING: + Logger.d(TAG, "WIFI State : ENABLING"); + break; + case WifiManager.WIFI_STATE_ENABLED: + Logger.d(TAG, "WIFI State : ENABLED"); + break; + case WifiManager.WIFI_STATE_UNKNOWN: + Logger.d(TAG, "WIFI State : UNKNOWN"); + break; + } + } + } +} diff --git a/app/src/main/java/com/mogo/cloud/wifi/WifiStateManager.java b/app/src/main/java/com/mogo/cloud/wifi/WifiStateManager.java new file mode 100644 index 0000000..7fdd194 --- /dev/null +++ b/app/src/main/java/com/mogo/cloud/wifi/WifiStateManager.java @@ -0,0 +1,46 @@ +package com.mogo.cloud.wifi; + +import android.net.wifi.WifiInfo; + +import com.zhidao.manager.system.wifi.WifiState; + +import java.util.ArrayList; +import java.util.List; + +public class WifiStateManager { + + private WifiStateManager() { + + } + + public static WifiStateManager getInstance() { + return Holder.wifiStateManager; + } + + private static final class Holder { + private static final WifiStateManager wifiStateManager = new WifiStateManager(); + } + + private final List wifiStateListeners = new ArrayList<>(); + + public void registerWifiStateListener(IWifiStateListener listener) { + if (listener != null && !wifiStateListeners.contains(listener)) { + wifiStateListeners.add(listener); + } + } + + public void unRegisterWifiStateListener(IWifiStateListener listener) { + if (listener != null) { + wifiStateListeners.remove(listener); + } + } + + public void updateWifiState(WifiInfo wifiInfo) { + if (wifiStateListeners.size() > 0) { + for (IWifiStateListener listener : wifiStateListeners) { + listener.onWifiState(wifiInfo); + } + } + } + +} diff --git a/app/src/main/res/layout/activity_live_play.xml b/app/src/main/res/layout/activity_live_play.xml index 357b8b7..3321961 100644 --- a/app/src/main/res/layout/activity_live_play.xml +++ b/app/src/main/res/layout/activity_live_play.xml @@ -1,16 +1,22 @@ + android:layout_height="match_parent"> +