Android GATT 连接过程源码分析

低功耗蓝牙(BLE)设备的通信基本协议是 GATT, 要操作 BLE 设备,第一步就是要连接设备,其实就是连接 BLE 设备上的 GATT service。 结合上一篇文章,我这里结合源码,分析一下 GATT 连接的流程,以及各个模块是怎么相互交互的。注意本文依据的是 Android 4.4 的源代码。 应用框架层 首先, »

[第21期]Android周报

文章/教程 ViewOverlay 与 animation 介绍 本文简单介绍了 Android 4.3 引入新类 ViewOverlay 的特性,ViewOverlay 就是一个在普通的 View 之上的一个视图层,是用来做动画的绝佳的地方。 手动实现布局过渡效果(Layout transition) 这是一个系列文章,介绍了怎么一步一步手动实现一个 Layout transition,包括( »

Android 的蓝牙简介

本文主要是翻译了 Google 的官方文档。 简介 Android 提供默认的蓝牙协议栈是 BlueDroid,分为两层:蓝牙嵌入式系统(BTE)和蓝牙应用层(BTA),BTE 层主要实现蓝牙的核心功能,BTA 层则主要负责和 Anroid 框架通信。 Android 4.2 之前,Google 一直应用的是 Linux 官方蓝牙协议栈, »

[第20期]Android周报

文章/教程 美团 Android DEX 自动拆包及动态加载简介 一个多 DEX 打包实践。对于大型的 Android 项目是非常有必要的,可以参考一下这里的实现和可能遇到坑。 Android Studio 分模块自动化构建实战 使用 Gradle 自动化构建模块的一个实例。Gradle 构建非常灵活,配合一些自定义脚本,能够自动化干很多事情。 一步一步教你实现 Periscope 点赞效果 »

[第19期]Android周报

文章/教程 Android 应用层 View 绘制流程与源码分析 通过分析源码详解了 View 的 measure, layout, draw 流程,对理解 Android 中最核心的 View 类有非常大的帮助。(@工匠若水) Android Design Support Library 使用详解 Android 社区发生的大事就是最近开了 »

FlyRefresh——让人眼前一亮的下拉刷新

几天前在网上看到 @Zee Young 的一个下拉刷新的设计 Replace。如下图: 第一眼看到这个设计就觉得眼前一亮,在Dribble上获得了 1.7k 多的 like,微博上也有大量转发。可见确实一个很成功的设计。我准备在 Android 上来实现它。 经过几天的折腾,最终实现并开源在 Github 上,项目地址: FlyRefresh,实际效果如下图: 总体上还原了设计的70%~80% »

[第18期]Android周报

文章/教程 LeakCanary 中文使用说明 良心企业 Square 又出大招,自动检测内存泄露的开源库,内存泄露检测变得非常容易了。 Material 适配2 - 高级篇 这篇文章详细讲解了怎么使用 Toolbar 来替换以前的 ActionBar,还有怎么避免踩一些坑。还有这个系列的入门篇。 详解 Dagger 2 Dagger 2 是一个依赖注入框架,已经被 »

[第17期]Android周报

因为最近太(tōu)忙(lǎn),间断了两期周报,我错过了很多,后面会继续保持更新。 文章/教程 自定义 Drawable -- 实现过渡效果 可以通过自定义的 Drawable 轻松实现绚酷图标的过渡效果,实现思路很巧妙。 NotRxJava 懒人专用指南 本文作为 RxJava 的入门前传,通过实例一步一步讲解了 RxJava 的诞生原因及其解决的问题,对理解和使用 »

[第16期]Android周报

文章/教程 Android 性能优化系列 上期周报推荐了 Google 联合 Udacity 推出免费的 Android 性能优化进阶课程。这里胡凯总结了课程的内容,分为四篇:渲染篇、运算篇、内存篇和电量篇。(@胡凯me) 那些年我们错过的响应式编程 一篇讲解响应式编程思想的文章,并且有一个生动的例子。看起来和 Android 没有什么关系。如果你想在实践 Android 响应式编程( »

[第15期]Android周报

文章/教程 Android 性能优化后续 Romain Guy 大神的文章,又一次在没有任何源代码的情况下,利用工具找出 App 的性能问题。好吧,同时随便推荐我的半分钟读完的笔记。 Gradle 插件用户指南(译) Android Studio 使用 Gradle 来构建项目。本文是 Gradle 插件详细指南,留作备用。 Android »