デバイスライブラリ
Android デバイスの詳細を取得する
Flutter版DeviceLibray
https://github.com/z244370114/devicesinfo
ユニークIDの実装方法
デバイスの指紋アルゴリズム:
パート 1: imei/meid。デュアル カードには Meid が優先され、meid を取得できない場合は固定 imei が使用され (複数の imei を固定する必要があり、1 つをランダムに選択することはできません)、文字列 1 が取得されます。
2 番目の部分: デバイスのシリアル番号 Serial が空でない場合、android.os.Build.MANUFACTURER を結合して文字列 2 を取得します。文字列 1 と文字列 2 のシリアルが両方とも空の場合は、Mac アドレス + android.os.Build.MANUFACTURER を文字列 2 として取得することに注意してください (メソッドは 6.0、7.0、および 9.0 以降と互換性がある必要があることに注意してください)。
3 番目の部分: 静的ハードウェア フィールドの組み合わせ。区切り文字として「/」を使用して次のフィールドを順番に結合し、32 ビット md5 リトル エンディアン計算を実行して文字列 3 android.os.Build.BOARD android.os を取得します
。 Build.BRAND
android
. os.Build.DEVICE
android.os.Build.HARDWARE
android.os.Build.MODEL
android:os.Build.PRODUCT
android.os.Build.TAGS
android.os.Build.TYPE
android.os.Build .USER
android.os .Build.SUPPORTED_ABIS 配列を順番に結合
android.os.Build.CPU_ABI
screenWidth
screenHeight
screenDensity
screenDensityDpi
文字列 1、2、3 を順に連結し、32 ビット md5 リトルエンディアン方式で計算して device_id を取得します。
クライアントは取得した device_id をキャッシュし、保存場所に注意し、外部ストレージ内の特定の隠しフォルダー + 隠しファイルの形式で保存する必要があります。パッケージが削除された後もファイルは削除されず、指定されたデバイス ID を読み取る必要があります。他のパッケージをインストールした後、最初に隠しファイルが表示されます。コンテンツ、device_id がある場合は直接使用され、ない場合は生成されます。
ステップ 1. JitPack リポジトリをビルド ファイルに追加する
allprojects {
repositories { ~~~~
...
maven { url 'https://jitpack.io' }
}
}
ステップ 2. 依存関係を追加する
dependencies {
implementation 'com.github.z244370114:DeviceLibray:1.0.3'
}
3. 使用上の注意
(1)需要在Application的onCreate()方法里面调用UtilsApp.init(this)进行初始化上下文
(2)需要注意的是FileUtils.getSDDeviceTxt(),该方法根据算法得到唯一的device_id,判断设备唯一性
ハードウェア (ハードウェア)
フィールド名 | タイプ | 説明する |
---|---|---|
モデル | 弦 | デバイスモデル |
ブランド | 弦 | 機器ブランド |
製品 | 弦 | 商品名 |
リリース | 弦 | システムバージョン |
SDK_バージョンコード | 弦 | SDKのバージョン番号 |
物理サイズ | 弦 | 物理的なサイズ |
cpu_type | 弦 | CPU名 |
cpu_min | 弦 | CPUの最小周波数 |
cpu_max | 弦 | CPUの最大周波数 |
cpu_cur | 弦 | CPU電流周波数 |
メーカー名 | 弦 | メーカー |
ボード | 弦 | マザーボード名 |
シリアルナンバー | 弦 | シリアル番号を工夫する |
画面 | 弦 | 表示パラメータ |
ID | 弦 | リビジョンリスト |
ブートローダー | 弦 | システム ブートローダーのバージョン番号 |
指紋 | 弦 | デバイスの指紋 |
ホスト | 弦 | コードコンパイルを実行するためのホスト値 |
ハードウェア | 弦 | ハードウェア名 |
デバイス | 弦 | デバイスパラメータ |
ユーザー | 弦 | コードコンパイルを実行するためのユーザー値 |
ラジオバージョン | 弦 | 無線ファームウェアのバージョン |
タグ | 弦 | ビルドを説明するラベル |
時間 | 弦 | コンパイル時間 |
タイプ | 弦 | ビルダータイプ |
ベースOS | 弦 | ベースオペレーティングシステムを構築する |
ベースバンドバージョン | 弦 | ベースバンドバージョン |
解決 | 弦 | デバイスの解像度 |
画面密度 | 弦 | 画面密度(画素比:0.75/1.0/1.5/2.0) |
画面密度_dpi | 弦 | 画面密度 (1 インチあたりのピクセル数: 120/160/240/320) |
cpu_abi | 弦 | デバイス命令セット名の取得 |
cpu_abi2 | 弦 | 2 番目の命令セット名を取得します |
終了 | 弦 | 携帯電話の CPU アーキテクチャ、サポートされる命令セット |
is_タブレット | 整数 | タブレットかどうか (1: はい、0: いいえ) |
general_data (一般データ)
フィールド名 | タイプ | 説明する |
---|---|---|
and_id | 弦 | 安卓ID |
gaid | String | GAID |
network_operator_name | String | 网络运营商名称 |
network_operator | String | 当前注册运营商的数字名称(MCC + MNC) |
network_type | String | 当前网络类型: NETWORK_2G NETWORK_3G NETWORK_4G NETWORK_5G NETWORK_WIFI |
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类型 UI_MODE_TYPE_UNDEFINED UI_MODE_TYPE_NORMAL UI_MODE_TYPE_DESK UI_MODE_TYPE_CAR UI_MODE_TYPE_TELEVISION UI_MODE_TYPE_APPLIANCE UI_MODE_TYPE_WATCH UI_MODE_TYPE_VR_HEADSET |
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:未收藏) |
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 | BSSID / 配置wifi BSSID |
configured_wifi[].ssid | String | SSID / 配置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_FAILU RE (異常)既知のエラー) 7: BATTERY_HEALTH_COLD (温度が低すぎます) |
バッテリー温度 | ダブル | バッテリー温度(0.1単位、359などは35.9℃を意味します) |
画面の明るさ | ダブル | 画面の明るさ (0-255) |
センサー[ ] (センサー)
フィールド名 | タイプ | 説明する |
---|---|---|
センサーリスト[].type | 整数 | センサーの種類 |
センサーリスト[].name | 弦 | センサー名 |
sensor_lists[].version | 整数 | センサーのバージョン番号 |
sensor_lists[].vendor | 弦 | 業者名 |
センサーリスト[].max_range | 浮く | センサー最大値 |
sensor_lists[].min_delay | 浮く | センサー最小値 |
sensor_lists[].power | 浮く | センサーパワー |
sensor_lists[].resolution | 浮く | センサーの精度 |
プロジェクトアドレス: https://github.com/z244370114/DeviceLibray