|
@@ -1,6 +1,128 @@
|
|
|
package com.example.smartledz_wifi_test;
|
|
|
|
|
|
+import android.Manifest;
|
|
|
+import android.content.BroadcastReceiver;
|
|
|
+import android.content.Context;
|
|
|
+import android.content.Intent;
|
|
|
+import android.content.IntentFilter;
|
|
|
+import android.content.pm.PackageManager;
|
|
|
+import android.net.wifi.ScanResult;
|
|
|
+import android.net.wifi.WifiManager;
|
|
|
+import android.os.Build;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.widget.ArrayAdapter;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
+import androidx.core.app.ActivityCompat;
|
|
|
+import androidx.core.content.ContextCompat;
|
|
|
+
|
|
|
+import com.example.smartledz_wifi_test.plugin.EventChannelPlugin;
|
|
|
+import com.example.smartledz_wifi_test.plugin.WifiPlugin;
|
|
|
+
|
|
|
+import org.json.JSONException;
|
|
|
+import org.json.JSONObject;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
import io.flutter.embedding.android.FlutterActivity;
|
|
|
+import io.flutter.embedding.engine.FlutterEngine;
|
|
|
+import io.flutter.plugins.GeneratedPluginRegistrant;
|
|
|
|
|
|
public class MainActivity extends FlutterActivity {
|
|
|
+
|
|
|
+
|
|
|
+ public static WifiManager wifiManager;
|
|
|
+
|
|
|
+ private static final int PERMISSIONS_REQUEST_CODE = 1;
|
|
|
+ private BroadcastReceiver wifiScanReceiver;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
+ wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
|
|
|
+ // 检查并请求定位权限
|
|
|
+ checkAndRequestPermissions();
|
|
|
+ // 注册Wi-Fi扫描广播接收器
|
|
|
+ registerWifiScanReceiver();
|
|
|
+ // 检查并启用Wi-Fi
|
|
|
+ if (!wifiManager.isWifiEnabled()) {
|
|
|
+ wifiManager.setWifiEnabled(true);
|
|
|
+ }
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ }
|
|
|
+
|
|
|
+ private BroadcastReceiver mReceiver =new BroadcastReceiver() {
|
|
|
+ @Override
|
|
|
+ public void onReceive(Context context, Intent intent) {
|
|
|
+ if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
|
|
|
+ List<ScanResult> results = wifiManager.getScanResults();
|
|
|
+ if (results !=null) {
|
|
|
+ System.out.println("results size");
|
|
|
+ System.out.println(results.size());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
|
|
|
+ //插件实例的注册...
|
|
|
+ // telink-sdk插件
|
|
|
+ flutterEngine.getPlugins().add(new WifiPlugin());
|
|
|
+ // 通知插件
|
|
|
+ flutterEngine.getPlugins().add(EventChannelPlugin.getInstance());
|
|
|
+ //这个是必写,别删除!!
|
|
|
+ GeneratedPluginRegistrant.registerWith(flutterEngine);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void scanWifiList() {
|
|
|
+ List<ScanResult> scanResults = wifiManager.getScanResults();
|
|
|
+// System.out.println("获取扫描列表");
|
|
|
+// System.out.println(scanResults);
|
|
|
+// System.out.println("-----------------------------");
|
|
|
+ List<Map<String,String>> wifiList = new ArrayList<>();
|
|
|
+ for (ScanResult scanResult : scanResults) {
|
|
|
+ if(!scanResult.SSID.equals("endo-lighting")){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Map<String,String> wifi = new HashMap<>();
|
|
|
+ wifi.put("ssid",scanResult.SSID);
|
|
|
+ wifi.put("bssid",scanResult.BSSID);
|
|
|
+ wifi.put("level", String.valueOf(scanResult.level));
|
|
|
+ wifiList.add(wifi);
|
|
|
+ }
|
|
|
+ JSONObject response = new JSONObject();
|
|
|
+ try {
|
|
|
+ response.put("cmd","scanResult");
|
|
|
+ response.put("data",wifiList);
|
|
|
+ } catch (JSONException e) {
|
|
|
+ throw new RuntimeException(e);
|
|
|
+ }
|
|
|
+ EventChannelPlugin.getInstance().sendEventData(response.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ private void checkAndRequestPermissions() {
|
|
|
+ int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION);
|
|
|
+ if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
|
|
|
+ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_REQUEST_CODE);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void registerWifiScanReceiver() {
|
|
|
+ wifiScanReceiver = new BroadcastReceiver() {
|
|
|
+ @Override
|
|
|
+ public void onReceive(Context context, Intent intent) {
|
|
|
+ if (intent.getAction().equals(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
|
|
|
+ scanWifiList();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+ IntentFilter intentFilter = new IntentFilter();
|
|
|
+ intentFilter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
|
|
|
+ registerReceiver(wifiScanReceiver, intentFilter);
|
|
|
+ }
|
|
|
+
|
|
|
}
|