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

目录

前言

一、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提出来,如果受到大家欢迎,我会持续完善此库。

相关推荐
郑州吴彦祖77211 分钟前
【java】数据类型与变量以及操作符
java·intellij-idea
程序员大金13 分钟前
基于SpringBoot+Vue+MySQL的在线学习交流平台
java·vue.js·spring boot·后端·学习·mysql·intellij-idea
吹老师个人app编程教学18 分钟前
阿里巴巴_java开发规范手册详解
java·开发语言
天上掉下来个程小白18 分钟前
Stream流的终结方法(一)
java·windows
天上掉下来个程小白40 分钟前
请求响应-08.响应-案例
java·服务器·前端·springboot
大白_dev40 分钟前
数据校验的总结
java·开发语言
失落的香蕉1 小时前
Java第二阶段---10方法带参---第三节 面向对象和面向过程的区别
java·开发语言
哎呀呀嗯呀呀1 小时前
class 031 位运算的骚操作
java·算法·位运算
2401_858120531 小时前
古典舞在线交流平台:SpringBoot设计与实现详解
java·spring boot·后端
大白飞飞1 小时前
IDEA创建、导入、删除maven项目
java·maven·intellij-idea