android 可视化分析,Android可视化显示手机电池电量信息

最近做了个小功能,打算写出来分享一下。文笔不好,标题起得不怎么样,一眼看去可能看不出是要说什么内容,但是又不想起个特别长的标题,就这样吧,随缘

进入正文,最近学习了Python,结合自己当前从事的Android开发的工作,想到了一个小功能,就是通过Python解析android log,提取其中电量的日志进行可视化显示。这是一个很小众的功能,估计基本上不会有人用得上,但是个人感觉是很有趣的一件事。

先上效果图:

f380df26ea07

battery_level.html

文章内容主要是通过以下几个方面描述,尽可能通俗易懂

获取日志

脚本编写

运行结果

1. 获取日志

电池电量信息我们可以从android日志的events log中获取,events log可通过以下命令获取

adb logcat -b events > events.log

其中,电池电量的关键字是battery_level

11-19 06:15:40.076 1502 1538 I battery_level: [91,4164,302]

11-19 06:18:36.180 1502 2042 I battery_level: [90,4224,325]

11-19 06:26:30.404 1502 2042 I battery_level: [89,4203,338]

11-19 06:33:11.701 1502 2042 I battery_level: [88,4179,345]

11-19 06:40:53.762 1502 2042 I battery_level: [87,4184,349]

11-19 06:46:58.554 1502 2042 I battery_level: [86,4160,355]

11-19 06:52:14.718 1502 2042 I battery_level: [85,4150,359]

11-19 06:58:37.736 1502 2042 I battery_level: [84,4143,352]

battery_level在代码中的描述如下:

battery_level (level|1|6),(voltage|1|1),(temperature|1|1)

第一个参数level表示当前电池电量

第二个参数voltage表示当前电池电压

第三个参数temperature表示当前电池温度

2. 脚本编写

通过battery_level的log格式可以大致得出以下步骤:

定义Battery相关类

逐行读取events log的日志并提取出battery_level行,解析行转换成Battery类

通过highcharts显示数据

2.1 定义Battery类

class Battery:

# 日期

date = ''

# 时间

timestamp = ''

# 电量

level = 0

# 电压

voltage = 0

# 温度,log中单位需要除以10才是摄氏度的单位,用浮点数表示

temperature = 0.0

2.2 解析日志

# events.log

inputfile = ''

def check_battery():

if os.path.exists(inputfile):

battery_array = []

f = open(inputfile, 'rb')

line = f.readline()

while line:

if "battery_level" in line:

battery = Battery()

temp_line = line.split()

battery.date = temp_line[0]

battery.timestamp = temp_line[1]

# 有些日志可能会有些奇怪的问题,这里加个判断规避异常情况

if len(temp_line) > 6:

# 这里应该是可以用正则表达式进行优化

conf = temp_line[6].replace("[", "").replace("]", "").split(",")

battery.level = int(conf[0])

battery.voltage = int(conf[1])

battery.temperature = int(conf[2]) / 10.0

battery_array.append(battery)

line = f.readline()

f.close()

if len(battery_array) > 0:

# 生成报告,可视化显示,在2.3节中介绍

generate_report(battery_array)

else:

print ("No evnet log file found")

print ("Done")

2.3 可视化显示

结果是通过html显示,用到的是highchart显示折线图。这里不详细介绍highcharts的使用,有兴趣的可自行搜索了解。这里简单介绍一下highcharts的参数

title: 标题

xAxis: 横坐标的值和描述

tooltip: 折线弹出气泡

legend: 图表样式

series: 折线数据

先将运行后生成的html简化后内容贴出来会比较容易理解生成报告的脚本,以下内容直接复制到一个文本文件,修改后缀为html打开后就是文章前面截图的效果

body {margin: 0 auto; width:80%; padding: 20px}

$(document).ready(function() {

var title = { text: 'Battery Level' };

var xAxis = {

// 脚本生成是一行,为了显示清楚手动换行

categories: ['06:15:40.076','06:18:36.180','06:26:30.404','06:33:11.701',

'06:40:53.762','06:46:58.554','06:52:14.718','06:58:37.736',

'07:05:06.852','07:12:36.779','07:20:43.179','07:26:35.815',

'07:32:16.296','07:37:56.775','07:43:37.262','07:49:17.738',

'07:55:22.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值