Flutter设备信息获取插件devicesinfo的使用

Flutter设备信息获取插件devicesinfo的使用

获取Android设备详细信息

Getting Started

本项目是一个用于Flutter的插件包,它包含适用于Android和/或iOS平台的特定实现代码。

对于Flutter开发的帮助,可以参阅在线文档,其中提供了教程、示例、移动端开发指导以及完整的API引用。

Flutter版DeviceLibray

https://github.com/z244370114/devicesinfo

Step 1. 添加JitPack仓库到你的构建文件

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

Step 2. 添加依赖

dependencies {
	implementation 'com.github.z244370114:DeviceLibray:1.0.4'
}

3. 使用说明

  1. 需要在Application的onCreate()方法里面调用UtilsApp.init(this)进行初始化上下文。
  2. 需要注意的是FileUtils.getSDDeviceTxt(),该方法根据算法得到唯一的device_id,判断设备唯一性。

4. 应用

下载源码安装直观查看对应字段数据明细。

HOME(首页)

HOME

sdka

sdka

hardware(硬件)

字段名 类型 说明
model String 设备型号
brand String 设备品牌
product String 产品名称
release String 系统版本
sdk_version_code String SDK版本号
physical_size String 物理尺寸
cpu_type String CPU名字
cpu_min String CPU最小频率
cpu_max String CPU最大频率
cpu_cur String CPU当前频率
manufacturer_name String 制造商
board String 主板名称
serial_number String 设备序列号
display String 显示屏参数
id String 修订版本列表
bootloader String 系统引导加载程序版本号
finger_print String 设备指纹
host String 执行代码编译的Host值
hardware String 硬件名
device String 设备参数
user String 执行代码编译的User值
radio_version String 无线电固件版本
tags String 描述Build的标签
time String 编译时间
type String builder类型
base_os String build基本操作系统
baseband_ver String 基带版本
resolution String 设备分辨率
screen_density String 屏幕密度(像素比例:0.75/1.0/1.5/2.0)
screen_density_dpi String 屏幕密度(每寸像素:120/160/240/320)
cpu_abi String 获取设备指令集名称
cpu_abi2 String 获取第二个指令集名称
abis String 手机CPU架构,支持的指令集
is_tablet int 是否是平板(1:是;0:不是)

general_data(通用数据)

字段名 类型 说明
and_id String 安卓ID
gaid String GAID
network_operator_name String 网络运营商名称
network_operator String 当前注册运营商的数字名称(MCC + MNC)
network_type String 当前网络类型
phone_type String
mcc String Mcc / IMSI MCC(移动国家代码)
bluetooth_mac String 蓝牙mac地址
mnc String Mnc / IMSI MNC(移动网络代码)
locale_iso_3_language String 语言环境的三字母缩写
locale_iso_3_country String 此地区的国家/地区的缩写
time_zone_id String 时区的ID
locale_display_language String 用户显示的语言环境语言的名称
cid String 基站编号
dns String
uuid String 设备标识符UUID
slot_count int 支持卡槽数量(sdk_version>=23才可取值,否则为0)
meid String 移动设备识别码, 卡槽移动设备身份码1(android 10及以上无法取)
imei2 String 卡槽移动设备身份码2(android 10及以上无法取)
mac String mac地址
language String 本地语言
ui_mode_type String 当前设备支持的UI类型
security_patch String 安全补丁更新日期

sim_card

字段名 类型 说明
sim_count int 设备当前sim卡数量
imsi1 String sim卡1移动用户身份
sim_country_iso1 String sim卡1ISO国家代码等同于SIM提供商的国家代码
sim_serial_number1 String sim卡1的序列号
number1 String sim卡1对应手机号
imsi2 String sim卡2移动用户身份
sim_country_iso2 String sim卡2ISO国家代码等同于SIM提供商的国家代码
sim_serial_number2 String sim卡2的序列号
number2 String sim卡2对应手机号

storage(存储)

字段名 类型 说明
device_id String 关联设备表下deviceId
ram_total_size long 运行内存总大小(单位byte)
ram_usable_size long 运行内存可用大小(单位byte)
internal_storage_total long 内部存储总空间(单位byte)
internal_storage_usable long 内部存储可用空间(单位byte)
memory_card_size long SD卡总空间(单位byte)
memory_card_size_use long SD卡已用空间(单位byte)

other_data(其它数据)

字段名 类型 说明
root_jailbreak Int 是否root(0:不是;1:是)
simulator Int 是否为模拟器(0:不是;1:是)
keyboard String 底部是否有物理按键:有:1;无:0
dbm String 手机的信号强度(>-90,越大信号越强;""表示未取到)
last_boot_time Long 最后一次开机时间,以毫秒为单位
is_using_vpn Int 是否使用vpn(0:不是;1:是)
vpn_address String vpn代理地址
is_using_proxy_port Int 是否使用代理(0:不是;1:是)
http_proxy_host_port String http代理host:port
is_usb_debug Int 是否开启debug调试(0:不是;1:是)
is_mock_location Int 是否允许位置模拟(0:不是;1:是)
ringer_mode Int 0:RINGER_MODE_SILENT(静音模式)
1:RINGER_MODE_VIBRATE(震动模式)
2:RINGER_MODE_NORMAL(铃音模式)
is_airplane_mode Int 是否开启飞行模式(0:不是;1:是)

applist(app安装)

字段名 类型 说明
app_name String 已安装应用:APP名称
package_name String 已安装应用:包名
in_time Long 已安装应用:安装时间
up_time Long 已安装应用:最后更新时间
version_name String 版本名称
version_code Int 版本号
flags Int 应用标签
app_type Int 是否系统应用(1:系统应用;0:非系统应用)
special_permisson_list List 获取app特殊权限项

contact(联系人)

字段名 类型 说明
contact_display_name String 联系人名称
number String 联系人列表:电话号码
up_time Long 联系人列表:更新时间
last_time_contacted Long 与联系人最后联系时间
times_contacted int 联系次数
starred int 是否收藏联系人(1:收藏;0:未收藏)
email String 电子邮件地址

GPS(定位)-客户端改动

字段名 类型 说明
latitude String 维度
longitude String 经度
addressDetails String GPS详细地址

media_files(媒体文件)

字段名 类型 说明
audio_internal Int 音频内部文件个数
audio_external Int 音频外部文件个数
images_internal Int 图片内部文件个数
images_external Int 图片外部文件个数
video_internal Int 视频内部文件个数
video_external Int 视频外部文件个数
download_files Int 下载的文件个数
contact_group int 联系人小组个数(基数默认偏大,会算上自带群组名)

network(网络)

字段名 类型 说明
ip String 路由器IP
router_name String 路由器名字(Server根据当前wifi的bssid查)
current_wifi[].bssid String 当前的wifi BSSID
current_wifi[].ssid String 当前的wifi SSID
current_wifi[].name String wifi名称
current_wifi[].mac String 当前的wifi mac地址
configured_wifi[].bssid String 配置wifi BSSID
configured_wifi[].ssid String 配置wifi SSID
configured_wifi[].name String wifi名称

battery_status(电池)

字段名 类型 说明
is_charging int 是否正在充电(1:未知状态;2:充电中;3:放电中;4:未充电;5:充满)
battery_pct Double 电池百分比(0-100)
charge_type int 1:BATTERY_PLUGGED_AC(充电器)
2:BATTERY_PLUGGED_USB(USB充电)
4:BATTERY_PLUGGED_ANY(其它)
battery_health int 1:BATTERY_HEALTH_UNKNOWN(未知)
2:BATTERY_HEALTH_GOOD(良好)
3:BATTERY_HEALTH_OVERHEAT(过热)
4:BATTERY_HEALTH_DEAD(没电)
5:BATTERY_HEALTH_OVER_VOLTAGE(过电压)
6:BATTERY_HEALTH_UNSPECIFIED_FAILURE(未知错误)
7:BATTERY_HEALTH_COLD(温度过低)
battery_temperature Double 电池温度(单位0.1,如359表示35.9°C)
screen_brightness Double 屏幕亮度(0-255)

sensor(传感器)

字段名 类型 说明
sensor_lists[].type int 传感器的类型
sensor_lists[].name String 传感器的名字
sensor_lists[].version int 传感器的版本号
sensor_lists[].vendor String Vendor名
sensor_lists[].max_range float 传感器的最大值
sensor_lists[].min_delay float 传感器的最小值
sensor_lists[].power float 传感器的功率
sensor_lists[].resolution float 传感器的精度

5. app下载地址与二维码,以便安装查看数据列表

http://fir.ksym.top/ybk7

appdown

你认为还有哪些地方需要作者更新,都可以提出。作者会抽时间完善。

最后,如果你觉得对你有用,麻烦给一个star!

如果这个项目对您有很大帮助,并且您想支持该项目的开发和维护,请随时扫描以下二维码进行捐赠。非常感谢您的捐赠。谢谢!

捐赠二维码


示例代码

import 'package:devicesinfo/devicesinfo_method_channel.dart';
import 'package:devicesinfo/devicesinfo_platform_interface.dart';
import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter/services.dart';
import 'package:devicesinfo/devicesinfo.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _devicesinfoPlugin = Devicesinfo();

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

  // 平台消息是异步的,因此我们在异步方法中初始化
  Future<void> initPlatformState() async {
    String platformVersion = "";
    // 平台消息可能会失败,所以我们使用try/catch处理PlatformException。
    // 我们也处理消息可能返回null的情况。
    try {
      // platformVersion =
      //     await _devicesinfoPlugin.getPlatformVersion() ?? 'Unknown platform version';
    } on PlatformException {
      platformVersion = 'Failed to get platform version.';
    }
    MethodChannelDevicesinfo.initApp();
    var generalData = await MethodChannelDevicesinfo.getGeneralData();
    platformVersion = generalData!;
    print(generalData);
    // 如果小部件在异步平台消息仍在飞行时从树中移除,我们希望丢弃回复而不是调用setState来更新我们的不存在的外观。
    if (!mounted) return;

    setState(() {
      _platformVersion = platformVersion;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行在: $_platformVersion\n'),
        ),
      ),
    );
  }
}

更多关于Flutter设备信息获取插件devicesinfo的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter设备信息获取插件devicesinfo的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,如果你想获取设备的信息,可以使用 device_info_plus 插件。device_info_plus 是一个跨平台的插件,可以获取 Android、iOS、Web、Windows、macOS 和 Linux 设备的信息。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 device_info_plus 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  device_info_plus: ^9.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 device_info_plus 插件:

import 'package:device_info_plus/device_info_plus.dart';

3. 获取设备信息

你可以使用 DeviceInfoPlugin 类来获取设备信息。以下是一个简单的示例,展示如何获取设备信息并打印出来:

import 'package:flutter/material.dart';
import 'package:device_info_plus/device_info_plus.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DeviceInfoScreen(),
    );
  }
}

class DeviceInfoScreen extends StatefulWidget {
  [@override](/user/override)
  _DeviceInfoScreenState createState() => _DeviceInfoScreenState();
}

class _DeviceInfoScreenState extends State<DeviceInfoScreen> {
  String _deviceInfo = 'Unknown';

  [@override](/user/override)
  void initState() {
    super.initState();
    _getDeviceInfo();
  }

  Future<void> _getDeviceInfo() async {
    DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();

    if (Theme.of(context).platform == TargetPlatform.android) {
      AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
      setState(() {
        _deviceInfo = 'Android: ${androidInfo.model}, SDK: ${androidInfo.version.sdkInt}';
      });
    } else if (Theme.of(context).platform == TargetPlatform.iOS) {
      IosDeviceInfo iosInfo = await deviceInfo.iosInfo;
      setState(() {
        _deviceInfo = 'iOS: ${iosInfo.utsname.machine}, Version: ${iosInfo.systemVersion}';
      });
    } else if (Theme.of(context).platform == TargetPlatform.windows) {
      WindowsDeviceInfo windowsInfo = await deviceInfo.windowsInfo;
      setState(() {
        _deviceInfo = 'Windows: ${windowsInfo.computerName}, Version: ${windowsInfo.buildNumber}';
      });
    } else if (Theme.of(context).platform == TargetPlatform.macOS) {
      MacOsDeviceInfo macOsInfo = await deviceInfo.macOsInfo;
      setState(() {
        _deviceInfo = 'macOS: ${macOsInfo.model}, Version: ${macOsInfo.osRelease}';
      });
    } else if (Theme.of(context).platform == TargetPlatform.linux) {
      LinuxDeviceInfo linuxInfo = await deviceInfo.linuxInfo;
      setState(() {
        _deviceInfo = 'Linux: ${linuxInfo.name}, Version: ${linuxInfo.version}';
      });
    } else {
      WebBrowserInfo webBrowserInfo = await deviceInfo.webBrowserInfo;
      setState(() {
        _deviceInfo = 'Web: ${webBrowserInfo.browserName}, Version: ${webBrowserInfo.appVersion}';
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Device Info'),
      ),
      body: Center(
        child: Text(_deviceInfo),
      ),
    );
  }
}
回到顶部