github传送门
Table of Contents
依赖
implementation 'fairy.easy:mobilehardware:{latest-version}'
数据信息
代码示例
PackageHelper.getPackageInfo(getApplicationContext())
数据格式
{
"appName":"MobileInfo",
"packageName":"com.mobile.mobileinfo",
"packageSign":"521cec5eb6984bc70f5b2a27e437b979",
"appVersionCode":"1",
"appVersionName":"1.0"
}
| 数据键 |
数据类型 |
数据解释 |
| appName |
String |
app名字 |
| packageName |
String |
app包名 |
| packageSign |
String |
app包签名 |
| appVersionCode |
String |
app版本号 |
| appVersionName |
String |
app版本名 |
代码示例
ListAppHelper.mobListApp(getApplicationContext())
数据格式
[
{
"packageName":"com.huawei.android.tips",
"versionName":"1.0",
"versionCode":"1",
"isSystem":"false"
}
]
| 数据键 |
数据类型 |
数据解释 |
| packageName |
String |
app包名 |
| appVersionCode |
String |
app版本号 |
| appVersionName |
String |
app版本名 |
| isSystem |
String |
是否是系统app |
代码示例
AudioHelper.mobGetMobAudio(getApplicationContext())
数据格式
{
"maxVoiceCall":"15",
"currentVoiceCall":"3",
"maxSystem":"15",
"currentSystem":"0",
"maxRing":"15",
"currentRing":"0",
"maxMusic":"15",
"currentMusic":"0",
"maxAlarm":"15",
"currentAlarm":"0"
}
| 数据键 |
数据类型 |
数据解释 |
| maxVoiceCall |
String |
最大通话音量 |
| currentVoiceCall |
String |
当前通话音量 |
| maxSystem |
String |
最大系统音量 |
| currentSystem |
String |
当前系统音量 |
| maxRing |
String |
最大铃声音量 |
| currentRing |
String |
当前铃声音量 |
| maxMusic |
String |
最大音乐音量 |
| currentMusic |
String |
当前音乐音量 |
| maxAlarm |
String |
最大提示声音音量 |
| currentAlarm |
String |
当前提示声音音量 |
代码示例
BandHelper.mobGetBandInfo()
数据格式
{
"baseBand":"21C30B323S006C000,21C30B323S006C000",
"innerBand":"STF-AL00 8.0.0.360(C00GT)",
"linuxBand":"$unknown"
}
| 数据键 |
数据类型 |
数据解释 |
| baseBand |
String |
基带版本 |
| innerBand |
String |
内部版本 |
| linuxBand |
String |
linux内核版本 |
代码示例
BatteryHelper.mobGetBattery(getApplicationContext())
数据格式
{
"br":"74.0%",
"status":"charging",
"plugState":"usb",
"health":"good",
"present":"true",
"technology":"Li-poly",
"temperature":"33℃",
"voltage":"4.068V",
"power":"3100.0mAh"
}
| 数据键 |
数据类型 |
数据解释 |
| br |
String |
电量百分比 |
| status |
String |
电池状态 |
| plugState |
String |
电池充电状态 |
| health |
String |
电池健康状况 |
| present |
String |
是否有电池 |
| technology |
String |
电池的技术制造 |
| temperature |
String |
电池温度 |
| voltage |
String |
电池电压 |
| power |
String |
电池总电量 |
代码示例
CpuInternals.getInstance().getCpuSampler().start();
CpuInternals.getInstance().getCpuSampler().getCpuList();
CpuInternals.getInstance().getCpuSampler().stop();
代码示例
BluetoothHelper.mobGetMobBluetooth(getApplicationContext())
数据格式
{
"bluetoothAddress":"$unknown",
"isEnabled":"true",
"device":[
{
"name":"iPhone",
"address":"E4:9A:79:89:C7:24",
}
],
"phoneName":"Honor"
}
| 数据键 |
数据类型 |
数据解释 |
| bluetoothAddress |
String |
蓝牙地址 |
| isEnabled |
String |
蓝牙是否打开 |
| device |
JSONArray |
连接的手机的信息 |
| name |
String |
连接手机的蓝牙地址 |
| address |
String |
连接手机的蓝牙名字 |
| phoneName |
String |
手机设置的名字 |
代码示例
BuildHelper.mobGetBuildInfo()
数据格式
{
"board":"STF",
"bootloader":"unknown",
"brand":"HONOR",
"device":"HWSTF",
"display":"STF-AL00 8.0.0.360(C00GT)",
"fingerprint":"HONOR/STF-AL00/HWSTF:8.0.0/HUAWEISTF-AL00/360(C00GT):user/release-keys",
"hardware":"hi3660",
"host":"WUH1000129106",
"id":"HUAWEISTF-AL00",
"manufacturer":"HUAWEI",
"model":"STF-AL00",
"product":"STF-AL00",
"radio":"21C30B323S006C000,21C30B323S006C000",
"serial":"8BN0217901012695",
"tags":"release-keys",
"time":"1553851883000",
"type":"user",
"user":"test",
"osVersion":"HONOR/STF-AL00/HWSTF:8.0.0/HUAWEISTF-AL00/358(C00GT):user/release-keys",
"releaseVersion":"8.0.0",
"codeName":"$unknown",
"incremental":"360(C00GT)",
"sdkInt":"26",
"previewSdkInt":"0",
"securityPatch":"2019-04-05"
}
| 数据键 |
数据类型 |
数据解释 |
| board |
String |
主板名称 |
| bootloader |
String |
系统引导程序版本号 |
| brand |
String |
系统定制商 |
| device |
String |
设备参数 |
| display |
String |
显示屏参数 |
| fingerprint |
String |
硬件名 |
| hardware |
String |
内核命令行中的硬件名 |
| host |
String |
host |
| id |
String |
标签 |
| manufacturer |
String |
硬件厂商 |
| model |
String |
版本 |
| product |
String |
手机厂商 |
| radio |
String |
无线电固件的版本字符串 |
| serial |
String |
获取硬件序列号 |
| tags |
String |
描述Build的标签 |
| time |
String |
time |
| type |
String |
type |
| user |
String |
user |
| osVersion |
String |
os版本 |
| releaseVersion |
String |
版本 |
| codeName |
String |
当前开发代码名称 |
| incremental |
String |
基础源代码控件用于表示此构建的内部值 |
| sdkInt |
String |
SDK的版本 |
| previewSdkInt |
String |
SDK的预览版本 |
| securityPatch |
String |
用户可见的安全补丁程序级别 |
代码示例
CameraHelper.getCameraInfo(getApplicationContext())
数据格式
{
"cameraInfo":[
{
"cameraFacing":"back",
"cameraLevel":"limited",
"cameraFlashInfo":"true",
"outputFormats":[
"raw_sensor",
"jpeg",
"private",
"yuv_420_888",
"depth16"
]
}
]
}
| 数据键 |
数据类型 |
数据解释 |
| cameraInfo |
JSONArray |
摄像头信息 |
| cameraFacing |
String |
摄像头的位置 |
| cameraLevel |
String |
摄像头支持水平 |
| cameraFlashInfo |
String |
是否有闪光灯 |
| outputFormats |
JSONArray |
摄像头支持的格式 |
代码示例
CpuHelper.mobGetCpuInfo()
数据格式
{
"cpuName":"0",
"cpuFreq":"1844000KHZ",
"cpuMaxFreq":"1844000KHZ",
"cpuMinFreq":"533000KHZ",
"cpuHardware":"hi3660",
"cpuCores":"8",
"cpuTemp":"36℃",
"cpuAbi":"arm64-v8a,armeabi-v7a,armeabi"
}
| 数据键 |
数据类型 |
数据解释 |
| cpuName |
String |
CPU名字 |
| cpuFreq |
String |
CPU频率 |
| cpuMaxFreq |
String |
CPU最大频率 |
| cpuMinFreq |
String |
CPU最小频率 |
| cpuHardware |
String |
CPU硬件名 |
| cpuCores |
String |
CPU核数 |
| cpuTemp |
String |
CPU温度 |
| cpuAbi |
String |
CPU架构 |
代码示例
DebugHelper.getDebuggingData(getApplicationContext())
数据格式
{
"isOpenDebug":"true",
"isDebugVersion":"true",
"isDebugging":"false",
"isReadProcStatus":"false",
"isAllowMockLocation":"false"
}
| 数据键 |
数据类型 |
数据解释 |
| isOpenDebug |
String |
是否开启了调试模式 |
| isDebugVersion |
String |
是否是Debug版本 |
| isDebugging |
String |
是否正在调试 |
| isReadProcStatus |
String |
读取id判断是否在调试 |
| isAllowMockLocation |
String |
是否打开位置模拟 |
代码示例
DnsHelper.mobDNS("ip")
代码示例
EmulatorHelper.mobCheckEmulator(getApplicationContext())
数据格式
{
"checkBuild":"false",
"checkPkg":"false",
"checkPipes":"false",
"checkQEmuDriverFile":"false",
"checkHasLightSensorManager":"false",
"checkCpuInfo":"false"
}
| 数据键 |
数据类型 |
数据解释 |
| checkBuild |
String |
build |
| checkPkg |
String |
包名修改 |
| checkPipes |
String |
管道检测 |
| checkQEmuDriverFile |
String |
驱动程序检测 |
| checkHasLightSensorManager |
String |
光传感器检测 |
| checkCpuInfo |
String |
cpu架构检测 |
代码示例
HookHelper.isXposedHook(getApplicationContext())
数据格式
{
"isHaveXposed":"false",
"isHaveSubstrate":"false",
"isHaveFrida":"false"
}
| 数据键 |
数据类型 |
数据解释 |
| isHaveXposed |
String |
是否有Xposed |
| isHaveSubstrate |
String |
是否有Substrate |
| isHaveFrida |
String |
是否有Frida |
代码示例
LocalHelper.mobGetMobLocal()
数据格式
{
"country":"CN",
"language":"zh"
}
| 数据键 |
数据类型 |
数据解释 |
| country |
String |
当前国家 |
| language |
String |
当前语言 |
代码示例
MemoryHelper.getMemoryInfo(getApplicationContext())
数据格式
{
"ramMemoryTotal":"3.90 GB",
"ramMemoryAvailable":"1.56 GB",
"romMemoryAvailable":"40.22 GB",
"romMemoryTotal":"56.30 GB",
"sdCardMemoryAvailable":"40.20 GB",
"sdCardMemoryTotal":"56.28 GB"
}
| 数据键 |
数据类型 |
数据解释 |
| ramMemoryTotal |
String |
RAM全部内存 |
| ramMemoryAvailable |
String |
RAM可用内存 |
| romMemoryAvailable |
String |
ROM可用内存 |
| romMemoryTotal |
String |
ROM全部内存 |
| sdCardMemoryAvailable |
String |
内存卡可用内存 |
| sdCardMemoryTotal |
String |
内存卡全部内存 |
代码示例
MoreOpenHelper.checkVirtual(getApplicationContext())
数据格式
{
"checkByPrivateFilePath":"false",
"checkByMultiApkPackageName":"false",
"checkByHasSameUid":"false"
}
| 数据键 |
数据类型 |
数据解释 |
| checkByPrivateFilePath |
String |
检测私有路径 |
| checkByMultiApkPackageName |
String |
maps检测 |
| checkByHasSameUid |
String |
ps检测 |
代码示例
NetWorkHelper.mobGetMobNetWork(getApplicationContext())
数据格式
{
"type":"WIFI",
"networkAvailable":"true",
"haveIntent":"false",
"isFlightMode":"false",
"isNFCEnabled":"true",
"isHotspotEnabled":"false",
"hotspotSSID":"$unknown",
"hotspotPwd":"$unknown",
"encryptionType":"$unknown"
}
| 数据键 |
数据类型 |
数据解释 |
| type |
String |
网络类型 |
| networkAvailable |
String |
网络是否可用 |
| haveIntent |
String |
是否开启数据流量 |
| isFlightMode |
String |
是否是飞行模式 |
| isNFCEnabled |
String |
NFC功能是否开启 |
| isHotspotEnabled |
String |
是否开启热点 |
| hotspotSSID |
String |
热点账号 |
| hotspotPwd |
String |
热点密码 |
| encryptionType |
String |
热点加密类型 |
代码示例
RootHelper.mobileRoot(getApplicationContext())
代码示例
ScreenHelper.mobGetMobScreen(getApplicationContext())
数据格式
{
"densityScale":"3.0",
"densityDpi":"480",
"width":"1080",
"height":"1920",
"isScreenAuto":"false",
"isScreenAutoChange":"false",
"screenBrightness":"114"
}
| 数据键 |
数据类型 |
数据解释 |
| densityScale |
String |
当前屏幕密度与标准屏幕密度的比值 |
| densityDpi |
String |
屏幕密度 |
| width |
String |
屏幕宽度 |
| height |
String |
屏幕高度 |
| isScreenAuto |
String |
亮度是否为自动调节 |
| isScreenAutoChange |
String |
屏幕亮度 |
| screenBrightness |
String |
屏幕是否开启自动旋转 |
代码示例
SDCardHelper.mobGetSdCard()
数据格式
{
"isSDCardEnable":"true",
"sDCardPath":"/storage/emulated/0"
}
| 数据键 |
数据类型 |
数据解释 |
| isSDCardEnable |
String |
SDCard是否可用 |
| getSDCardPath |
String |
SDCard的路径 |
代码示例
SettingsHelper.mobGetMobSettings(getApplicationContext())
数据格式
{
"androidId":"f573c0f6ca5178a2"
}
| 数据键 |
数据类型 |
数据解释 |
| androidId |
String |
androidId |
代码示例
SignalHelper.mobGetNetRssi(getApplicationContext())
数据格式
{
"type":"WIFI",
"bssid":"82:2a:a8:1b:58:de",
"ssid":"GPNL",
"ipAddress":"192.168.1.73",
"ipAddressIpv6":"$unknown",
"macAddress":"D8:C7:71:E4:48:B9",
"networkId":"93",
"linkSpeed":"86Mbps",
"rssi":"-53",
"level":"4",
"supplicantState":"COMPLETED",
"proxy":"false",
"proxyAddress":"$unknown",
"proxyPort":"$unknown"
}
| 数据键 |
数据类型 |
数据解释 |
| type |
String |
网络类型 |
| bssid |
String |
bssid |
| ssid |
String |
ssid |
| ipAddress |
String |
ipv4 |
| ipAddressIpv6 |
String |
ipv6 |
| macAddress |
String |
mac地址 |
| networkId |
String |
网络id |
| linkSpeed |
String |
网络速度 |
| rssi |
String |
信号强度 |
| level |
String |
信号等级 |
| supplicantState |
String |
连接状态 |
| proxy |
String |
是否开启代理 |
| proxyAddress |
String |
代理地址 |
| proxyPort |
String |
代理端口号 |
代码示例
SimCardHelper.mobileSimInfo(getApplicationContext())
数据格式
{
"sim1Imei":"$unknown",
"sim2Imei":"866957032955878",
"sim1Imsi":"460037121038284",
"sim2Imsi":"$unknown",
"simSlotIndex":"0",
"meid":"A000007ADE42E2",
"sim1ImsiOperator":"CT",
"sim2ImsiOperator":"$unknown",
"sim1Ready":"true",
"sim2Ready":"false",
"isTwoCard":"false",
"isHaveCard":"true",
"operator":"CT"
}
| 数据键 |
数据类型 |
数据解释 |
| sim1Imei |
String |
卡1IMEI |
| sim2Imei |
String |
卡2IMEI |
| sim1Imsi |
String |
卡1IMSI |
| sim2Imsi |
String |
卡2IMSI |
| simSlotIndex |
String |
有流量的卡的卡槽id |
| meid |
String |
MEID |
| sim1ImsiOperator |
String |
卡1运营商 |
| sim2ImsiOperator |
String |
卡2运营商 |
| sim1Ready |
String |
卡1是否激活 |
| sim2Ready |
String |
卡2是否激活 |
| isTwoCard |
String |
是否有两张卡 |
| isHaveCard |
String |
是否有卡 |
| operator |
String |
流量卡运营商 |
代码示例
StackSampler.getStackInfo(Thread.currentThread())
代码示例
PhoneIdHelper.getPsuedoUniqueID()
代码示例
UserAgentHelper.getDefaultUserAgent(getApplicationContext())
代码示例
XposedHookHelper.checkXposedInjet(getApplicationContext())
数据格式
{
"xposedApp":"false",
"xposedImei":"false",
"xposedImsi":"false",
"xposedSerial":"false",
"xposedSsid":"false",
"xposedMac":"false",
"xposedAddress":"false",
"xposedAndroidId":"false",
"xposedLatitude":"false",
"xposedLongitude":"false"
}
| 数据键 |
数据类型 |
数据解释 |
| xposedApp |
String |
是否hook了本APP |
| xposedImei |
String |
是否hook了IMEI |
| xposedImsi |
String |
是否hook了IMSI |
| xposedSerial |
String |
是否hook了序列号 |
| xposedSsid |
String |
是否hook了SSID |
| xposedMac |
String |
是否hook了MAC地址 |
| xposedAddress |
String |
是否hook了蓝牙地址 |
| xposedAndroidId |
String |
是否hook了AndroidId |
| xposedLatitude |
String |
否hook了纬度 |
| xposedLongitude |
String |
是否hook了经度 |