Android--史上最全、最完整,获取设备信息、获取手机唯一标识

DeviceLibray

获取Android设备详细信息

唯一ID实现方法

设备指纹算法:
第一部分:imei/meid,双卡时优先取meid,取不到meid的情况下取固定的imei(多个imei必须固定取一个,不能随机取其中之一),得到串1。
第二部分:设备串号serial不为空时,拼接android.os.Build.MANUFACTURER,得到串2。注意,如果串1和串2中的serial都为空,则取Mac地址+android.os.Build.MANUFACTURER作为串2(注意取法上需要兼容6.0、7.0、9.0以上)。
第三部分:静态硬件字段组合,依次拼接下面的字段,以"/"为分隔符号,进行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,注意存放的位置,在外部存储中以特定隐藏文件夹+隐藏文件的形式存放,包删除后文件不被删除,别的包安装后先读取指定这个隐藏文件的内容,有device_id则直接用,无则生成;

hardware(硬件)

字段名类型说明
modelString设备型号
brandString设备品牌
productString产品名称
releaseString系统版本
sdk_version_codeStringSDK版本号
physical_sizeString物理尺寸
cpu_typeStringcpu名字
cpu_minStringcpu最小频率
cpu_maxStringcpu最大频率
cpu_curStringcpu当前频率
manufacturer_nameString制造商
boardString主板名称
serial_numberString设备序列号
displayString显示屏参数
idString修订版本列表
bootloaderString系统引导加载程序版本号
finger_printString设备指纹
hostString执行代码编译的Host值
hardwareString硬件名
deviceString设备参数
userString执行代码编译的User值
radio_versionString无线电固件版本
tagsString描述Build的标签
timeString编译时间
typeStringbuilder类型
base_osStringbuild基本操作系统
baseband_verString基带版本
resolutionString设备分辨率
screen_densityString屏幕密度(像素比例:0.75/1.0/1.5/2.0)
screen_density_dpiString屏幕密度(每寸像素:120/160/240/320)
cpu_abiString获取设备指令集名称
cpu_abi2String获取第二个指令集名称
abisString手机cpu架构,支持的指令集
is_tabletint是否是平板(1:是;0:不是)

general_data(通用数据)

字段名类型说明
and_idString安卓ID
gaidStringGAID
network_operator_nameString网络运营商名称
network_operatorString当前注册运营商的数字名称(MCC + MNC)
network_typeString当前网络类型:
NETWORK_2G
NETWORK_3G
NETWORK_4G
NETWORK_5G
NETWORK_WIFI
phone_typeString
mccStringMcc / IMSI MCC(移动国家代码)
bluetooth_macString蓝牙mac地址
mncStringMnc / IMSI MNC(移动网络代码)
locale_iso_3_languageString语言环境的三字母缩写
locale_iso_3_countryString此地区的国家/地区的缩写
time_zone_idString时区的ID
locale_display_languageString用户显示的语言环境语言的名称
cidString基站编号
dnsString
uuidString设备标识符UUID
slot_countint支持卡槽数量(sdk_version>=23才可取值,否则为0)
meidString移动设备识别码 , 卡槽移动设备身份码1(android 10及以上无法取)
imei2String卡槽移动设备身份码2(android 10及以上无法取)
macStringmac地址
languageString本地语言
ui_mode_typeString当前设备支持的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_patchString安全补丁更新日期

sim_card

字段名类型说明
sim_countint设备当前sim卡数量
imsi1Stringsim卡1移动用户身份
sim_country_iso1Stringsim卡1ISO国家代码等同于SIM提供商的国家代码
sim_serial_number1Stringsim卡1的序列号
number1Stringsim卡1对应手机号
imsi2Stringsim卡2移动用户身份
sim_country_iso2Stringsim卡2ISO国家代码等同于SIM提供商的国家代码
sim_serial_number2Stringsim卡2的序列号
number2Stringsim卡2对应手机号

storage(存储)

字段名类型说明
device_idString关联设备表下deviceId
ram_total_sizelong运行内存总大小(单位byte)
ram_usable_sizelong运行内存可用大小(单位byte)
internal_storage_totallong内部存储总空间(单位byte)
internal_storage_usablelong内部存储可用空间(单位byte)
memory_card_sizelongsd卡总空间(单位byte)
memory_card_size_uselongsd卡已用空间(单位byte)

other_data(其它数据)

字段名类型说明
root_jailbreakInt是否root(0:不是;1:是)
simulatorInt是否为模拟器(0:不是;1:是)
keyboardString底部是否有物理按键:有:1;无:0
dbmString手机的信号强度(>-90,越大信号越强;""表示未取到)
last_boot_timeLong最后一次开机时间,以毫秒为单位
is_using_vpnInt是否使用vpn(0:不是;1:是)
vpn_addressStringvpn代理地址
is_using_proxy_portInt是否使用代理(0:不是;1:是)
http_proxy_host_portStringhttp代理host:port
is_usb_debugInt是否开启debug调试(0:不是;1:是)
is_mock_locationInt是否允许位置模拟(0:不是;1:是)
ringer_modeInt
0:RINGER_MODE_SILENT(静音模式)
1:RINGER_MODE_VIBRATE(震动模式)
2:RINGER_MODE_NORMAL(铃音模式)
is_airplane_modeInt是否开启飞行模式(0:不是;1:是)

applist(app安装)

字段名类型说明
app_nameString已安装应用:APP名称
package_nameString已安装应用:包名
in_timeLong已安装应用:安装时间
up_timeLong已安装应用:最后更新时间
version_nameString版本名称
version_codeInt版本号
flagsInt应用标签
app_typeInt是否系统应用(1:系统应用;0:非系统应用)
special_permisson_listList获取app特殊权限项

contact(联系人)

字段名类型说明
contact_display_nameString联系人名称
numberString联系人列表:电话号码
up_timeLong联系人列表:更新时间
last_time_contactedLong与联系人最后联系时间
times_contactedint联系次数
starredint是否收藏联系人(1:收藏;0:未收藏)
emailString电子邮件地址

GPS(定位)-客户端改动

字段名类型说明
latitudeString维度
longitudeString经度
addressDetailsStringGPS详细地址

media_files(媒体文件)

字段名类型说明
audio_internalInt音频内部文件个数
audio_externalInt音频外部文件个数
images_internalInt图片内部文件个数
images_externalInt图片外部文件个数
video_internalInt视频内部文件个数
video_externalInt视频外部文件个数
download_filesInt下载的文件个数
contact_groupint联系⼈小组个数(基数默认偏大,会算上自带群组名)

network(网络)

字段名类型说明
ipString路由器IP
router_nameString路由器名字(Server根据当前wifi的bssid查)
current_wifi[].bssidString当前的wifi BSSID
current_wifi[].ssidString当前的wifi SSID
current_wifi[].nameStringwifi名称
current_wifi[].macString当前的wifi mac地址
configured_wifi[].bssidStringBSSID / 配置wifi BSSID
configured_wifi[].ssidStringSSID / 配置wifi SSID
configured_wifi[].nameStringwifi名称

battery_status(电池)

字段名类型说明
is_chargingint是否正在充电(1:未知状态;2:充电中;3:放电中;4:未充电;5:充满)
battery_pctDouble电池百分⽐(0-100)
charge_typeint1:BATTERY_PLUGGED_AC(充电器)
2:BATTERY_PLUGGED_USB(USB充电)
4:BATTERY_PLUGGED_ANY(其它)
battery_healthint1: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_temperatureDouble电池温度(单位0.1,如359表示35.9°C)
screen_brightnessDouble屏幕亮度(0-255)

sensor[ ] (传感器)

字段名类型说明
sensor_lists[].typeint传感器的类型
sensor_lists[].nameString传感器的名字
sensor_lists[].versionint传感器的版本号
sensor_lists[].vendorStringVendor名
sensor_lists[].max_rangefloat传感器的最大值
sensor_lists[].min_delayfloat传感器的最小值
sensor_lists[].powerfloat传感器的功率
sensor_lists[].resolutionfloat传感器的精度

项目地址:https://github.com/z244370114/DeviceLibray

Flutter版DeviceLibray

https://github.com/z244370114/devicesinfo

Step 1. Add the JitPack repository to your build file

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

Step 2. Add the dependency

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

3. 使用说明

(1)需要在Application的onCreate()方法里面调用UtilsApp.init(this)进行初始化上下文
(2)需要注意的是FileUtils.getSDDeviceTxt(),该方法根据算法得到唯一的device_id,判断设备唯一性
  • 19
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 42
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怀君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值