自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android Sensor (g-sensor) 系统源码分析

探究一下Android的Sensor架构。主要目的是通过Sensor这个架构去初步了解Android系统是怎么的一个编程思想,整体架构和功能是怎么安排的。各个模块间是怎么进行通信和交互,最重要的了解一个整个数据流是怎么传送的。更要提高自己去大型源码的处理能力,这里以Gsensor为例源码平台MTK Android 4.4.0源码。日期:2015年3月22日一. 在App的使用方法...

2015-11-10 19:35:43 5311 2

原创 Android Camera 系统架构源码分析(1)---->Camera的初始化

系统:MTK Android4.4日期:2015年10月10日stamp&data setParameters Utils::Property::tryGet一. 前述之前对MTK的Camera的源码流程有过初步的了解,现在对以前了解的东西做一些梳理总结,但也仅是对源码流程一个贯穿,并不会对其进行深入分析,方便日后工作需求做一个铺垫。此文分析

2015-10-26 15:43:03 14362 3

原创 gin源码分析(2)gin启动http服务

NEXT()调用c.handlers[c.index](c)执行第一个中间件,在调用第一个中间件函数M1执行中途调用了Next(),进入Next(),函数下标c.index++,指向下一个中间件函数,等待下一个中间件函数M2,以及M2后面的处理函数。直到所有的函数都调用完,回到M1,执行后面的逻辑,打印M1-B。停止就很简单,把该次的调用index数值设为abortIndex,abortIndex为handlers的最大数量combineHandlers函数里做了限制handler添加的最大数量。

2024-04-02 11:24:45 857

原创 gin源码分析(1)--初始化中间件,路由组与路由树

Engine继承了RouterGroup,gin.Default()初始化了Engine与第一个RouterGroup,并初始化了两个默认的中间件,Logger(), Recovery(),他们的作用与配置上面代码中有介绍。只是利用上一个RouterGroup的Group函数创建一个新的RouterGroup,并把之前RouterGroup与Engine注册的中间件全部复制过来。gin.Use的核心功能为把传入进来的中间件合并到RouterGroup的Handlers数组中,代码如下。

2024-04-02 11:21:58 704

原创 Android ALSA音频系统架构分析(1)----从Loopback了解Audio

Android音频系统是一套基于Linux ALSA上二次封装开发的一套音频系统,中间进行了很多的功能封装,但最终会用到Linux ALSA。所以在Hal层的类名都会包含ALSA。对于MTK的Android audio,MTK也有一定的介绍,先来大体了解一下:

2017-06-19 14:13:57 29442 3

原创 SELinux/SEAndroid 实例简述(三)实例看SELinux/SEAndroid

/************************************ Author:刘江明 * Environment:MTK Android 6.0* Date:2016年11月06日***********************************/基础知识都已经学习完了,但是还不知道怎么样,下面从不同的场景,实现了几个例子,可以参考学习一下对于/ex

2017-02-28 14:46:59 9777 3

原创 SELinux/SEAndroid 实例简述(二) TE语言规则

/************************************ Author:刘江明 * Environment:MTK Android 6.0* Date:2016年11月05日***********************************/一. 基本语法很多te文件集中在\external\sepolicy文件夹下,MTK也有很多自定义的在\

2017-02-08 18:03:50 6195 2

原创 SELinux/SEAndroid 实例简述(一) 基础概念

SELinux/SEAndroid 实例简述(一) 基础概念

2017-02-08 17:57:15 3041

原创 从Jni到Java增加一个系统服务SystemServer,并通过getSystemService调用

这里假设我们需要增加的服务名字为AudioTest。Java层我们先定义这个服务的接口,文件名为IAudioTest.aidl。里面包含这个服务所有的功能函数IAudioTest.aidl: frameworks\base\core\java\android\service\audiotest\IAudioTest.aidlpackage android.servi

2015-11-13 16:20:56 3052 1

原创 Android Canvas API总结和使用方法

Android Canvas API总结和使用方法

2015-11-11 17:31:54 4463

原创 Android Paint API总结和使用方法

Android Paint API总结和使用方法

2015-11-11 14:44:01 4644

原创 Android Bitmap Api总结和使用方法

在学习Bitmap之前先学习一下Bitmap是怎么创建在,Bitmap的构造方法都是私有的,所以无法直接调用Bitmap的构造方法。我们只能通过BitmapFactory类和Bitmap.createBitmap来创建Bitmap。所以,我们要先了解BitmapFactoryBitmapFactory API总结

2015-11-11 14:29:25 3589

原创 Android 图片处理工具类汇总

很有用的Android图片处理工具,实现各种图片处理效果

2015-11-11 14:27:44 2649

原创 Android ContentProvider和ContentObserver 监控数据库变化 简单使用说明

在网上很难找到ContentObserver的使用说明,大多都是监控系统的数据库的变化,或者很多文章都是ContentProvider和ContentObserver一起说明,导致内容很多,很乱。那问题来了,我们如何新建自己的ContentObserver来观察我们自己的数据呢,我们又如何用ContentObserver来观察数据库的每一行呢。    所有这里我们先单独说明一ContentOb

2015-11-11 14:16:16 3849 1

原创 Android用loadClass获取系统隐藏类和隐藏服务的方法

我们需要获取的是Serial这个系统服务,这是一个系统服务,是不对外开放的。此服务的源码路径在Frameworks/base/services/java/com/android/server/SerialService.java,继承了ISerialManager。此服务的名称是serialServiceManager是系统内部对所有服务的管理类这个类并不是开放的,我们需要通过

2015-11-11 14:09:42 1706

原创 android g-sensor 驱动源码分析

环境:MTK Android4.4硬件:MT8127 MMA8653日期:2015年6月19日在MTK的Gsensor构架中有一个auto detect的功能,只要作用是可以添加多个GSensor驱动,然后会自动找到与硬件匹配的Gsensor驱动,这个功能是用hwmsen驱动模块来完成的。先来看看驱动里是如何使用auto detect的 1 2 3 ...

2015-11-10 19:41:05 4260 1

转载 编写Android.mk中的LOCAL_SRC_FILES的终极技巧

转载:http://blog.csdn.net/xiangzilv1987/article/details/16805701问题的引入在使用NDK编译C/C++项目的过程中,免不了要编写Android.mk文件,其中最重要的就是LOCAL_SRC_FILES源文件列表.考虑有如下源文件分布的情况:cpp文件全部位于android项目下的jni文件夹下

2015-11-10 18:34:35 1818

原创 Android.mk多级目录源码的编写

Android.mk多级目录源码的编写

2015-11-10 18:33:27 2474

原创 Android Jni 多线程 蓝牙串口收发 实例 二

整个串口模块功能已经完成了。但需求又来了现在外接一个MCU模块与MTK也是通串口相连,如果我们要把代码变得更容易复用,新模块在更少的代码量上接入,那该怎么做呢。在蓝牙功能模块里我们通过测试后发现一个问题,如果中途有不正常关闭,再次启动就启不来了。这个问题是因为JNI的线程没有正常退出,程序退出后还在后台运行,影响一下次程序启动。        我们先回顾一下我们之前的程序架

2015-11-10 18:05:46 1605

原创 Android Jni 多线程 蓝牙串口收发 实例 一

在工作有一个这样的需求:在一个Android App上,通过串口对一个蓝牙进行操作,其中包括发送消息,接收消息,并进行处理。    =========================项目心得和遇上的问题总结=========================    要实现这些功能,有很多种:多线程可以放在Jni层,这样接收和消息的整理逻辑都在Jni层,这样程序就会变得复杂一些,因为你

2015-11-10 18:02:13 3772

原创 Jni 两种方法打开底层文件返回FD给Java

打开文件在底层open一个文件时只是返回一个fd号,而Java打开一个文件用的是FileDescriptor来打开一个文件,如何在两者之间建立一个联系呢?有两种方法:方法一:在jni层有提供一个API,jniCreateFileDescriptor(env, fd); 生成的是一个临时变量,最终还是要通过NewObject创建一个对象才能return回去。在Android.mk里还

2015-11-10 17:57:42 6272 1

原创 Jni 常用工具函数

Jni编程会用到的工具函数,做积累1. 打开文件路径,返回文件描述符给Java1234567891011121314151617181920212223242526

2015-11-10 17:55:04 1229

原创 Android Jni 基础笔记

记录一下Jni的实际开发中会遇到的一些问题。首先说说Jni的两种加载方式,分别是动态注册和静态注册。静态注册:静态注册就是根据Java的函数名和Jni的函数名,按照一定的关系进行联系。Jni层的命名方式必须遵循一定的规则。动态注册:在Jni层,把一个函数映射表注册给Java虚拟机。这样Jvm就可以通过函数列表来找到对应的函数。就可以不必通过函数名来查找需要调用的函数了。

2015-11-10 17:50:59 968

原创 Android Camera 系统架构源码分析(5)---->Camera数据Buf的传递方式及相关类

写到第五篇,我们已经把大致的流程已经贯穿完了,还有很多东西没有讲,日后慢慢再说。不过现在有一个重要的问题,就是整个流利里各种buf,provider,bufmgr,queue类等之间的关系,说白了就是buf类和buf辅助类之前的关系。理清这些类的关系和这些类的作用,再从Buf流理解一下整个框架,CamAdapter和CamClient是怎么通过Buf联系,会对日后的分析有一个很大的帮助。也相当于对

2015-10-26 16:41:53 3324

原创 Android Camera 系统架构源码分析(4)---->Camera的数据来源及Camera的管理

Camera的数据来源及Camera的管理 我们接着第3篇,再返回Cam1DeviceBase::startPreview()的(4) mpCamAdapter->startPreview()。在讲(4)前我们先来看看(1)onStartPreview()。onStartPreview();的实现在DefaultCam1Device.cppDefaultCam1Devi

2015-10-26 16:27:45 6885

原创 Android Camera 系统架构源码分析(3)---->Camera的显示流程

Preview的显示流程这次我们要从最开始startPreview的时候开始,在starPreview之间就setPreviewWindow()。//CameraClient.cppstatus_t CameraClient::startPreviewMode() { mHardware->previewEnabled(); mHardware->setPrev

2015-10-26 16:23:48 7562 3

原创 Android Camera 系统架构源码分析(2)---->Camera的startPreview和setPreviewCallback

Camera startPreview流程上接第一篇,这个过程的主要任务是,如何读取数据的,读取的数据是什么格式,最好能知道是如何去预览的上层APP调用的是Camera.java的startPreview();,下面列出startPreview的调用流程//Camera.javapublic native final void startPreview();

2015-10-26 16:22:24 6199 1

转载 linux 驱动开发 Invalid module format 和 File exists 错误解决方法

原文 http://blog.csdn.net/pottichu/article/details/1892245我想,很多刚开始学习linux 驱动程序的朋友都和我一样,遇到过类似的问题。1. 编译错误(其实这个问题和 Makefile有很大关系)2. Invalid module format 错误3. insmod: error inserting './hello.ko'

2015-04-12 15:00:15 1173

转载 从 2.4 到 2.6:Linux 内核可装载模块机制的改变对设备驱动的影响

转贴: 原地址:http://www.ibm.com/developerworks/cn/linux/l-module26/从 2.4 到 2.6,Linux 内核在可装载模块机制、设备模型、一些核心 API 等方面发生较大改变,设备驱动开发人员面临着将驱动从 2.4 移植到 2.6 内核,或是使驱动同时支持2.4 与 2.6 内核的任务。站在设备驱动开发人员的角度,驱动由一个或几个外部可加载

2015-04-12 14:58:22 452

转载 正确解决 Invalid module format

原言  http://blog.csdn.net/dreamtdp/article/details/8036419实现 功能:在PC的LINUX实现驱动测试,不用在2440上测试解决insmod: error inserting 'hello.ko': -1 Invalid module format第一次写Linux驱动,环境搭建了好久,第一次可能是由于GCC的版本问题,编译

2015-04-12 14:50:16 21568

原创 MFC笔记

一.窗口类型的概述窗口类型主要有二种即:文档类型(Document)和对话框类型(Dialog)表单类型(Form)是介于这2种类型之间。文档类型的窗口的编程相对对话框来说要复杂得多,是我们学习的主要对象。a)        文档类型(Document):文档类型的应用程序的界面,大部分区域用于文字或画图等读写操作,常见的有Word、Excel、写字板等。文档类型的窗口又分单文档和多文

2014-03-18 09:51:47 803

原创 C++笔记

函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本Float temp;Float fn1(){       Reurnntemp;}Float & fn2(){       Reurntemp;   //注意返回引用的用法}Int main(void){       Floaa = fn1(5.0);   //1       Float

2014-03-15 11:43:14 927

MT2503模块硬件用户指导手册 Datasheet_V1.0

MT2503模块硬件用户指导手册 Datasheet_V1.0

2016-05-01

A720 CHDK升级包

A720的升级包,让你的A720更为专业

2010-02-06

空空如也

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

TA关注的人

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