路由组件
我负责开发了 Android 端的路由组件:
1、 实现方式:通过在 AndroidManifest.xml 里面设置每个 Activity 对应的别名,在App 启动时初始化一个map,用来保存 Activity 的别名、对应的 Class 对象,在需要跳转页面时只需要在 map 中搜索到对应的Activity的Class对象即可跳转。
2、 为了解决 onActivityResult 返回结果代码繁琐的问题,在 Activity 上添加了一个无页面的Fragment,通过Fragment 的 startActivityForResult 跳转页面,并且在 Fragment 的 onActivityResult 去回调接口,并返回数据给 Activity。
3、Activity 的别名支持设置一个或者多个,可解决同一个 Activity 对应不同的业务场景问题。 通过定义别名为“lc”的透明 Activity 来实现检查是否已经登入账号的需求,只需要跳转“scheme://lc/alias”即可完成登入账号成功后直接跳转 alias 别名的 Activity 的需求。
水印打卡相机组件
我负责开发了水印打卡相机功能,可以进行短视频的录制等,解决问题如下:
1、为了解决无法直接对外部纹理添加水印的问题,通过先将外部纹理绘制到 FBO 的纹理附件上进行添加水印操作,从而实现水印效果。
2、 为了解决预览时图形效果是变形的问题,采用了 OpenGL ES 正交投影的方法,从而实现正常的预览效果。
计步器模块
我负责开发了每日计步功能,类似*运动,支付宝计步功能,解决问题如下:
1、 由于 android4.4 以下或者一些特殊的*不提供计步传感器,所以这些机型采用加速度传感器进行计步;针对android4.4 以上提供了计步传感器,通过计步传感器计步功耗小,计步准。
2、 由于计步传感器不会根据天来分割,只是返回当前步数的总和,为了解决跨天计步模块归零问题,通过零点分隔广播,来对计步模块进行分割,只要跨天了计步模块就归零并从零开始计步。
3、 为了解决少数*接收不到零点分割广播,在计步传感器回调数据时,判断当前时间是否与上次回调数据的日期是否不同,日期若不同,则判定为隔天数据,从而计步模块数据归零并重零开始计步。