明明都失业了,还蛋疼把 GR Remote 做成了APP
展示:
youtube
简介:
简单说就是把这个 GR Remote 网页做了缓存,然后提供wifi绑定、重连功能。 以节省流量和时间,方便使用。
使用方法:
- 初次使用要联网下载页面,请耐心等待。
- 自动连接相机网络这里,需要把页面滑动到底部,弹出设置页面,进入绑定列表,选择相机wifi进行绑定。
注:
- 要求系统版本6.0及以上;
- 这里的绑定,只能绑定连接成功过的wifi网络,因为考虑到人与人之间的信任,就不提供输入密码这种方式啦;
起因:
把K5-IIs卖了,上个月买的GRII,拿出去真的太方便了。
装了一个 Image Syn ,可以同步照片,可是里边的远程控制功能无效,上周一的时候突然想起来在哪里看到说可以远程控制的,然后去官网找到了网页版的,号称可以实现除了开机和弹起闪光之外的全部功能。(其实还实现了触摸对焦、左右反转、按键锁定和关闭镜头)。
官方提供了两个版本,一个是普通网页版本,一个是DOM离线缓存, 但实际使用其实只能先联网打开网页,然后切换到相机的wifi热点,加载太慢了。
于是想把这个网页用WebView缓存,然后提供wifi绑定、重连功能。 这样就节省了流量和时间,不用手动连相机wifi啦。
主要流程:
- 启动时判断当前wifi状态,已打开则连接之前存储的wifi热点(如果有),关闭则打开;
- 广播接收网络关闭和连接改变:网络关闭,尝试打开,打开则尝试连接绑定的热点;已连接到热点,判断是否是绑定的网络,如果不是则去连接绑定的网络;
- 网页:载入网页,监听加载进度,加载完成时关闭启动动画并显示网页;
- 监听滚动事件,判断是否到底部,是的话则弹出设置菜单;
遇到的坑:
功能其实很简单,但是坑很多
- 页面加载不完全,没有启用:
settings.setDomStorageEnabled(true)
; - 本来为了展示 想删除几个已配置的网络,结果搞了半天removeNetwork()方法都无效,查了一下发现在6.0里不给用了。http://stackoverflow.com/questions/32756690/android-m-unable-to-remove-wi-fi-ap-programmatically;
- 好奇像
wifiManager.isWifiEnabled()
这种方法是不是才加上的,网上的例子都是自己判断; - 系统4.2以后获取的SSID是双引号;
现存问题:
- 网页版把 顶部、左、右 都占用了,所以只好放在底部滑出。 只是使用了
webView.setOnScrollChangeListener()
判断网页是否到达底部,问题就是 只能网页不在底部的时候才能划出,然后左右滑动的页面或者about页面 拖动也会弹出菜单;(解决方法是 判断到达底部后 等待2秒然后滚动回顶部,但觉得这样不太好); - bottom sheet 有时会弹出多个;
- 我的连接wifi策略是只要应用运行就会强制连接 绑定的wifi,这样万一没有退出而是切换到其他app了,wifi是没法改变的;
希望可以提供一下思路,不过找到工作前大概不会修复了。
下载地址
https://github.com/atever/GR-Remote-Package/blob/master/app/GR_Remote_0.1.apk
项目地址
https://github.com/atever/GR-Remote-Package
感想:
- 有段事件没搞Android,深切体会到了前同事的那句“面向Google编程”;
- 命名和结构都不太规范的问题,应该从一开始就规范好,后面项目越庞大越难以规范;
- 看了下Image Syn这个APP,是用Cordova搞的,然后又有个网页版,既然都是网页为什么不整合在一起;
说一下标题,公司解散了,已经玩了两个星期,结果发现实在无法安心踏实的玩啊, 虽然工资没有准时发,但信用卡账单还是准时躺在邮箱了呢 (手动doge)。