赞
踩
目录
【Android组合解决方案】MacroDroid+移动云盘打造自己的防丢神器
大家有没有遇到过这种情况:老人不会用手机共享位置?手机忘了放在哪里,而且还没电了?在这样的情况下,怎样掌握尽可能多的信息去寻找?手机厂家提供的查找手机应用在这些场景是否能满足需要?第三方的查找应用又是否放心?
所以打造自己的防丢神器还是有一些必要,本文将对低代码实现自制防丢神器做一些探索。
1、采集端:实时采集位置信息并后台静默传到云上。
2、云存储:保存位置信息,并提供下载。
3、接收端:收取位置信息,并提供查看功能,可查看当前实时的位置,也可以查看历史位置。
要低代码实现这么一套系统,首先要选择合适的已有的应用作为基础,通过尽可能少的改造,实现整套解决方案。
MacroDroid原本已经提供分享位置功能,并提供了多种输出机制:
但是:
短信:费钱,不适合长时间使用,不考虑;
twitter:国内不可用,不考虑;
电子邮件:软件可能有bug,实际不可用,邮件发不出来。如果这个功能是好的,就根本都不需要后面那些折腾了;
变量:最后选择了这种方式,把取到的经纬度信息保存到变量中,供之后的实现使用。
收取位置信息,考虑了以下途径:
1、邮件:MacroDroid本身的发邮件功能不可用,发不出邮件,考虑了使用MacroDroid调用某个邮件客户端的API来实现静默发送,但是找了一圈,发现并没有哪个邮件客户端支持这样干;
2、即时信息:QQ、微信?找了一下,也没有提供这种API;
3、接收端搭建web服务器,提供API供采集端调用:可行是可行,但加上内网穿透,这几项的工作量太大,太折腾,还是先考虑工作量小一点的办法;
4、云笔记:调用云笔记API,每条位置信息追加一条云笔记:搜了一下,只有网易有道云笔记提供API,但使用API有些门槛,也比较折腾,先考虑工作量小一点的办法;
5、用网盘/云存储中转位置信息,接收端从网盘/云存储获取:这个打通的工作量相对小一些,只要使用网盘的自动备份功能,满足这些条件:a、网盘允许使用流量备份;b、位置信息被允许备份。所以最终选择了这个方案。
满足流量备份的云盘,考察了一圈,只有中国移动云盘了;但这个云盘的备份只支持图片和音乐文件,所以需要考虑使用图片或音乐文件搭载位置信息了。我这里就使用png文件来搭载,这种方法看起来很奇怪,但确实是出于无奈。
接收端在收到位置信息后,需要很方便的打开地图,看到定位,最好就是拿到文件之后,直接点击就可以.所以考虑使用高德地图的URI API:
把URI写入到文件中,直接跳转。接收端拿到文件后,把后缀名改成html 就可以了。
1、触发条件
使用固定时间间隔,可以按照自己的需要来配置,我这里为了调试方便,设置得短一点,1分钟:
2、动作
1)调用脚本,初始化png文件,写入时间字段,生成第一段文件名
初始化脚本before.sh代码如下:
- #!/bin/sh
- #以时间作为文件名,不带后缀,避免过早被备份到云端
- synctime=`date +%Y%m%d%H%M%S`
- filename="time"$synctime
- #把时间写入png文件,确保每个png文件都是唯一的
- echo "<html><!--PNG"$synctime"-->" >../DCIM/${filename}
- #文件名输出给MacroDroid
- echo ${filename}
- #文件名保存到文本
- echo ${filename} > filename.txt
说明:
为了能被识别成图片,需要生成的文件中有“PNG”
需要写入<html>标签,原因见选型过程的功能点4
写入时间:其实也可以使用其他的随机值,是为了确保每个png文件都是唯一的
分段生成文件名:准备把经纬度信息写入到文件名,方便从文件名就能大致看到位置有变化。而经纬度信息由MacroDroid来写入。
2、 获取经纬度,并保存到变量
但是这里取的经纬度信息的排列顺序是纬度,经度,和主流的地图提供商的顺序是反的,所以需要调换一下顺序,换成经度,纬度:
3、地图URI写入到文件,实现跳转
4、生成第二段文件名,也就是把经纬度信息加到文件名:
5、给文件名加.png后缀,让文件被网盘最终识别为图片文件,被自动备份:
加png后缀的脚本:
- #!/bin/sh
- while read line
- do
- mv ../DCIM/$line ../DCIM/$line".png"
- done < filename2.txt
登录中国移动云盘,开启自动备份即可,可能需要按提示开启省电白名单和开启后台运行权限:
从中国移动云盘下载的是png文件,考虑定时转换成html文件:
触发条件仍然是按固定时间间隔:
动作:
定时把位置文件的后缀名加上.html:
加html后缀的脚本:
- #!/bin/sh
- for file in `ls ./time*location*.png`
- do
- mv $file $file".html"
- done
至此,配置就结束了。
接收端从云盘下载位置文件之后,等待后缀名变成html,点击就可以看到定位了:
文件内容是这样的:
下载最新的文件,就可以看到实时位置;
下载历史文件,就可以看到历史位置,可以用来分析路线和轨迹,这个功能这次就没有做了,之后会了解一下。
效果演示请参考视频。
这样一整套做下来,不需要新安装什么应用,位置信息这种个人敏感信息由自己处理,不用担心泄露。而且最重要的是代码量很小很可控,工作量也可控。这次用到的MacroDroid宏和shell脚本已打包上传,下载地址:【Android组合解决方案】MacroDroid+移动云盘打造自己的防丢神器 用到的宏和脚本 ,如有需要可自取。如有疑问或建议,欢迎联系我交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。