自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

mockingbirds的专栏

每天进步一点点

  • 博客(240)
  • 资源 (316)
  • 收藏
  • 关注

原创 Android耳机拔插事件流程

Android所有的input设备都会在/dev/input目录下生成对应的设备节点,一旦有任何输入事件产生,便会将事件写到这些节点下,同时对于外部输入设备(鼠标键盘等)的插拔还会引起这些节点的创建和删除 使用adb 命令可以查看当前手机插入的耳机状态,命令为:adb shell cat /sys/class/switch/h2w/state

2018-05-12 18:00:34 3933

原创 Android O版本power按键锁屏亮屏流程

今天记录下跟踪的Android O版本,power键按下流程,包括关机,锁屏,亮屏流程,没有太多新的扩展,只是做了源码流程的记录分析,若有异议,欢迎提出,下面开始power按键传递对于按下power按键,在fwk中首先会传递到PhoneWindowManager#dispatchUnhandledKey@Overridepublic KeyEvent dispatchUnha...

2018-02-19 13:44:10 6845 1

原创 Android系统实现navigationbar订制

今天给大家带来一个有趣的实验,基于android N原生代码,实现动态显示和隐藏navigationbar的功能,先说下实现思路,在SettingsProvider中增加一个”show_navigation_bar”字段,用来存储当前是否显示和隐藏navigationbar的值在Settings中增加一个SwitchPreference,并且设置setOnPreferenceChangeList

2017-01-26 08:53:01 11882 10

原创 Android上hook AMS和PMS

好吧,我承认,其实这一篇文章,主要使用到的就是动态代理,但是个人觉得还是有很大意义的,比如说可以降低代码耦合度,如果想在用户的某一类操作都要打印log获取当前参数,或者是记录用户的点击事件,点击时间等,那么此时在现有代码的基础上每次在点击事件中做处理,肯定是可以的,但是这样,我们要修改多少代码,其实此时,我们就可以完全使用代理来实现类似的功能。说道这里了,就先来看看,什么是代理吧静态代理比如,现在

2017-01-02 10:39:59 4961 1

原创 Android中实现快速搜索

本篇博文基于Android N源代码为参考 从android5.1 开始,google为用户提供了一种很方便的搜索功能,用户可以很方便的在settings中搜索setting里或者系统其他配置了指定继承自SearchIndexablesProvider的应用的设置选项,这样做极大的提高了搜索效率SearchIndexablesProvider简介SearchIndexablesProvider

2016-12-16 23:04:56 7890 1

原创 wifi连接流程

在平时的android开发中,经常会用到wifi相关操作,其实就应用而言,系统都是通过WifiManager对应的api来进行对应的操作 我们可以从源码的frameworks/base/api目录中看到当前系统提供的所有apipublic class WifiManager { method public int addNetwork(android.net.wifi.WifiConfig

2016-11-27 22:05:12 5414

原创 Intent的匹配与查找

PMS解析已安装的apk信息在Android中getSystemService流程一文中,我们知道系统在启动的时候 会加载系统Service,比如ActivityManagerService,PackageManagerService等, PMS启动以后,会扫描系统中所有已安装apk的目录,比如系统 应用”/system/app”,第三方应用”/data/app”,PMS会解析该包下的所有And

2016-11-14 21:44:03 1561

原创 WindowManagerService添加View流程

我们都知道在android中所有的界面显示相关的,都是通过WindowManager.addView方法来将当前需要显示的View添加到window中。Window与WindowManager之间的关系WindowManager的实现类就是WindowManagerImpl:@Overridepublic void addView(@NonNull View view, @NonNull View

2016-11-13 21:44:40 3738 1

原创 Android事件传递流程

启动服务在系统启动时候,会启动多个服务,其中包括InputManagerServiceinputManager = new InputManagerService(context);看看InputManagerService构造方法public InputManagerService(Context context) { this.mContext = co...

2018-05-19 17:49:41 1002

原创 SystemUI流程分析

在前面的Android中getSystemService流程中,我们知道在系统启动的时候,会启动一些系统的必要服务,SystemUI也是在SystemServer#startOtherServices这里启动的SystemUI启动时机static final void startSystemUi(Context context, WindowManagerService windowM...

2018-02-19 14:10:59 1773

原创 Ubuntu16.04编译Android8.0系统源码

源码下载源码下载请参考下面链接 清华大学镜像站安装openjdk$ sudo apt-get update$ sudo apt-get install openjdk-8-jdk$ sudo apt-get install openjdk-8-jre安装编译依赖的库文件首先需要更新软件源,这里使用阿里源编辑如下文件:sudo gedit /etc/apt/...

2018-01-28 18:11:09 10609

原创 WiFi的打开流程

上一篇学习了StateMachine原理,在此基础上,继续分析系统Wifi相关服务的开启流程,以及wifi的打开流程,下面开始Wifi相关服务的启动我们都知道每次系统开机以后,默认wifi相关的功能都可以使用了,那么肯定有在系统启动的时候,有启动wifi相关的服务,是在SystemServer中启动的,如下: 以上,WIFI_SERVICE_CLASS是WifiService的全类名priv

2018-01-07 15:06:27 3955

原创 Android StateMachine学习

2018年01月06日14:33:58,西安下了三天的大雪了,上班上学上街都不方便,索性在家看看代码吧,已经好久没有更新博客了,是因为之前的笔记本配置实在跟不上了,2018年元旦,狠下心来新买了一个某米的笔记本,除了存储256G不够使用(单单下载一套Android代码,编译的时候就没有空间了,可怜的只剩下40M了,只是中通快递很不给力,扩展的硬盘还在路上。。。。。)废话不多说了,下面进入正题此次关

2018-01-06 20:05:22 4736 1

原创 使用requests爬取豆瓣电影top250

今天使用requests获取豆瓣电影top250的内容,先说下思路表设计获取每一页的内容获取当前页每一部电影对应的链接 获取所有页的url for i in range(10): top_url = "https://movie.douban.com/top250?start={0}&filter=".format(i*25)获取前页每一部电影对应的链接all_tit

2017-06-03 18:51:09 9472

原创 使用scrapy爬取拉勾网职位信息

今天使用scrapy实现了一个爬取拉勾网上的职位信息字段,并保存到数据库的爬虫,先看下效果: 导出json格式如下: 创建Spider之前在创建spider的时候,都是使用有genspider默认创建的spider类型,可以通过下面命令查看当前scrapy支持哪些类型的spider 下面创建crawl类型的spiderscrapy genspider -t crawl lagou ww

2017-05-30 18:02:58 4045 3

原创 使用requests和scrapy模拟知乎登录

获取登录传递的参数在正式开始之前,首先需要做的就是获取登录知乎时候传递的参数 https://www.zhihu.com/ 可以看到,这里当登录的时候,是传递红色部分标注出来的四个参数的,并且访问的是https://www.zhihu.com/login/phone_num地址,但是这里验证码需要用户点击倒立的字,目前我还没有办法,但是可以使用手机端登录看看,其实是让用户输入登录验证码的,因此,

2017-05-29 13:46:31 5890 6

原创 正则表达式基础

正则表达式是学习python爬虫的必要条件,所以需要先做好准备打好表达式的基础,开始吧# -*- coding: utf-8 -*-import reline = "helloworld123"# ^表示以什么开头# .表示任意字符# *表示一个字符可以重复任意零次或多次# $符号表示结尾字符regexStr = "^h.*3$"if re.match(regexStr, line):

2017-05-14 21:32:39 2646

原创 scrapy环境搭建

在ubuntu16.04下搭建scrapy环境安装pipsudo apt-get install python-pip安装Scrapy需要的依赖库sudo apt-get install python-devsudo apt-get install libevent-devsudo apt-get install libssl-dev安装Scrapysudo pip install

2017-05-13 14:50:24 3155

原创 使用Requests+xpath实现简单的数据爬取

今天使用Requests+xpath实现简单的数据爬取,获取的是CSDN博客上的标题,发表时间,和阅读次数下载PyCharm这里我使用的是PyCharmhttp://www.jetbrains.com/pycharm/download/download-thanks.html?platform=windows&code=PCC 关于PyCharm的使用方法,和AndroidStudio是一样的,这

2017-04-30 14:29:53 31145 2

原创 python正则表达式re模块语法

使用字符串匹配实现对于简单的匹配查找,可以通过字符串匹配实现,比如:查找以”hello”开头的字符串 def find_Hello(filename): f = open(filename) for line in f: if line.startswith('hello'): print line f.close()find_Hel

2017-04-03 11:07:35 2273

原创 Python学习之Requests库

python中的Requests库是封装好的用来请求http并返回对应结果的python用具初识Requests库官方文档 http://cn.python-requests.org/zh_CN/latest/代码地址 https://github.com/kennethreitz/requestsRequests环境准备安装pip https://pypi.python.org/py

2017-04-02 18:13:11 2333

原创 python文件操作

python常用读写文件函数python打开文件#文件打开方法open(name,[,mode[buf]])// name指定文件路径// mode指定文件的打开方式,读写,还是只读// buf指定缓冲区的大小上面提到文件打开方式,有如下几种 mode 说明 注意 r 只读方式打开 文件必须存在 w 只写方式打开 文件不存在则创建文件,文件存在则清空文件内

2017-03-26 16:13:50 2136

原创 python装饰器

python闭包理解与使用闭包:内部函数中对enclosing作用域的变量进行引用,看下面代码:passline = 60def checkFun(val): print("%x" %id(val)) if val > passline: print('pass') else: print('fail') def in_fun():

2017-03-25 08:46:25 702

原创 python中的错误和异常处理

使用try except处理异常try: print 10 / 0except ZeroDivisionError, e: print "catched a ValueError:",e上面的代码中,被除数是0,会引发ZeroDivisionError,运行上面的代码:catched a ValueError: integer division or modulo by zero使

2017-03-21 21:53:31 2373

原创 python学习(三)面向对象

python面向对象继承class Person(object): ''' classdocs ''' def __init__(self,name): ''' Constructor ''' self.name = nameclass Student(Person): def __init__(s

2017-03-04 14:23:13 693

原创 python学习(二)函数

创建一个函数通过def关键字可以创建一个函数def addNumber(firstNumber,secondNumber) : return firstNumber + secondNumberprint "addNumber(2, 3) = "+str(addNumber(2, 3)) #输出: addNumber(2, 3) = 5另外系统为我们提供了很多函数,我们可以在命令行下通

2017-03-02 19:53:50 780

原创 python学习(一)常见的数据结构

Python程序是大小写敏感的,另外我们可以为一个变量赋值多个类型的值,在python中通常常量是用大写单词来表示的,但是不保证开发者一定不能修改,所以更多的 时候,算是一种编程约束python字符串创建字符串在python中创建一个字符串,只需要将字符串放在”“,”,”“” “”“当中即可#声明当前使用的字符集#coding=utf-8a = 'hello'b = "english"c =

2017-02-28 21:33:52 736

原创 java实现xml读写操作

今天带大家实现java中读写xml的操作,不说废话,直接进入主题吧这里读取xml分为四种情况JAVA官方提供的 DOM: 一次性将整个xml文件加载到内存中,进行解析 SAX: 逐层向下解析需要引入对应的jar包 DOM4J, JDOM读取xml我们分别做解析,先来看看需要我们解析的xml文件内容<?xml version="1.0" encoding="UTF-8"?><People

2017-02-27 22:32:36 5333

原创 android源码预置apk

本次实践基于android N原生代码,其实没有多大卵用,因为基本每个ROM厂商都有自己的定制方式,但话又说回来,会了总归是好的。这里我们可以预置包含源码的应用,也可以直接预置第三方apk增加有源码的应用Precondition删除bin目录和gen目录需要注意,由于android编译的时候,强制检查语言适配,所以,不能直接在布局中使用字符串,而是需要将其写入到strings.xml文件中,然

2017-01-22 22:14:32 6071

原创 学以致用:批量下载豆瓣线上活动图片

背景:今天在浏览豆瓣网站的时候,发现一个在线活动”来一句王家卫式的话”,之前看过不少王家卫导的电影,从来都是比较喜欢其中的台词,但是比较急性子,不能耐心看完,也或许是碎片时间比较多,就有了下面的想法使用爬虫抓取到每一个图片的url地址使用java访问该地址,并且将该url对应的图片保存到本地 说干就干,这里我们使用jsoup来爬去网页上的数据。第一步:获取”查看全部”地址我们先打开豆瓣主页,看

2017-01-15 23:05:37 873

原创 自定义ViewGroup之TagLayout

今天抽空写了一个标签布局,这里为了简单起见,我忽略了onMeasure方法,默认使用屏幕宽度和计算出来的高度作为当前TagLayout的宽度和高度,今天不想写太多话,所以直接上代码了流式布局简单实现创建TagLayoutpublic class TagLayout extends ViewGroup { private int mScreenWidth; public TagLayou

2017-01-14 22:38:34 798

原创 亲测可用Android原生代码添加系统服务

在Android系统中,为我们提供了很多的系统服务,比如AMS,PMS等,今天参考系统里其他服务的实现,在Android N原生代码中添加自己定制的服务,想想都满激动的准备工作在正式开始之前,需要知道下面两点以及满足下面条件:前提条件 Android原生代码,可以通过make全编通过,编译完成之后,可以通过emulator命令启动out目录下生成的image文件,需要注意在执行emulator

2017-01-12 21:55:56 9489 6

原创 自定义ViewGroup神器ViewDragHelper

ViewDragHelper一般用在一个自定义ViewGroup的内部,用来处理子View的拖拽和滑动处理水平滑动下面我们创建一个SimpleLayout继承自LinearLayoutpublic class SimpleLayout extends LinearLayout { private static final String TAG = "SimpleLayoutTest";

2017-01-09 22:05:10 902

原创 Android中实现so注入进程

这篇博客主要实现将so文件注入到进程中,并且在被注入的进程中执行so文件中的方法,先说下环境使用的是4.4的模拟器,嘻嘻.,参考 Android中的so注入,我只是整合了这些资源,并将其run起来,感谢作者提供的文件和思路先说下大概的实现思路吧: 1. 创建so文件所在进程的应用,创建c文件,并使用ndk-build编译出可执行so文件 2. 创建执行so文件所在进程应用,创建c文件,在mai

2017-01-03 22:01:29 8397 5

原创 最近总结的Android笔记(三)

android系统增加framework服务在 frameworks/base/core/java/android/os目录中增加对应的aidl文件在frameworks/base/Android.mk文件中增加定义的aidl文件 LOCAL_SRC_FILES +=mmm frameworks/base 此时会自动根据aidl文件生成对应的stub接口在frameworks/base/

2016-12-30 21:51:34 3858 2

原创 android拨号流程

今天学习”android中的拨号流程”,大部分情况,用户是通过dialer输入号码,拨号通话的,那么就从dialer开始吧。DialpadFragmentDialpadFragment是拨打电话界面,当点击拨打电话按钮会回调其onClick方法:public void onClick(View view) { switch (view.getId()) { c

2016-12-06 22:10:14 5105

原创 短信的接收流程

从RIL开始从RIL开始,前面的分析已经知道发送短信在framework层最终是通过RILSender来进行的,接收短信也是从RIL的内部类RILReceiver开始的class RILReceiver implements Runnable { byte[] buffer; RILReceiver() { buffer = new byte[RIL_MAX_

2016-12-04 12:52:25 3180

原创 短信的发送流程

在android中,google为开发者提供了一个SmsManager用来管理发送和接收短信的类,类似于WifiManager,先看下SmsManager的常用APISmsManager常用APImethod public java.util.ArrayList<java.lang.String> divideMessage(java.lang.String);一条短信只可容纳70个中文,所以当短信

2016-12-04 11:26:54 5586

原创 Toast流程跟踪

构造一个Toast看下makeText方法public static Toast makeText(Context context, CharSequence text, @Duration int duration) { Toast result = new Toast(context); LayoutInflater inflate = (LayoutInflate

2016-11-22 21:33:31 2859

原创 View的相关总结

View的绘制流程View的绘制流程是从ViewRootImpl#performTraversals方法开始的,在performTraversals中会分别通过performMeasure,performLayout,performDraw这三个方法来绘制一个View 具体可以参考setContentView那些事 measure: 用来测量当前View的宽度和高度layout: 用来确定

2016-11-21 22:08:18 727

android实现字体变色

该资源包含了一个使用xfermode实现的字体变色效果,具体可以参考博客:http://blog.csdn.net/mockingbirds/article/details/49456517

2015-10-28

android实现画板功能

该资源包含了使用android实现的一个简单的画板以及结合xfermode实现遮罩层画板效果。具体实现,可以参考博客http://blog.csdn.net/mockingbirds/article/details/49455421

2015-10-27

android实现自定义圆形图片

该资源包含了一个使用xfermode实现的自定义圆形图片,包括了自定义属性,可以参考博客http://blog.csdn.net/mockingbirds/article/details/49454987

2015-10-27

android自定义进度条

该资源实现了一个android平台使用自定义view实现了一个自定义进度条的功能,希望大家喜欢。详情请参考博客http://blog.csdn.net/mockingbirds/article/details/49454279

2015-10-27

html5关于indexdb简单demo

该资源包含了一个indexdb学习的简单demo,包含了增删改查,以及索引的创建和使用,可以参考博客http://blog.csdn.net/mockingbirds/article/details/48749375

2015-09-26

html5学习canvas代码

该资源包含了一个html5canvas的学习代码集,详细的可以查看该博客http://blog.csdn.net/mockingbirds/article/details/48572225

2015-09-19

html5离线缓存简单demo

该资源包含了一个使用html5使用离线缓存的简单demo,具体可以参考博客http://blog.csdn.net/mockingbirds/article/details/48412967

2015-09-13

java线程安全以及生产者消费者demo

该资源包含了一个java线程安全以及生产者消费者demo,可以参考博客:

2015-08-22

android增量升级

该资源包含了一个android apk增量升级的简单demo喜欢的下载。可以参考博客http://blog.csdn.net/mockingbirds/article/details/47701635,详细的实现步骤

2015-08-16

nexus-latest-bundle

该资源包含了一个nexus-latest-bundle,喜欢的下载

2015-08-09

maven聚合和继承

该资源包含了一个maven聚合和继承的简单demo,可以参考博客http://blog.csdn.net/mockingbirds/article/details/47374127

2015-08-09

maven依赖关系

该资源包含了一个maven的依赖关系的源代吗,包含了给予maven构建的hibernate添加数据的源码,喜欢的下载

2015-08-08

m2eclipse离线包

该资源包含了一个m2eclipse的离线包。

2015-08-06

手动创建maven工程

该资源包含了一个手动创建的maven工程,简单易懂,喜欢的下载。可以参考博客http://blog.csdn.net/mockingbirds/article/details/47302815

2015-08-05

超好用的gif屏幕录制软件

该资源包含了一个很好用的gif屏幕录制工具,真的很好用。

2015-07-25

android5.0 Ativity Transition

该资源包含了一个使用5.0新增特性来过度activity之间的切换,喜欢的下载。

2015-07-25

android5.0新特性学习

该资源包含了一个android5.0新特性学习的代码,简单易懂,可以参考博客:http://blog.csdn.net/mockingbirds/article/details/47053483

2015-07-25

android pn下载

该资源包含了一个Androidpn实现的推送的资源,喜欢的下载。

2015-07-18

使用uploadify上传文件

该资源包含了一个使用uploadify组件上传文件的简单demo,喜欢的下载。

2015-07-11

使用jQuery ajax提交表单代码

该资源包含了一个使用jquery提交表单的代码,简单易懂,喜欢的下载。

2015-07-11

jnidemo调用

该资源包含了使用最新的Android studio实现jni ndk编程,使用CMakeLists.txt配置生成多个so文件,java调用本地方法,本地方法,调用java中的方法,以及jnionload的简单实例,喜欢的下载,具体可以查看 https://www.jianshu.com/p/6e7ebf1cdcf4

2018-07-22

使用scrapy爬取伯乐在线文章并保存到mysql

该资源使用scrapy爬取伯乐在线文章并保存到mysql

2017-05-28

job伯乐文章属性获取下载图片

该资源包含一个使用scrapy下载文章图片,并使用item设计封装需要获取的属性,简单易懂

2017-05-21

使用scrapy爬去伯乐在线文章

该资源包含了一个使用scrapy爬去伯乐在线的文章实例代码

2017-05-21

java读取和写入xml文件

该资源包含了java四种方式读取和写入xml文件的代码

2017-02-27

爬虫获取并下载豆瓣图片

该资源包含了一个使用java实现的爬去豆瓣线上活动的图片,并且批量下载到本地,喜欢的可以下载,具体可以参考博客http://blog.csdn.net/mockingbirds/article/details/54565224

2017-01-15

自定义实现流式布局

该资源包含了一个自定义ViewGroup实现的流式布局,需要的可以下载

2017-01-14

Android平台so注入进程

该资源包含了一个android平台使用so注入进程的demo,运行在4.4模拟器。

2017-01-03

Android hook AMS PMS

该资源包含了一个android平台使用代理实现的AMS和PMS的hook,大大降低了代码耦合度,具体可以参考博客:http://blog.csdn.net/column/details/13512.html

2017-01-02

android全局异常捕获

该资源包含了一个android全局异常捕获的代码,当应用发生异常的时候,会将该异常存放到sdcard上。

2016-10-03

二进制权限控制

该资源包含了一个使用java的二进制运算来实现的一个权限控制的简单demo,喜欢的可以下载具体可以参考博客:http://blog.csdn.net/mockingbirds/article/details/50821998

2016-03-07

android防美拍点赞效果

该资源包含了一个android平台实现的防美拍点赞效果,喜欢的下载,可以参考博客:http://blog.csdn.net/mockingbirds/article/details/50663327

2016-02-14

material design demo

该资源包含了一个使用support下新增的布局的简单demo,可以参考博客:http://blog.csdn.net/mockingbirds/article/details/50649717

2016-02-11

android悬浮窗口显示内存使用

该资源包含了一个使用windowmanager实现android中的悬浮窗口,显示内存的使用情况,以及当前网络的连接情况,可以参考博客http://blog.csdn.net/mockingbirds/article/details/50644940,喜欢的下载。

2016-02-08

通过accessibility实现静默安装

该资源包含了一个使用accessibility实现的android静默安装,喜欢的下载。

2016-02-07

andrdoid hook简单入门

该资源包含了一个使用cydia来在android上进行简单的hook技巧学习源码,喜欢的下载。

2016-02-06

reactnative使用原生模块

该资源包含了一个在reactnative中使用原生模块代码,具体可以参考博客:http://blog.csdn.net/mockingbirds/article/details/50550689

2016-01-31

reactnative初始工程

该资源包含了一个reactnative初始工程,喜欢的下载。

2016-01-03

android实现水波进度

该资源包含了一个android实现的水波进度,具体可以参考http://blog.csdn.net/mockingbirds/article/details/49804703,喜欢的下载。

2015-11-13

android自定义加载动画

该资源包含了一个android自定义加载动画,可以参考博客http://blog.csdn.net/mockingbirds/article/details/49642839,喜欢的下载。

2015-11-04

空空如也

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

TA关注的人

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