携程旅行

我要开发同款
kkloqin2022年08月21日
81阅读

作品详情

路由组件我负责开发了 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、 为了解决少数手机接收不到零点分割广播,在计步传感器回调数据时,判断当前时间是否与上次回调数据的日期是否不同,日期若不同,则判定为隔天数据,从而计步模块数据归零并重零开始计步。Android 端功能开发1、 以 AOP 切面设计编程方式,通过 AspectJ 工具对重要的方法进行监控,对 App 所有Activity 的生命周期进行日志监控并埋点处理,降低了代码间的耦合性。2、优化了在线客服功能模块,采用两个 HandlerThread 对图片分别进行生成缩略图、压缩缩略图操作,解决了上传图片体积过大速率慢的问题,将聊天列表中的文本、图片样式修改成了仿微信的聊天样式。Flutter 端功能开发3、 开发了仿美团菜单列表的控件、自定义日历控件、省市区三级选择控件、选择菜单等控件封装提供给同事使用,封装了高德、百度、腾讯、苹果等第三方地图软件的路线搜索功能 api。4、 为了解决 h5 开发的地图功能卡顿问题,替换了由 Android Native 端开发的地图功能,Native 端集成了高德地图SDK,在 Flutter 里面嵌入了 AndroidView 进行开发,两端之间通过 MethodChannel 进行数据通信以及操作。提升了使用流畅度以及用户体验。开源项目1、一款视频播放器 https://github.com/kkloqin/Android_video_player 功能:支持暂停、继续播放;支持 seek 功能;音视频同步。 视频输出模块选用了 OpenGL ES 来渲染视频,音频输出模块采用了 OpenSL ES 来渲染音频,音视频同步模块采用的是视频向音频同步的策略:依赖于音频顺序播放时提供的时间戳,计算当前视频帧元素的时间戳与音频帧的时间戳的差值,是否在阈值范围内,如果在阈值范围内,则渲染当前的视频帧;如果不在阈值范围内,则进行对齐操作。对齐指如果视频帧时间戳小于音频帧的时间戳,则进行跳帧,视频帧时间戳大于音频帧的时间戳,则进行等待(不进行渲染当前帧)。2、一个路由框架 https://github.com/kkloqin/RouterDemo
查看全文
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论