资讯详情

MobileInfo,如何成为杰出的程序员

| plugState | String | 电池充电状态 |

| health | String | 电池健康 |

| present | String | 是否有电池 |

| technology | String | 电池技术制造 |

| temperature | String | 电池温度 |

| voltage | String | 电池电压 |

| power | String | 电池总电量 |

Cpu 实时数据采集

代码示例

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 | 手机设置的名称 |

系统 Build 数据获取

代码示例

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 | 相机支持的格式 |

Cpu 数据获取

代码示例

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 | 是否打开位置模拟 |

host 数据获取

代码示例

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 架构检测 |

hook 数据获取

代码示例

HookHelper.isXposedHook(getApplicationContext())

数据格式

{

“xposedInfo”:{

“checkXposedPackage”:“false”,

“checkXposedHookMethod”:“false”,

“checkXposedJars”:“false”,

“checkClassLoader”:“false”,

“checkNativeMethod”:“false”,

“checkSystem”:“false”,

“checkExecLib”:“false”,

“checkCheckman”:“false”,

“checkXposedBridge”:“false”

},

“substrateInfo”:{

“checkSubstratePackage”:“false”,

“checkSubstrateHookMethod”:“false”,

“checkSubstrateJars”:“false”

},

“fridaInfo”:{

“checkRunningProcesses”:“false”,

“checkFridaJars”:“false”

}

}

| 数据键 | 数据类型 | 数据解释 |

| — | — | — |

| xposedInfo | JSONObject | Xposed 信息 |

| checkXposedPackage | String | 包名检测 |

| checkXposedHookMethod | String | 检测调用栈中的可疑方法 |

| checkXposedJars | String | 检测内存中可疑的 jars |

| checkClassLoader | String | 检测载入 Xposed 工具类 |

| checkNativeMethod | String | 判断系统方法调用钩子 |

| checkSystem | String | 虚拟检测 Xposed 环境 |

| checkExecLib | String | 寻找 Xposed 运行库文件 |

| checkCheckman | String | 内核查找 Xposed 链接库 |

| checkXposedBridge | String | 环境变量特征字判断 |

| substrateInfo | JSONObject | Substrate 信息 |

| checkSubstratePackage | String | 包名检测 |

| checkSubstrateHookMethod | String | 检测调用栈中的可疑方法 |

| checkSubstrateJars | String | 检测内存中可疑的 jars |

| fridaInfo | JSONObject | Frida 信息 |

| checkRunningProcesses | String | 检测进程信息 |

| checkFridaJars | String | 检测内存中可疑的 jars |

本地数据获取

代码示例

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 | 热点加密类型 |

root 数据获取

代码示例

RootHelper.mobileRoot(getApplicationContext())

屏幕数据获取

代码示例

ScreenHelper.mobGetMobScreen(getApplicationContext())

数据格式

{

“densityScale”:“3.0”,

“densityDpi”:“480”,

“width”:“1080”,

“height”:“1920”,

“isScreenAuto”:“false”,

“isScreenAutoChange”:“false”,

“screenBrightness”:“114”,

“checkHideStatusBar”:“false”,

“checkHasNavigationBar”:“false”,

“getStatusBarHeight”:“72”,

“getNavigationBarHeight”:“126”

}

| 数据键 | 数据类型 | 数据解释 |

| — | — | — |

| densityScale | String | 当前屏幕密度与标准屏幕密度的比值 |

| densityDpi | String | 屏幕密度 |

| width | String | 屏幕宽度 |

| height | String | 屏幕高度 |

| isScreenAuto | String | 亮度是否为自动调节 |

| isScreenAutoChange | String | 屏幕亮度 |

| screenBrightness | String | 屏幕是否开启自动旋转 |

| checkHideStatusBar | String | 是否隐藏状态栏 |

| checkHasNavigationBar | String | 是否显示底部导航栏 |

| getStatusBarHeight | String | 获取状态栏高度 |

| getNavigationBarHeight | String | 获取底部导航栏的高度 |

SDCard 数据获取

代码示例

SDCardHelper.mobGetSdCard()

数据格式

{

“isSDCardEnable”:“true”,

“getSDCardPath”:"/storage/emulated/0"

}

| 数据键 | 数据类型 | 数据解释 |

| — | — | — |

| isSDCardEnable | String | SDCard 是否可用 |

| getSDCardPath | String | SDCard 的路径 |

设置数据获取

代码示例

SettingsHelper.mobGetMobSettings(getApplicationContext())

数据格式

{

“androidId”:“f573c0f6ca5178a2”

}

| 数据键 | 数据类型 | 数据解释 |

| — | — | — |

| androidId | String | androidId |

信号数据获取

总结

开发是面向对象。我们找工作应该更多是面向面试。哪怕进大厂真的只是去宁螺丝,但你要进去得先学会面试的时候造飞机不是么?

作者13年java转Android开发,在小厂待过,也去过华为,OPPO等,去年四月份进了阿里一直到现在。等大厂待过也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

这里附上上述的技术体系图相关的几十套,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含,由于篇幅有限,这里以图片的形式给大家展示一部分。

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

{

“isSDCardEnable”:“true”,

“getSDCardPath”:"/storage/emulated/0"

}

| 数据键 | 数据类型 | 数据解释 |

| — | — | — |

| isSDCardEnable | String | SDCard 是否可用 |

| getSDCardPath | String | SDCard 的路径 |

设置数据获取

代码示例

SettingsHelper.mobGetMobSettings(getApplicationContext())

数据格式

{

“androidId”:“f573c0f6ca5178a2”

}

| 数据键 | 数据类型 | 数据解释 |

| — | — | — |

| androidId | String | androidId |

信号数据获取

总结

开发是面向对象。我们找工作应该更多是面向面试。哪怕进大厂真的只是去宁螺丝,但你要进去得先学会面试的时候造飞机不是么?

作者13年java转Android开发,在小厂待过,也去过华为,OPPO等,去年四月份进了阿里一直到现在。等大厂待过也面试过很多人。深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。

这里附上上述的技术体系图相关的几十套,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含,由于篇幅有限,这里以图片的形式给大家展示一部分。

[外链图片转存中…(img-clfCRgUj-1643533614526)]

[外链图片转存中…(img-s5RwS7Oq-1643533614527)]

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图

当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。

标签: oppoa53摄像头传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

 锐单商城 - 一站式电子元器件采购平台  

 深圳锐单电子有限公司