本文转载自:https://blog.csdn.net/tianshiyalin/article/details/17136723 一.前言 本人刚学习安卓驱动开发,水平不能说菜,是根本没有水平,在这里把学习过程贴出来,跟大家一起学习交流,还望大家多多指正,转载的请标明出处.http://blog.csdn.net/angle_birds/article/details/16801533 二.android驱动介绍 安卓总体架构是在 Linux内核基础上,增加硬件抽象层(HAL),运行库,jav…
题外话 最近总有一个感觉:在不断学习中,越发的感觉自己的无知,自己是不是要从"愚昧之巅"掉到"绝望之谷"了,哈哈哈 邓宁-克鲁格效应 一.前言 前面的文章中已经讲解了如何去创建一个Surface,也讲了一些操作Surface的知识,接下来就是如何利用这个Surface进行绘图呢? 在此开始讲解buffer queue的工作流程,看看图形数据是怎样流转的? 图形缓冲区的申请和消费流程是怎样的?有哪些核心类?等等问题在接下来的文章中陆续展开. 这篇文章中,先介绍一些基本…
题外话 Covid-19疫情的强烈反弹,小区里检测出了无症状感染者.小区封闭管理,我也不得不居家办公了.既然这么大把的时间可以光明正大的宅家里,自然要好好利用,八个字 == 努力工作,好好学习 一.前言 这篇文章中,将详细讲解 生产者 -- 图形缓冲队列 -- 消费者 这个模型的的具体工作流程.我们还是从我们的demo运行流程着手. 可以再回头看看 Android 12(S) 图形显示系统 - 示例应用(二) 在demo示例中,我们获取buffer --> 填充数据 --> 送出显示的代码如下…
题外话 疫情隔离在家,周末还在努力学习的我  ..... 一.前言 上一篇文章中,有基本讲清楚Producer一端的处理逻辑,最后也留下了一个疑问: Consumer是什么时候来消费数据的?他是自己主动来取的?还是收到了某种通知后再来处理的? 这篇文章,就带着这些疑问来开始分析源码.开头还是把这种流程图贴一下 二.Listener监听器的回调过程解析 生产者写完数据,把buffer还给buffer queue后,又是怎样通知消费者来使用的呢? 下面这些解析步骤,就是回答上面的问题 1. 生产者把…
题外话 我竟然已经写了这个系列的十一篇文章了,虽然内容很浅显,虽然内容很枯燥,虽然内容也许没营养,但我为自己的坚持点赞! 一.前言 前面的两篇文章,分别讲解了Producer的处理逻辑和queue buffer后通过FrameAvailableListener通知到Consumer的基本过程. 流程已经走到了BufferQueueConsumer::acquireBuffer中,所以这篇文章聚焦Consumer的一些处理逻辑. 还是把流程图贴上来 从流程图中看,这篇文章就是讲解右半部分的内容.…
必读: Android 12(S) 图形显示系统 - 开篇 一.前言 在前面的文章中,已经出现过 GraphicBuffer 的身影,GraphicBuffer 是Android图形显示系统中的一个重要概念和组件,顾名思义,它就是用来存储和传递需要绘制的图像数据的.GraphicBuffer 可以在应用程序和 BufferQueue 或 SurfaceFlinger 间传递. 本文及接下来的几篇文章,将聚焦分析 GraphicBuffer 创建的流程,相关组件.服务的基本架构和基本实现原理. 二…
必读: Android 12(S) 图像显示系统 - 开篇 一.前言 前面的文章中讲解Android BufferQueue的机制时,有遇到过Fence,但没有具体讲解.这篇文章,就针对Fence这种同步机制,做一些介绍. Fence在Android图像显示系统中用于GraphicBuffer的同步.我们不禁有疑问:那它和其它的同步机制相比有什么特点呢? Fence主要被用来处理跨硬件的情况,在我们关注的Android图像显示系统中即处理CPU,GPU和HWC之间的数据同步. 二.Fence的基…
在Android 2.3(Gingerbread) 系统的时候,我写过一篇关于“Android 震动马达系统“的文章,当时的Linux内核还是2.6版本的.写那篇文章的目的,是想彻底的了解从硬件到驱动,再到应用的运作流程.完成了之后,文章一直仍在草稿箱里面没发表:今天看到,决定整理一下,重新发表.目的是想和大家分享自己对Android系统的一点认识:以马达为代表,来考究“Android是如何一步步工作的.它从硬件设计,到Linux驱动,再到HAL,再到JNI,再到Framework,最后到被应用…
1. 之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; import android.content.res.AssetManager; import android.graphics.Typeface; import android.os.Bundle; import android.os.Vibrator; import android.view.Vi…
如何实现android手机来电拦截系统页面弹出自定义页面特效, 首先:    我们需要注册一个监听来电的广播PhoneStateReceiver 类:其次:    在onReceive里面我们获取android 电话状态的监听(来电和去电)实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener.TelephonseManger提供了取得手机基本服务的信息的一种方式.因此应用程序可以使用TelephonyManager来探测手机基本服务的情况.…
    Android GWES之Android消息系统                                                                                                     Looper,Handler,View 我们要理解Android的消息系统,Looper,Handle,View等概念还是需要从消息系统的基本原理及其构造这个源头开始.从这个源头,我们才能很清楚的看到Android设计者设计消息系统之意图及其…
目录: Android : 跟我学Binder --- (1) 什么是Binder IPC?为何要使用Binder机制? Android : 跟我学Binder --- (2) AIDL分析及手动实现 Android : 跟我学Binder --- (3) C程序示例 Android : 跟我学Binder --- (4) 驱动情景分析 Android : 跟我学Binder --- (5) C++实现 Android : 跟我学Binder --- (6)  JAVA实现 一.数据结构 首先基…
Android 4.2 BT系统之蓝牙关闭过程全跟踪 分类: android 2013-08-03 00:34 2252人阅读 评论(10) 收藏 举报 代码位置:       frameworks/base/services/java/com/android/server/BluetoothManagerService.java       这部分代码,生成libandroid_runtime.so 完成功能,中转BluetoothAdapter和Bluetooth.apk,所有来自其他应用的…
想成为一位合格的Android程序员或者一位Android高级工程师是十分有必要知道Android的框架层的工作原理,要知道其工作原理那么就需要阅读Android的源代码. 想要阅读Android的源代码最爽的方式的肯定是自己亲手下载编译.为什么要阅读Android源代码? 第一,面试加分项.第二,知其原理写出的代码差不到那里.第三,学习深度.正所谓,知其然知其所以然.下面记录我基于7.1.1系统源码下载到刷机的过程. 基本概念 AOSP : 就是Android Open Source Proj…
又一次制作android和lubuntu双系统固件 因为本人改动了lubuntu的驱动和设备树信息,为了方便烧写系统,所以又一次制作了双系统的固件. Firefly wiki教程里有android固件的制作方法.双系统的制作方法是一样的.能够參考http://wiki.t-firefly.com/index.php/Firefly-RK3288/Customize_android_firmware. 步骤: 1.      下载firefly官网的双系统固件. 2.      解压固件包(參考w…
<span style="font-size:18px;">MainActivity.java</span> package com.Utils.vibrate; import android.app.Activity; import android.app.ActionBar; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; i…
1. 几个重要结构体的引入给test_server添加一个goodbye服务, 由此引入以下概念: 进程间通信其实质也是需要三要素:源.目的.数据,源是自己,目的用handle表示:通讯的过程是源向实现进程的“服务”发数据,handle是对“服务”的引用,在不同的进程里面handle不一样,即使多个进程对同一个进程的“服务”发数据,这些多个进程里面的handle可以也不一样 总结:handle是进程A对进程B提供的服务S的引用,进程A调用binder_call把handle传递给驱动,驱动根据h…
1.前言 LK是Little Kernel的缩写,在Qualcomm平台的Android系统中普遍采用LK作为bootloader,它是一个开源项目,LK是整个系统的引导部分,所以不是独立存在的,但是目前LK只支持arm和x86架构,LK显著的特点是实现了一个简单的线程机制(thread),并和Qualcomm的处理器深度定制和使用. LK的代码架构如下所示: app ----> 应用相关代码 arch ----> 处理器架构体系 dev ----> 和设备相关代码 include --…
必读: Android 12(S) 图像显示系统 - 开篇 前言 Android源码中有包含drm_hwcomposer:/external/drm_hwcomposer/ drm_hwcomposer 这个过程下的代码架构变化还是很频繁的,我这里分析直接去 drm_hwcomposer 的官方地址抓取最新的code来做分析了 解析 这个工程编译后会产生 shared library :/vendor/lib/hw/hwcomposer.drm.so drm_hwcomposer作为一个HAL…
Android名片扫描识别系统SDK 一.Android名片扫描识别系统应用背景 这些年,随着移动互联的发展,APP应用成爆发式的增长,在很多APP中都涉及到对名片信息的录入,如移动CRM.移动端OA,移动访客系统等:如果手动输入名片信息,速度慢,易出错,用户体验非常差.为了提高在移动终端上输入名片信息的速度和准确性,文通推出OCR名片录入技术SDK,以满足各个行业对名片信息自动录入的需求,只需在APP中集成Android名片扫描识别系统SDK,用户便可通过手机拍照,自动识别录入名片信息. 二.…
Google Play作为众所周知的在线应用市场,因为审查制度的松散,经常会有一些恶意软件伪装成其他应用混入其中.此前阿里聚安全小编就报道了2例关于恶意软件伪装在Google Play上的事件:<Google Play商店的“系统更新”隐藏间谍软件,数百万用户中招>和<打开手机电筒就泄露了银行卡密码?>.一旦用户从应用市场下载APP到手机上后,谷歌便无法监视和检测应用程序的恶意行为. 近日,谷歌为Android用户带来了一个好消息.在Google I/O2017大会上,谷歌发布了一…
https://github.com/bboyfeiyu/android-tech-frontier/tree/master/others/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%9C%AC%E5%9C%B0%E6%90%AD%E5%BB%BA%E4%B8%80%E4%B8%AAAndroid%E5%BA%94%E7%94%A8crashing%E8%B7%9F%E8%B8%AA%E7%B3%BB%E7%BB%9F%EF%BC%8DACRA 如何在本地搭建一个Android…
本篇文章对Android中监听系统网络连接打开或者关闭的实现用实例进行了介绍.需要的朋友参考下 很简单,所以直接看代码 复制代码 代码如下: package xxx; import android.content.BroadcastReceiver;  import android.content.Context;  import android.content.Intent;  import android.net.ConnectivityManager;  import android.ne…
ios系统为什么没有后台推送? iOS 为了真正地为用户体验负责,不允许应用在后台活动.有了这个限制,但是对于终端设备,应用又是有必要“通知”到达用户的,随时与用户主动沟通起来的(典型的如聊天应用). 这就是 APNs 的逻辑所在:iOS 自己做个长驻后台保持连接.所有应用,有必要(申请)并且被允许(用户可以改设置)的话,可以通过 APNs 中转到达用户.这样就完善了! 有可能很多人没有真正地体会到 iOS 不允许后台应用的好处.我是 Android 开发人员,Android 手机上一般只保留几…
Thinkpad 笔记本 装win7 64 位操作系统热键驱动装不上问题解决! 一般牛人的解释如下: 问题终于搞定.是因为需要手工建%PROGRAMFILES%\Lenovo\Hotkey目录.这个写安装程序的lenovo程序员估计当天喝多了,安装程序一开始竟然没有创建这个目录就开始拷贝驱动相关文件.发现这个问题是在lenovo发布的hotkeypatch脚本里看出来的,里面有copy /Y "%~dp0hkvolkey.dll" "%PROGRAMFILES%\Lenovo…
转 android 4.0.4系统下实现apk的静默安装和启动 分类: Android 2013-02-14 14:13 1762人阅读 评论(10) 收藏 举报 最近在android 4.0.4系统下实现apk的静默安装和启动的功能,这里和大家分享一下,希望能有所帮助. 源码如下: import java.io.DataOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStre…
Android上传图片之调用系统拍照和从相冊选择图片 本篇文章已授权微信公众号 guolin_blog (郭霖)独家公布 前言: 万丈高楼平底起,万事起于微末.不知不觉距离上篇博文已近四个月,2015年12月17日下午发了第一篇博文.如今是2016年4月6日.时间间隔长的过分啊,我自己都看不下去了. 原因呢?当然是自己的原因.事实上是有非常多时间来些博客的,可是这些时间都花在DOTA上了(还是太年轻啊).请原谅我的过错--. 一.概述: 如今差点儿应用都会用到上传图片的功能,而要上传图片,首先得…
Linux FC/iSCSI存储设备管理系列(一):Linux系统设备驱动入门 转载请在文首保留原文出处:EMC中文支持论坛 - https://community.emc.com/go/chinese 介绍 Linux FC/iSCSI存储设备管理系列,主要介绍Linux系统管理FC/iSCSI磁盘设备的相关概念与技术细节,内容包括: Linux磁盘设备驱动介绍 磁盘设备管理(一):FC磁盘管理 磁盘设备管理(二):iSCSI磁盘管理 HBA管理与配置 文件系统结构 磁盘在线调整 SCSI驱动…
                                                                         Ubuntu系统---nvidia驱动下载之问题 百度“英伟达驱动下载”,NVIDIA 驱动程序下载,https://www.nvidia.cn/Download/index.aspx?lang=cn,想知道GRD .SD的区别,参考了几篇资料. 英伟达驱动,要与电脑的GPU型号相对应.可以单独安装,也可以不单独安装,在安装CUDA的时候,一起安装.…
Ubuntu系统---“NVIDIA 驱动+CUDA+cuDNN ”之后 OpenCV安装 目录: 一.OpenCV安装包下载 二.cmake安装 三.OpenCV安装 正文 一.OpenCV安装包下载 官网上下载https://opencv.org/releases/page/2/ 想要的opencv版本.解压到想安装的文件夹里,这里文件夹名字:opencv3.4.2 二.cmake安装 cmake用来安装OpenCV时的编译.cmake安装的安装方法有很多,之前用是下载cmake安装包,一步…