自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fanfan

隔绝人世纷扰,只为纯粹技术,我在微信公众号等你

  • 博客(117)
  • 资源 (4)
  • 问答 (1)
  • 收藏
  • 关注

原创 带你解锁蓝牙skill(0)

一直以为自己对蓝牙很是了解,但前段时间跟一个很熟悉蓝牙的人进行交谈,才发现自己所写的只是蓝牙最上层的东西而已,甚至可以说根本就没有扎入到蓝牙的表层,很是惭愧…..写这篇文章的目的是完善蓝牙系列博文,并给大家一个对蓝牙的整体认知。毕竟一篇好的文章不仅仅是要做到细枝末节(很显然,我距离这个还很远),也要对整体的轮廓做个概述。先是要明白蓝牙究竟是什么,有什么用,为什么要用它,这些功能又是如何实现的等等。

2017-10-09 14:01:32 1975 5

原创 带你解锁蓝牙skill(三)

本文授权微信公众号fanfan程序媛独家发布转载请注明出处,本文出自fanfan的带你解锁蓝牙skill系列 蓝牙这块儿算是系统中的一个大块儿,刚开始分析确实很容易没有头绪,所以在进入庞大的源码之前先确定一个分析顺序,也好避免越学越乱。 对于源码的分析不外乎whw(what—how—why)对于蓝牙各协议的功能以及如何演示都已经分析完了,具体可以参考 带你解锁蓝牙skill(一)以及带你解锁

2017-06-21 11:38:10 6329 5

原创 带你解锁蓝牙skill(二)

本文已授权微信公众号fanfan程序媛独家发布紧接着带你解锁蓝牙skill(一)继续分析 转载请注明出处,本文出自fanfan 的带你解锁蓝牙skill(二)3>,Pbap配置Pbap:Phone Book Access Profile是说共享联系人协议,具体定义可参考上一篇。 其实说白了就是一个手机可以从另一个手机中导入联系人信息。 其中包括两个角色PCE:对应的协议配置文件为Pb

2017-06-12 17:11:39 9576 7

原创 带你解锁蓝牙skill(一)

在研究蓝牙源码之前,先来看看蓝牙大致都有什么功能。蓝牙模块支持什么功能完全由蓝牙所支持的蓝牙协议而确定,所以先从蓝牙协议看起转载请注明出处,本文出自带你解锁蓝牙skill 作者为fanfan1,Android各版本与蓝牙profile关系首先明确一下,目前市面上的Android机的源码大致跟三方面有关系(只考虑蓝牙profile)Google推出的各Android系统:所支持的蓝牙协议profi

2017-06-09 09:23:18 40338 21

原创 不当程序员,你会干什么

本文来源于公众号:码农修仙儿技术文章写多了,是时候歇歇了今天轻松一下,随便聊聊近期的一些想法找个时间,静静的听着歌儿,看一看文章…疫情已经持续了两个多月了,你在家待得还习惯吗曾经没有时间看的书,你看了吗曾经没有时间写的笔记,你整理了吗曾经没有时间减的肥,你实施了吗大概是没有的吧估计只能是每天抖音刷个不停了…我们总在抱怨,工作太忙、生活太累,没有时间和精力但当你真的有了时间...

2020-04-22 14:15:57 1306 5

原创 能够摧毁你的只有你自己

几天前,实现了公众号(码农修仙儿)粉丝的小目标,感觉自己就是Lucky Dog,激动的一天工作效率都很高,非常感谢各位的关注你问我会骄傲吗?当然会像是种了好几年的竹子终于破土而出,也给我了坚持下去的勇气今天不谈技术,聊聊作为程序员的一些感触从15年到现在,排除掉没工作的那几个月,工作大概三年半经历过只有十几人团队融洽的创业型小公司,也待过成百上千谁都不认识的毫无人情味儿的中大型公司渐...

2019-08-20 14:53:27 1009 4

原创 如何看待华为总裁信

2019年5月17日凌晨,华为海思总裁何庭波,针对被列入美国商务部工业和安全局的实体名单,发表全体员工公开信。虽然并不是华为员工,但言论却让人热血沸腾只想说,I am proud if you在顺境中,华为依旧能够做长远规划,尽力摆脱对其他的依赖,无不体现出其前瞻性和行动力,当然也必须是有实力也因为是做足了充分的准备,才能在危机到来时如此的不卑不亢说实话,现在很多人都缺乏危机意识,一...

2019-05-17 17:27:21 852

原创 Android源码分析之鼠标事件监听(二)

本文是一篇很长~很长~很长~~~的技术笔记如果有什么问题,欢迎指正.Zero 前言前边儿已经说过,要想了解鼠标就要研究三个东西鼠标的挂载/卸载鼠标事件处理,也就是鼠标操作鼠标绘制不论是鼠标挂载/卸载还是鼠标操作,基本上算是对输入事件的一个监听了,属于一类东西但是鼠标绘制,这涉及到surface绘制鼠标,对于我本人,基本上没接触过那么多绘制的东西,一点点尝试分析.鼠标事件本身又包括什...

2019-04-16 17:02:47 1634 2

原创 白话平衡二叉树

本文由微信公众号:码农修仙儿独家发布该来的总会来,平衡二叉树果然又来了…出现背景前文已经研究过普通的二叉树,为什么要用二叉树呢?因为二叉树的结构可以实现二分法查找的效果。你比如前文介绍的满二叉树:如下图所示,如果你想要查找4号元素,你只需要遍历3次即可。所以在理想情况下,二叉树可以优化遍历。遍历时的时间复杂度基本上为0(logn)。但是考虑一种情况,在按顺序插入数据的情况下,二叉...

2019-04-03 17:20:41 545 3

原创 Sqlite数据库使用---基础研究

本文由公众号码农修仙儿独家发布,微信搜索fanfan_code目录Sqlite简介Sqlite创建表语句Sqlite增加insert语句Sqlite查询表selectSqlite更新数据update表排序order by查询某段数据limit和offset删除表dropdemo演示SQLite简介SQLite属于轻量级的数据库。用起来也很方便。和文件相比,sqlite...

2019-02-26 13:19:20 536 2

原创 程序媛儿的自我修养

本文由公众号:码农修仙儿独家发布,微信搜索fanfan_code查询更多裁员新闻满天飞,图片我就不贴了滴滴、美团、知乎、京东裁员了阿里、华为、百度暂时不招了(最新消息阿里和百度已经开始招聘了)锤子、ofo资金链断裂了(锤子手机部分已被字节跳动收购)对互联网人来说,这个寒冬尤其冷。明星需要在娱乐圈扬名立万,码农不求在码农圈赫赫有名,但最起码也要能够立足,经受得住本年度的十二级裁员风暴...

2019-02-26 13:16:49 649 1

原创 Android蓝牙连接a2dp蓝牙耳机

开发环境:开发工具:Androidstudio适配机型:honor8(Android6.0), 坚果R1(Android8.0)开发功能:Android中蓝牙连接A2DP设备,蓝牙耳机设备功能实现:本应用提供以下功能:第一:开启蓝牙第二:查找过滤掉A2DP设备第三:连接A2DP设备第四:断开连接A2DP设备第五:保存通过本应用连接的A2DP设备第六:当重新启动应用时加载已连接...

2018-12-06 17:20:08 4331 8

原创 蓝牙协议栈初识

在学习的过程中一直有疑问,为什么蓝牙技术突然就产生了呢?蓝牙技术的目的是什么呢?蓝牙技术相对于它所替代的技术存在什么样的优势和劣势呢?蓝牙技术都做了些什么呢?随着我们周围电子产品的增多电子产品之间的信息交互也越来越频繁,但是信息交互方式在无线连接出现之前只能使用有线连接,比如计算机接入键盘,鼠标,主机,扫描仪,打印机,摄像头等等,如果都是用有线连接那就会让你的工作台充满电缆,而且既然是有线的那么...

2018-12-03 10:30:02 8209 2

原创 北京,我坚持三年了

我于15年7月份抵京,目前从事Android工程师,公司在所属行业没什么影响力且口碑一般,不好不坏。租着一个月2660的自如,每天地铁15分钟、走路30分钟也就到公司了,不远不近。关于自学: 有句话叫师傅领进门,修行在个人你现在经历着的,是他们曾经的经历。 也许你和我一样,已经经历, 也许你和我不一样,曾经经历...

2018-07-23 19:06:55 3958 38

原创 闲叙蓝牙OPP(二)---文件传输BluetoothOppService专讲

原文来自 原文链接从上文可以看出,文件插入db后直接就是BluetoothOppService(下文会缩写成BtOppService)的处理了,在BtOppService中建立传输通道,但在讲述传输通道之前,先来好好分析一下BtOppService。那么在分析该BtOppService之前先提一个问题,如果让你去设计这么一个service你会怎么设计?service都需要实现哪些功能?...

2018-07-22 19:00:16 2184

原创 闲叙蓝牙

本文已授权微信公众号独家发布蓝牙模块共有三大部分组成:Host:主机,L2CAP以及L2CAP以上Controller :控制器,HCI以下HCI:主机控制接口,传输主机host和controller之间的接口,记录了从host到controller的commands命令以及controller到host的响应events每个蓝牙芯片包含唯一的一个host,以及唯一的一...

2018-06-29 18:34:10 551

原创 linux下Android7.0多用户编译问题

在此首先感谢Android7.0 JACK编译器不支持多用户同时编译的问题的解决该篇文章的作者龙骨一身为我提供了很多问题解决方案,也学习到了很多。接下来相当于一个学习笔记了。0.0 WHYlinux下多用户使用open-jdk8编译时会有jack-server的问题。首先要明白为什么会出现这个问题,只有明白了原因,才能对症下药。注意这里重点是多用户会出错。如果只有一个用户的话应该问题不大。

2017-10-17 13:12:52 1341

原创 网络协议学习笔记

一直以来,研究蓝牙和wifi时总是只能是对上层很熟悉,但是对底层这些东西一无所知。而真正的研究起来才发现,自己对无线连接中的协议一无所知,这真是一件可怕的事。所以,接下来会给自己一段时间,来完善这方面的东西2017-09-28 启动网络协议学习:目前状态是不清楚要学什么,如何学习,学习目的,一片混乱。希望可以尽快整理出思路。

2017-09-28 11:35:44 690

原创 WiFiAp探究实录--功能实现与源码分析

接下来要更新的博文是WiFi热点相关的,更新时间为8月1号–8月30号之间。看到此博文的开发者们,如果有关于WiFi热点的任何疑问可留言,最终会将值得研究的问题以及我已经研究出来的问题更新在博文上。 Android虐我千百遍,我待Android如初恋。转载注明出处 本文出自fanfan的WiFi热点探究实录 ——————编辑于2017-08-02——————— wifi热点说的是wifiA

2017-07-24 19:40:08 7079 26

原创 Android7.1.1系统设置默认值大全

1,是否有默认值在寻找一个开关的默认值时,首先要明白一点,该开关是否存在默认值,以及该开关状态是否有状态保存(一般状态存储在settings的db中)。 判断条件: 在reboot(重启)之后开关状态仍旧保存或者是在reset(恢复出厂设置)之后开关状态恢复到默认的,才能找到默认值。 在reboot之后开关状态仍旧保存的,表示状态存储在了db中。 在reset之后开关状态恢复默认的,表示状态

2017-07-21 15:13:17 10380 8

原创 Androidstudio编译c/c++jni方法

本文微信公众号授权fanfan程序媛独家发布转载注明出处: 本文出自fanfan的博客Androidstudio编译jni 开发环境:Androidstudio2.3 开发目的:在Androidstudio上编译c/c++jni并自动生成so库,在java类中引用。 开发过程中遇到的问题很多,但终归是成功了,记录下来用Androidstudio的准备 遇到的问题诸如: 再比如

2017-06-29 17:33:40 10447 4

原创 我是如何学习Android源码的

一连很长时间(从2017/06/09到2017/06/26)都在研究蓝牙,而且这只是文章发表的时间,再加上组织文章和研究的时间,不知不觉中就坚持这么久………,也写了蓝牙的三篇博客,而且篇幅很长如下:在这里就不放文章链接了,有需要的在我的文章中搜索即可,现在,是时候放空一下,给自己充充电了,来张美景,欣赏一下北京的晚霞。言归正传,先放上Android源码连接地址Android源码,至于研究源码的好处,

2017-06-26 16:43:55 5538 1

原创 Android四大组件完全解析(二)---Service

Service简介转载需注明出处,本文出自 fanfan的博客 原文地址为: 原文地址Service两大功能 :当应用程序不与用户交互时,运行一些需要长时间运行的操作为其他应用提供一些功能(提供能够跨进程调用的功能)Service的配置:service需要在所在应用的androidmanifest文件中进行配置:<!-- name是service的包名路径--><!-- permiss

2017-05-17 16:17:50 14949

原创 你是伸手党吗???

本文源于大牛博客下的某些评论。我属于15年毕业的电信专业,自学Java有两方面的原因,一是基本电信在专业的女生没有工作岗位二是因为Android在14年-15年还处于很火爆的境地三是出于个人对于编程的热爱说实话我很后悔当时自己的学习情况,一不上各种技术论坛、博客,二又不知道各种技术交流群的好处(自学期间我没加过一个技术交流群)。每天固步自封,只能是看着视频、书籍

2017-04-18 16:35:27 2022 10

原创 BLE低功耗蓝牙开发相关概念问题记录

蓝牙ble的传输速率是指主从机每秒所传输的字节数。既然是传输速率那就涉及到时间和每次所传递包大小的问题。 本文已授权微信公众号 fanfan程序媛 独家发布转载请注明出处,本文出自 BLE低功耗蓝牙开发相关概念问题记录 ble对于数据的传输有一个字节上的限制,默认情况下是20个字节,但并不是不可修改的。默认情况下mtu是23个字节(除去3个字节的标志位剩余为20个字节),主机完全可以通过调

2017-04-11 19:26:46 4619 5

原创 Android四大组件完全解析(一)---Activity

本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,以及android/frameworks/base/docs/html/guide/components/activities.jd文件One Activity简介:Activity是一个单独的、可以和用户交互的东西。几乎所有的activit

2017-03-30 16:14:48 9102 1

原创 Activity加载view6.0源码分析---setContentView

本篇博文介绍三个方面的知识严重声明:转载请征求本人同意并请注明出处 :本文出自海天之蓝的博客,禁止用于商业用途chapter One:认识Activity的布局chapter Two:启动activity时的布局--从setContentView说起chapter Three:activity动态加载view----addView分析View这个东西,是构成页面

2017-03-13 15:52:02 7741 4

原创 博客总结--开启新篇章

博客第一篇文章开始于2015-11-23是关于activity四大启动模式的,到现在为止已经整整一年半的事件,回头看发现文章很简单,没有几行,甚至可以说写的很低级,但却是我的第一篇博客,当时怀揣着紧张的心情分享出来,总是值得留恋的。。。。。正是有了博客平台,可以让我总结自己这一年半的发展历程,不论以前写的好与坏,那都是我当时最好的理解。我的博客大致可以分为几类And

2017-03-03 10:36:33 1766 3

原创 Android中应用调用系统权限

现在设备的安全性越来越受到重视,随之而来的便是开发中的各种不便,比如有普通权限,运行时权限,系统权限之分。对于运行时权限的添加可以参考Android6.0蓝牙开发中获取附近低功耗蓝牙设备结果权限问题分析而对于系统权限,却没有很好的解决方案,暂时只有一些特定的解决方案。chapter one 系统应用添加系统权限对于可以编译到源码里的apk添加系统权限很简单,

2017-03-02 11:24:05 5704 1

原创 Android5.0以后隐式启动ServiceBug

以前写过一篇关于进程间通信的博客通信之进程间通信-AIDL当时用的还是4.2的系统,跨进程 的服务可以根据action进行启动 Intent intent = new Intent(); intent.setAction("android.intent.action.aidl.server");

2017-02-28 11:10:04 1898

原创 启动binder学习计划

2017-02-24 启动binder学习计划,预计用时一个月在知乎上看到有人说,想要学习好Android源码,学习会binder是第一步。以前的博客只是基于某个应用进行分析,大概分析过蓝牙模块,设置模块,录音模块以及一小部分的WiFi模块,如果对这些模块感兴趣可以参考我的博客。对于应用的学习方法基本了解所以以后不再打算对某个应用做整体分析,也许会单

2017-02-24 09:40:11 1083

原创 八问程序员-----总有一个适合你

先来张美图,缓解一下眼部疲劳,这是今天的天气,北京能有个这么好的天气真是很好啊,珍惜吧1,为什么程序员中女生那么少?说个我所经历的真实的案例:我在一个开发群里回答过一个关于系统开发的问题,回答正确之后很多人说竟然是妹子,好厉害啊!我默默的无语中...........如果要是放在以前我上学期间,我一定回一句:女生怎么了?女生就应该比男生笨?也正是因为你们想着女

2017-02-20 11:06:27 5045 31

原创 Android6.0源码分析之录音功能(一)

从现在开始一周时间研究录音,下周出来一个完整的博客,监督,激励!!!2017-02-09--------2017-02-17

2017-02-09 17:31:58 14145 14

原创 Android6.0源码开发之修改默认音量default及max和min

1,修改默认音量的位置为android/frameworks/base/media/java/android/media/AudioSystem.java public static int[] DEFAULT_STREAM_VOLUME = new int[] { 4, // STREAM_VOICE_CALL 普通通话音量 7, // STREAM_

2017-02-08 14:12:58 8447 4

原创 Android源码开发之添加/删除系统应用

本文参考老罗的系统源代码情景分析中的1.5章节http://0xcc0xcd.com/p/books/978-7-121-18108-5/c15.php想要在源码基础上添加一个应用整体来说只需要两步第一步,添加所需要的模块第二步,在系统的mk文件(一般在device/qcom/***.mk)中添加对应模块先来说说第一步:添加模块模块下有四个文件夹res文件夹:资

2017-02-07 10:54:08 6582

原创 按键事件处理

当按键来临时可能会有三种动作:ACTION_DOWN:按键被按下ACTION_UP : 按键被释放ACTION_MULTIPLE : 多次重复的按键事件,可通过getRepeatCount获取次数按键的动作状态可以通过event.getAction()方法来获取。一般只要down和up两种行为。当然按键也有很多标志位,可以通过event.getFlags()方法来获取按

2017-01-17 11:11:59 2694 1

原创 Android6.0锁屏源码分析之界面布局分析

大致先介绍一下锁屏界面Android的锁屏界面可以分为两级,一级锁屏界面暂且称之为锁屏界面LockScreen,即平常用到的无需任何输入和验证,只需滑动解锁,没有任何的安全性可言,只是为了防止因为非故意触发手机造成的一定的困扰。二级锁屏界面是在解锁一级界面后进入的一个界面,算是用于一定的加密,相当于给手机多了一层保护,所以二级界面通常称之为安全界面-----KeyguardSe

2017-01-12 17:44:45 18600 2

原创 Android6.0源码分析之menu键弹出popupwindow菜单流程分析

例如上图,在按下菜单键后会弹出对应的菜单选项,准确来说,是在菜单键弹起后出现的一个popupwindow,那么从菜单键弹起到popupwindow创建所涉及到的历程是怎样的呢?理论上是底层监测menu按键键值,通知framework层,framework经过一系列的处理后分发给上层,或者拦截掉现在是假设framework层已经把menu按键分发给了用户,那么接下里就是activity进

2017-01-11 17:20:55 7383

原创 Android中初步自定义view

问题1 ,Paint画笔对象为null的异常 FATAL EXCEPTION: main Process: com.fang.zrf.mycustomview, PID: 12882 java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a

2017-01-10 11:15:23 1312

原创 Android中View研究自学之路

写这篇博客呢是在研究了view将近一个月之后,算是对自己的学习做一个总结,进而反思一下学习方法,本博文不涉及代码分析。对于view的研究始于view.java和viewgroup.java,刚开始我是一点一点儿看代码,看过源码的都知道,view.java是

2017-01-09 10:13:42 1345

自定义百分比的progressbar

自定义view

2016-06-03

自定义带百分比的progressbar

自定义view

2016-06-03

Sourceinsight32位兼容64位所需文件

sourceinsight32位兼容64位所需注册表文件

2016-04-07

listview+checkbox乱序问题解决demo

listview+checkbox乱序问题

2016-03-06

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除