首页 > 解决方案 > 如何计算所有设备信息,例如:语音网络类型、信号强度、下载速度和上传速度

问题描述

现在我创建了一个与以下相关的代码Network Info

import 'package:flutter/material.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:android_device_info/android_device_info.dart'; 

import '../widgets/row_item.dart';

class NetworkTab extends StatefulWidget {
  @override
  _NetworkTabState createState() => _NetworkTabState();
}

class _NetworkTabState extends State<NetworkTab> {
  var data = {};

  @override
  void initState() {
    super.initState();

    getData();
  }

  getData() async {
    var data = {};

    final memory = await AndroidDeviceInfo().getNetworkInfo();
    final display = await AndroidDeviceInfo().getNfcInfo();
    var sim = await AndroidDeviceInfo().getSimInfo();

    data.addAll(memory);
    data.addAll(display);
    data.addAll(sim);

    if (mounted) {
      setState(() {
        this.data = data;
      });
    }

    var permission =
        await PermissionHandler().checkPermissionStatus(PermissionGroup.phone);
    if (permission == PermissionStatus.denied) {
      var permissions =
          await PermissionHandler().requestPermissions([PermissionGroup.phone]);
      if (permissions[PermissionGroup.phone] == PermissionStatus.granted) {
        sim = await AndroidDeviceInfo().getSimInfo();
        data.addAll(sim);
        if (mounted) {
          setState(() {
            this.data = data;
          });
        }
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    if (data.isEmpty) {
      return Center(child: CircularProgressIndicator());
    }

    return SingleChildScrollView(
      child: Column(
        children: <Widget>[
          Divider(),
          RowItem('Network Available', '${data['isNetworkAvailable']}'),
          RowItem('Network', '${data['networkType']}'),
          RowItem('iPv4 Address', '${data['iPv4Address']}'),
          RowItem('iPv6 Address', '${data['iPv6Address']}'),
          RowItem('WiFi Enabled', '${data['isWifiEnabled']}'),
          RowItem('WiFi SSID', '${data['wifiSSID']}'),
          RowItem('WiFi BSSID', '${data['wifiBSSID']}'),
          RowItem('WiFi Speed', '${data['wifiLinkSpeed']}'),
          RowItem('NFC Enabledweeds', '${data['wifiLinkSpeed']}'),
          RowItem('WiFi MAC', '${data['wifiMAC']}'),
          Divider(),
          RowItem('NFC Present', '${data['isNfcPresent']}'),
          RowItem('NFC Enabled', '${data['isNfcEnabled']}'),
          Divider(),
          RowItem('IMSI', '${data['imsi']}'),
          RowItem('Serial', '${data['serial']}'),
          RowItem('Country', '${data['country']}'),
          RowItem('Carrier', '${data['carrier']}'),
          RowItem('SIM Locked', '${data['isSimNetworkLocked']}'),
         RowItem('activeMultiSimInfo', '${data['activeMultiSimInfo']}'),
          RowItem('Multi SIM', '${data['isMultiSim']}'),
          RowItem('Active SIM(s)', '${data['numberOfActiveSim']}'),
          Divider(),
        ],
      ),
    );
  }
}

通过使用以下插件:

device_info: ^0.4.2+4
android_device_info: ^1.0.0
connectivity: ^0.4.8+6

因为它显示结果如下图并且工作正常: 在此处输入图像描述

我需要在图片下方获取这些类型的信息:

在此处输入图像描述

在此处输入图像描述

以及我在拨打此代码时得到的那些信息*#*#4636#*#*,并且我得到这个屏幕来访问电话信息,如下图所示:

在此处输入图像描述

我搜索了很多,找不到插件给我这个信息使用flutterdart

我希望有人能帮我解决这个问题!!

总的来说,我想创建类似以下链接的Open Signal访问移动网络或网络的应用程序:sim

https://play.google.com/store/apps/details?id=com.staircase3.opensignal&gl=NL

那么,是否缺少任何插件或方法来找出这些类型的移动 mesuremts 属性?

标签: flutterdart

解决方案


推荐阅读