数据抓取:抓取手机设备各种数据

您所在的位置:网站首页 男毛衣怎么搭配衣服 数据抓取:抓取手机设备各种数据

数据抓取:抓取手机设备各种数据

2023-12-23 21:54| 来源: 网络整理| 查看: 265

系列文章

总篇:(数据抓取:抓取手机设备各种数据 - 掘金 (juejin.cn))

分篇(一):【数据抓取(一)】手机通讯录数据获取 - 掘金 (juejin.cn)

分篇(二):数据抓取(二)&安卓定位方案:地址信息的获取 - 掘金 (juejin.cn)

分篇(三):数据抓取(三):安卓-免权限获取所有安装的应用程序信息(系统和非系统) - 掘金 (juejin.cn)

目录

前言

一、DataCapture

1.通讯录集合数据 2.应用列表集合数据 3.日历事件信息数据 4.电量信息数据 5.sms短信信息数据 6.照片集合信息数据 7.传感器信息数据 8.wifi信息数据 8.1 wifi详情数据 9.硬件信息数据 10.定位信息数据 11.其他信息数据

二、使用步骤

1.引入库 2.获取数据方法,目前因数据量庞大,暂推荐手动在子线程调用 3.关于权限,待更新 总结 前言

基于最近刚完结的外包项目功能——数据抓取,通过调用api和内容提供器来获取手机设备各种数据,诸如SMS短信数据、电量数据、手机应用数据等等,我尝试开发了一个开源库,希望能够帮助到大家来实现这个功能。

习惯性上图展示:

在这里插入图片描述

体验demo:(密码:cxpg) image.png

一、DataCapture

对手机设备的信息数据抓取,目前支持在子线程抓取数据,因为有些数据量过于庞大会阻塞线程,可抓取数据有:

1.通讯录集合数据 字段名详情contact_display_name联系人名称last_time_contacted上次通讯时间(毫秒)number联系人手机号times_contacted联系次数up_time编辑时间(毫秒))type通话类型 2.应用列表集合数据 字段名详情app_nameAPP名称app_type是否系统app 0:非系统app 1:系统appapp_versionAPP版本in_time安装时间(毫秒)obtain_time数据抓取时间(秒))package_name包名up_time更新时间 (毫秒)version_code版本号 3.日历事件信息数据 字段名详情description事件描述end_time事件结束时间(毫秒)event_id事件IDevent_title事件标题start_time事件开始时间(毫秒))reminders提醒列表 4.电量信息数据 字段名详情battery_level电池电量battery_max电池容量battery_pct电池百分比battery_state电池状态 充电0 不充电1is_ac_charge是否交流充电(1:yes,0:no)is_charging是否正在充电is_usb_charge是否USB充电(1:yes,0:no) 5.sms短信信息数据 字段名详情content短信消息体other_phone收件⼈/发件⼈⼿机号package_name包名read短信状态 0-未读,1-已读seen短信是否被用户看到 0-尚未查看,1-已查看status短信状态:-1表示接收,0-complete,64-pending,128-failedsubject短信主题time收到短信的时间戳(毫秒),long型type短信类型:1-接收短信,2-已发出短信 6.照片集合信息数据 字段名详情addTime添加数据库时间(保存)author照片作者createTime照片读取时间(毫秒数时间戳),即当前时间date拍照时间(毫秒数时间戳)flash闪光灯focal_length镜头的实际焦距gps_altitude海拔高度gps_processing_method定位的方法名称height照片高度latitude照片拍摄时的经度lens_make镜头制造商lens_model镜头的序列号longitude照片拍摄时的纬度model拍照机型name照片名称orientation照片方向save_time照片修改时间software生成图像的相机或图像输入设备的软件或固件的名称和版本take_time创建时间(毫秒数时间戳)updateTime编辑时间width照片宽度x_resolutionX方向上每个分辨率的像素数y_resolutionY方向上每个分辨率的像素数 7.传感器信息数据 字段名详情id传感器id,0不支持功能,-1即其类型和名称的组合在系统中唯一标识。-2获取不到maxRange传感器单元中传感器的最大量程minDelay两个事件之间允许的最小延迟(以微秒为单位),如果此传感器仅在其测量的数据发生变化时返回值,则为零name传感器名称power使用时功率resolution传感器单元中传感器的分辨率type该传感器的通用类型name传感器名称vendor厂商字符串version版本 8.wifi信息数据 字段名详情current_wifi当前WIFI详情ip网络IP(内网)wifi_countwifi 个数configured_wifi配置WIFI,附近的wifi 8.1 wifi详情 字段名详情bssidbssidmacmacnamenamessidssid 9.硬件信息数据 字段名详情board主板brand设备品牌cores设备内核device_height分辨率高device_name设备名称device_width分辨率宽model设备型号physical_size物理尺寸production_date手机出厂时间戳release系统版本sdk_versionSDK版本serial_number设备序列号 10.定位信息数据 字段名详情gps_longitude经度gps_latitude维度gps_address_street街道gps_address_province省份gps_address_city城市gps_address_country国家gps_address_countryCode国家代码 11.其他信息数据 字段名详情dbm手机的信号强度 默认值-1last_boot_time最后一次启动时间,毫秒root_jailbreak是否root,true:1,false:0simulator是否为模拟器,true:1,false:0 12.内存信息数据 字段名详情app_free_memoryapp可用内存大小 单位Byte)app_max_memoryapp最大内存大小 单位Byte)app_total_memoryapp总内存大小 单位Byte)contain_sd是否有内置的SD卡(0否,1是)extra_sd是否有外置的SD卡(0否,1是)internal_storage_total总存储大小 单位Byte)internal_storage_usable可用存储大小 单位Byte)memory_card_free_size内存卡剩余使用量 单位Byte)memory_card_size内存卡大小 单位Byte)memory_card_size_use内存卡已使用量 单位Byte)memory_card_usable_size内存卡可使用量 单位Byte)ram_total_size总内存大小( 单位Byte)ram_usable_size内存可用大小 单位Byte)ram_threshold低内存阙值 13.通用信息数据 字段名详情and_idandroid_idcurrentSystemTime设备当前时间elapsedRealtime开机时间到现在的毫秒数(包括睡眠时间)gaidgoogle advertising id(google 广告 id)imei设备号is_usb_debug是否开启debug调试is_using_proxy_port是否使用代理is_using_vpn是否使用vpnlanguage语言locale_display_language此用户显示的语言环境语言的名称locale_iso_3_country此地区的国家/地区的缩写locale_country此地区的国家locale_iso_3_language语言环境的三字母缩写macmac 地址network_operator_name网络运营商名称network_type网络类型 2G、3G、4G、5G、wifi、other、nonephone_number手机号phone_type指示设备电话类型的常量。 这表示用于传输语音呼叫的无线电的类型time_zone_id时区的 IDuptimeMillis从开机到现在的毫秒数(不包括睡眠时间)uuid唯一标识 二、使用步骤 1.引入库

在seetings.gradle中引入

repositories { google() mavenCentral() maven { url 'https://jitpack.io' } }

在build.gradle中引入

implementation 'com.github.Android5730:DataCapture:v0.32' 2.获取数据方法,目前因数据量庞大,暂推荐手动在子线程调用 // 获取通讯录 List addressBookBean = AddressBookUtil.getAddressBookBean(getBaseContext()); // 获取应用列表 List appListBean = AppListUtil.getAppListBean(this); // 获取日历事件 List calendarListBean = CalendarListUtil.getCalendarListBean(this); // 获取电量信息 BatteryStatusBean batteryState = BatteryStatusUtil.getBatteryState(this); // 获取wifi信息 NetworkBean networkBean = NetworkBeanUtils.getNetworkBean(this); // 获取wifi信息详情 NetworkBean.CurrentWifiBean current_wifi = NetworkBeanUtils.getNetworkBean(this).getCurrent_wifi(); // 获取附近wifi集合 List configured_wifi = networkBean.getConfigured_wifi(); // 获取sms短信信息 List smsList = SmsUtil.getSmsList(this); // 获取照片集合信息 List photoInfosBean = PhotoInfosUtil.getPhotoInfosBean(this, LocationUtils.getInstance(this).showLocation()); // 获取传感器集合信息 List sensorListBean = SensorListUtil.getSensorListBean(this); // 获取硬件信息 HardwareBean hardwareBean = HardwareUtil.getHardwareBean(this); // 获取定位信息 LocationUtils instance = LocationUtils.getInstance(this); // 定位工具类单例对象 LocationUtils.AddressInfo addressInfo = instance.getAddressInfo(); // bean信息 String address = instance.getAddress();// bean类整合信息 // 获取其他信息 OtherDataBean otherDataBean = OtherDataUtil.getOtherDataBean(this); // 获取内存信息 NewStorageBean newStorageBean = SDCardUtils.getNewStorageBean(this); // 获取通用信息 GeneralDataBean generalData = GeneralDataUtil.getGeneralData(this); 3.关于权限,待更新

注意:因为获取图片时需要外部存储的权限,我这里采取的取消分区存储的做法,所以大家不要忘记在application里添加android:requestLegacyExternalStorage="true" 如果有哪个权限碍眼,或者项目强制不需要,也可以进行删除,如去除读取外部存储的权限:

最后附上开源库地址:数据抓取:https://github.com/Android5730/DataCapture 如果有帮助到各位,可以给个star,给我一点信心去完善这个开源库

总结

当然目前该库目前抓取的数据还不到外包项目抓取数据的一半,只是因为最近有点忙,没时间完善所以才匆匆忙忙推出,相信等开学后就有时间完善,现在实习太累了。如果大家有疑问,可以在评论区提出,也可以在issue提出来,如果受到大家欢迎,我会持续完善此库。

9/1日更新:新增硬件数据抓取,优化展示demo效果,更新版本号0.24

9/14日更新:新增定位、其他数据抓取、拦截无获取权限调用方法可能出现的闪退,更新版本号0.3

10/9日更新:实现获取非系统应用程序,更新版本号0.32

10/16日更新:实现获取内存信息和通用信息,更新版本号0.4



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3