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

目录

前言

一、DataCapture

  • 1.通讯录集合数据
  • 2.应用列表集合数据
  • 3.日历事件信息数据
  • 4.电量信息数据
  • 5.sms短信信息数据
  • 6.照片集合信息数据
  • 7.传感器信息数据
  • 8.wifi信息数据...等等数据

二、使用步骤

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

前言

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

习惯性上图展示:

一、DataCapture

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

1.通讯录集合数据

字段名 详情
contact_display_name 联系人名称
last_time_contacted 上次通讯时间(毫秒)
number 联系人手机号
times_contacted 联系次数
up_time 编辑时间(毫秒))
type 通话类型

2.应用列表集合数据

字段名 详情
app_name APP名称
app_type 是否系统app 0:非系统app 1:系统app
app_version APP版本
in_time 安装时间(毫秒)
obtain_time 数据抓取时间(秒))
package_name 包名
up_time 更新时间 (毫秒)
version_code 版本号

3.日历事件信息数据

字段名 详情
description 事件描述
end_time 事件结束时间(毫秒)
event_id 事件ID
event_title 事件标题
start_time 事件开始时间(毫秒))
reminders 提醒列表

4.电量信息数据

字段名 详情
battery_level 电池电量
battery_max 电池容量
battery_pct 电池百分比
battery_state 电池状态 充电0 不充电1
is_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-failed
subject 短信主题
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_resolution X方向上每个分辨率的像素数
y_resolution Y方向上每个分辨率的像素数

7.传感器信息数据

字段名 详情
id 传感器id,0不支持功能,-1即其类型和名称的组合在系统中唯一标识。-2获取不到
maxRange 传感器单元中传感器的最大量程
minDelay 两个事件之间允许的最小延迟(以微秒为单位),如果此传感器仅在其测量的数据发生变化时返回值,则为零
name 传感器名称
power 使用时功率
resolution 传感器单元中传感器的分辨率
type 该传感器的通用类型
name 传感器名称
vendor 厂商字符串
version 版本

8.wifi信息数据...等等数据

二、使用步骤

1.引入库

在seetings.gradle中引入

scss 复制代码
repositories {
    google()
    mavenCentral()
    maven { url 'https://jitpack.io' }
}

在build.gradle中引入

groovy 复制代码
 implementation 'com.github.Android5730:DataCapture:v0.22'

2.获取数据方法,目前因数据量庞大,暂推荐手动在子线程调用

java 复制代码
// 获取通讯录
List<AddressBookBean> addressBookBean = AddressBookUtil.getAddressBookBean(getBaseContext());
// 获取应用列表
List<AppListBean> appListBean = AppListUtil.getAppListBean(this);
// 获取日历事件
List<CalendarListBean> calendarListBean = CalendarListUtil.getCalendarListBean(this);
// 获取电量信息
BatteryStatusBean batteryState = BatteryStatusUtil.getBatteryState(this);
// 获取wifi信息
NetworkBean networkBean = NetworkBeanUtils.getNetworkBean(this);
// 获取sms短信信息
List<SmsBean> smsList = SmsUtil.getSmsList(this);
// 获取照片集合信息
List<PhotoInfosBean> photoInfosBean = PhotoInfosUtil.getPhotoInfosBean(this, LocationUtils.getInstance(this).showLocation());
// 获取传感器集合信息
List<SensorListBean> sensorListBean = SensorListUtil.getSensorListBean(this);

3.关于权限,待更新

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

xml 复制代码
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
        tools:node="remove"/>
xml 复制代码
    <!-- 定位权限,需动态请求 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <!-- 通讯录,需动态请求 -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <!-- 日历信息,需动态请求 -->
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <!-- wifi信息,不用动态请求 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <!-- SMS信息,需动态请求 -->
    <uses-permission android:name="android.permission.READ_SMS" />
    <!-- photo信息,需动态请求-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <!-- 取消分区存储-->
    <meta-data
        android:name="ScopedStorage"
        android:value="true" />

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

总结

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

相关推荐
万叶学编程1 小时前
@RequestParam 和 @RequestBody、HttpServletrequest 与HttpServletResponse
java
zfj3211 小时前
H2数据库源码学习+debug, 数据库 sql、数据库引擎、数据库存储从此不再神秘
java·数据库·sql·学习·数据库底层原理
编程、小哥哥2 小时前
Java面试实战:从Spring Boot到分布式缓存的深度探索
java·spring boot·redis·微服务·grpc·缓存技术·面试技巧
在未来等你2 小时前
互联网大厂Java求职面试:Spring AI与大模型交互的高级模式与自定义开发
java·微服务·云原生·大模型·spring ai
androidwork3 小时前
Android Kotlin权限管理最佳实践
android·java·kotlin
sakoba3 小时前
Tomcat简述介绍
java·tomcat
qianmoQ4 小时前
GitHub 趋势日报 (2025年05月15日)
github
键盘客4 小时前
Spring Boot 配置明文密码加密,防泄漏
java·spring boot·后端·spring
二进制小甜豆4 小时前
SpringBoot快速上手
java·spring boot·maven