- 博客(152)
- 资源 (22)
- 问答 (1)
- 收藏
- 关注
原创 Android Input子系统 -- EventHub
前言前面其实也有提到EventHub的构造函数,里面就是创建epoll实例,然后把一些事件触发的文件描述符加入到epoll里面统一管理。监控/dev/input/目录的iNotify文件mINotifyFd接收Kernel驱动事件(/dev/input/eventX)的文件描述符用来唤醒InputReader线程的管道读文件EventHub是服务于...
2019-12-18 02:49:07
1083
原创 Android Input子系统 -- InputManagerService启动
InputManagerService是Android framework中核心service之一,Android framework层涉及的代码也是非常多,123456789101112131415161718frameworks/native/services/inputflinger/ - InputDispatche...
2019-12-17 13:25:26
799
原创 Android Input子系统 -- Linux
前言上一节有展示Android Input子系统的架构图,这里我们关心Linux kernel层可以看到kernel层分为三层:输入子系统设备驱动:处理与硬件相关的信息,调用input API注册输入设备,并把数据往上报输入子系统核心层:为事件处理层和设备驱动层提供API接口调用输入子系统事件处理:通过核心层的API获取输入事件上报的数据,定义inpu...
2019-12-17 03:34:59
495
原创 Android Input子系统开篇
前言Input子系统在整个Android 系统中主要管理一些输入设备:按键、触摸屏鼠标等,他是建立在Linux的input子系统上的一套应用层软件架构,主要是处理用户的一些输入行为,反馈给前台的应用或者系统窗口。Linux的input子系统的范围要更广,包含sensor等设备。Input子系统系统框架从框架上看出来,主要分为三部分Linux 输入设备驱...
2019-12-17 00:26:58
524
原创 Android ION内存管理(2) -- 共享内存使用
内存共享和大块内存的使用,在实际场景下面的需求是很多的,这里,举三个简单的应用场景:用户态和内核态共享内存用户态不同进程内存共享内核态中使用ION分配buffer用户态和内核态共享内存在Android的BSP代码中有一个ion的library封装了一些对ion驱动设备操作的接口system/core/libion/123456789...
2019-12-16 13:42:30
5460
原创 Android ION 内存管理
ION的设计初衷Android为了更好的针对移动设备内存的管理,设计出了ION内存管理机制,主要是为了解决以下几个问题:预留大块连续内存,比如camera,display,GPU等模块避免内存随便花用户控件和硬件之间实现”零拷贝”(zero-copy)的内存共享做Android系统的,特别是跟Display,camera模块相关的ION的官方介绍和历史...
2019-12-16 03:14:25
3165
原创 实战Linux设备驱动--万事开头难--HelloWorld
已经被玩坏了的Hello World在程序员的世界里,一般开始学习某种语言,或者某一套架构都会先写一个HelloWorld作为示例,OK,我们也不例外。 - helloworld.c代码解析 - Makefile - 编译运行 - 总结helloworld.c 1 #include <linux/init.h> 2 #include <linux/module.h> 3 #incl
2015-09-11 14:16:54
4681
原创 STM32实战开发100弹【免费送开发板】-张杰-专题视频课程
购买本系列教程免费赠送我们精心打造的STM32MINI开发板,板载adxl345重力加速度传感器,可以配套实现二轮平衡小车,以及四轴飞行器等试验,千万不要错过。购买之后在评论里把联系地址和姓名电话写好,不方便透露的话 可以联系我QQ417248058...
2015-07-27 13:29:23
496
原创 【蓝牙低功耗BLE】按键的使用
好吧,隔了好久才来继续写我的博客,hw加班太多,郁闷,废话不多说,下面来讲讲今天的主题,CC2540上面按键的使用,如果您已经对单片机的按键使用很熟悉,那请略过本章节。1、硬件电路图本节实验很简单,按下S1,让LED1亮起来,再按下S1,让LED1灭掉,是不是很简单啊。首先要做的是识别按键被按下,可以看到按键弹起来的时候P0.0经过一个R10电阻接到3.3V
2014-10-23 20:55:26
6171
原创 【蓝牙低功耗BLE】控制GPIO来点亮LED
这节讲一下最简单的,也是最基础的东西,CC2540的IO操作,把PORT口当做GPIO来用,废话不多说,往下看。1、硬件电路硬件电路时最简单的,用一根GPIO去控制LED灯,由于GPIO作为output,所以也不用管GPIO的模式。还是挺简单的,控制左边GPIO的高低来开关LED灯。2、相关寄存器P0SEL P0[7:0]功能设置寄存
2014-10-04 23:33:34
8378
原创 【蓝牙低功耗BLE】引言
作为写博客的目录吧,先把主题定下来,后面写完了加上链接!一、CC254X芯片基础使用1、【蓝牙低功耗BLE】控制GPIO来点亮LED2、【蓝牙低功耗BLE】按键的使用3、【蓝牙低功耗BLE】GPIO外部中断4、【蓝牙低功耗BLE】定时器T1之查询方式5、【蓝牙低功耗BLE】定时器T3之中断方式6、【蓝牙低功耗BLE】串口通信7、【蓝牙低功耗BLE】AD控制8、【
2014-10-04 21:54:11
5268
原创 原来C语言也可以面向对象(一)
C语言是一门博大精深的语言,我相信没有研读过Linux中代码的人,很少有人体会到吧,废话不多说,简单的写了一个测试demotest.htypedef void (* func1_callback)(void);typedef void (* func2_callback)(int i);typedef struct { int size; func1_callback f
2013-04-13 22:33:03
5623
3
转载 android中的数据库操作
原文地址:http://blog.youkuaiyun.com/nieweilin/article/details/5919013android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作。 一、android内的数据库的基础知识介绍 1.用了什么数据库
2013-01-08 22:26:55
4542
转载 Android中MediaStore使用示例 .
package cn.com;import java.io.IOException;import android.app.Activity;import android.content.ContentResolver;import android.database.Cursor;import android.media.ExifInterface;import androi
2013-01-03 16:19:34
8453
原创 java中得到不同“type”的类实例
基类:import java.util.ArrayList;import java.util.HashMap;public class Person { public String name; public void say(String something) { } public interface Factory { public Person create();
2012-12-24 21:31:41
4341
转载 Desktip
package com.DeskTip;import android.app.Activity;import android.graphics.PixelFormat;import android.os.Bundle;import android.view.Gravity;import android.view.MotionEvent;import android.view.View
2012-12-12 17:13:00
4396
原创 重力小球
package com.android.mypro;import android.R.integer;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.hardw
2012-12-12 17:09:11
4803
原创 android 跳转浏览器测试代码
package com.example.android_browser;import java.util.Timer;import java.util.TimerTask;import android.net.Uri;import android.os.Bundle;import android.R.integer;import android.app.Activity;im
2012-12-06 16:28:39
9815
原创 百度地图MyLocation测试代码
package com.example.bydumap;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.graphics.Point;impor
2012-12-06 16:27:31
5837
原创 静态的声明一个指针变量
我是从Android的GPS模拟器代码中看到的,觉得很有意思,就记录下来了首先是结构体的定义:/* this is the state of our connection to the qemu_gpsd daemon */typedef struct { int init; int fd;
2012-10-22 09:17:35
5456
1
原创 分享一段自己写的Linux 驱动调试寄存器的代码
头文件://+++++add by Jay for proc sysfs debug#define DEBUG_ENABLE 1#ifdef DEBUG_ENABLE#include #include #include #include #include #define MAX_CHAR_LENGTH PAGE_SIZEstruct proc_dir_entry *procf
2012-10-10 09:53:02
5506
转载 Ubuntu下用C编写PHP扩展 例子展示 绝对详细
安装php5-dev Php代码 sudo apt-get install php5-dev 下载PHP源码 Php代码 sudo apt-get source php5 创建模块模型 Php代码 cd ./php-5.3.2/ext ./ext
2012-10-09 13:24:04
5034
原创 Android 模拟器的上使用GPS的bug
由于最近研究Android 模拟器的GPS模块的实现,发现了模拟器GPS的bug。启动模拟器,通过DDMS发送经纬度,通过应用可以抓到数据,进入设置,安全与位置,关闭GPS,再打开,再次打开GPS测试软件,再次发送经纬度,怎么也收不到。查看了代码发现Android模拟器中完成GPS模块的功能主要是一个HAL层代码,通过socket接收发送过来的经纬度信息,其中代码是有问题的,GPS模块的工
2012-09-21 15:09:22
5905
1
原创 Android 驱动和系统开发 2. 解析模拟器GPS模块 (原创)
好久没有写技术博客了,恰逢今天还感冒了,这破天气,晚上凉风一吹,就感冒了,要加强锻炼呀。好了,废话不多说,由于工作需要,我要移植一个虚拟的gps模块,于是乎,我就参考了android模拟器的gps模块的实现方法,只需稍微改动就完成了我的工作了,随后我也会附上我做的模块的代码,这里主要还是来解析下模拟器上的gps模块代码吧。相信做过android location方面应用的同志都知道,and
2012-09-20 10:45:26
11637
3
转载 Android资源下载
首先 介绍几本书籍(下载包中)吧。01_Android系统概述02_Android系统的开发综述03_Android的Linux内核与驱动程序04_Android的底层库和程序05_Android的JAVA虚拟机和JAVA环境06_Android的GUI系统07_Android的Audio系统08_Android的Video 输入输出
2012-09-03 17:00:02
23213
3
原创 使用longjmp,带超时限制调用read
//Set max timeout when block reading// by Jay Zhang#include #include #include #include #include static void sig_alarm(int);static jmp_buf env_alarm;#define MAXLINE 1024int main(void){
2012-08-29 13:38:30
4522
转载 SOCKET之 socketpair的使用
socketpair函数概要如下:#include #include int socketpair(int domain, int type, int protocol, int sv[2]);sys/types.h文件需要用来定义一些C宏常量。sys/socket.h文件必须包含进来定义socketpair函数原型。socketpair函数需要四个参数。他们是:套接口的域
2012-08-28 15:22:26
4620
转载 java中使用队列:java.util.Queue
在java5中新增加了java.util.Queue接口,用以支持队列的常见操作。该接口扩展了java.util.Collection接口。Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如
2012-08-27 16:56:52
1249
转载 Android定制属于你自己的导航栏
在实际开发中,我们时常要用到上方的两个按钮,通俗的我们可以叫做导航,等等.还是先看今天需要要实现的一个最的效果:其实实现这样的效果有多种方式,今天我要给大家要介绍的就是如何的去定制自己的控件,也就是自定义控件,自定义控件分为多种,有组合控件,有重写在原来已有的控件上做基础的修改,也有自己重写写一个类继承于View对象,这方面的知识在实际开发当中也会常碰到,当然像我们这种菜鸟在这
2012-08-26 23:58:48
1568
转载 Linux 下C语言简单实现线程池
C语言简单实现线程池0 前言网上关于线程池的例子还是不少,简单明了的倒是比较少,看了网上的资料,打算借鉴网上的一些例子,自己实现以下。线程的概念就不多说,首先说一下多线程的好处:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。那么为什么又需要线程池呢?我们知道应用程序创建一个对象,然后销毁对
2012-08-24 00:22:23
1527
1
转载 判断android设备是否支持多点触控
实现代码如下: [java] view plaincopy/** * 判断设备是否支持多点触控 * @param context * @return */ public static boolean isSupportMultiTouch(Context context) { PackageManage
2012-08-23 00:20:02
2176
转载 Android系统的开机画面显示过程分析
好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺。提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。本文将详细分析这三个开机画面的显示过程,以便可以开启我们对Android系统UI实现的分析之路。
2012-08-22 11:15:45
1551
转载 Android模拟按键——源码环境下开发应用程序
在http://blog.youkuaiyun.com/ericahdu 的帮助下,实现了模拟按键,在此,首先表示感谢:)在源码下写程序可以摆脱SDK的限制,毕竟SDK开放的API有限,比如我们实现模拟按键时,需要用到IWindowManager这个类,但是SDK中是不提供这个类的首先下载编译源码,然后在源码的frameworks/base/cmds下新建一个文件夹作为你新扩展模块的一个目录。比如叫做
2012-08-17 09:31:24
1879
原创 调用fork两次以避免僵死进程
如果一个进程fork一个子进程,但不要它等待子进程终止,也不希望子进程处于僵死状态直到父进程终止,实现这一要求的技巧是调用fork2次。下面是实例代码:#include #include #include int main(void){ pid_t pid; if((pid = fork()) < 0) { pri
2012-08-14 13:51:40
1507
原创 exit的状态
下面是一个实例,来演示不通的exit值#include #include #include void pt_exit(int status){ if(WIFEXITED(status)) printf("nomal termination, exit status = %d\n", WEXITSTATUS(status)); else if(WIFSIGNALED(s
2012-08-14 13:29:53
958
原创 vfork函数实例
一下是vfork函数的实例,跟之前的fork函数类似#include #include #include int glob = 6;int main(void){ int var; pid_t pid; var = 88; printf("before vfork\n"); if((pid
2012-08-14 09:41:47
1160
原创 fork函数实例
下面是一个fork函数的实例#include #include #include int glob = 6;char buf[] = "a write to stdout\n";int main(void){ int var; pid_t pid; var = 88; if(write(
2012-08-14 09:17:16
952
原创 自动变量的潜在问题
下面是一个错误的实例......#define DATAFILE "datafile"FILE *open_data(void){ FILE *fp; char databuf[BUFSIZE]; if((fp = fopen(DATAFILE, "r")) == NULL) retur
2012-08-14 08:32:46
836
2
原创 setjmp 和 longjmp函数的使用
setjmp和longjmp函数可以实现函数之间的跳跃(goto),下面是一个实例#include #include static void f1(int, int, int, int);static void f2(void);static jmp_buf jmpbuffer;static int globval;int main(void){ int
2012-08-13 16:58:55
955
原创 UNIX C 编程 ---- atexit函数的使用
#include static void my_exit1();static void my_exit2();int main(void){ if(atexit(my_exit2) != 0) printf("error: can't register my_exit2\n"); if(atexit(my_exit1) != 0) printf("error: can't
2012-08-13 15:46:20
1213
Android usb和PC进行通信
2012-11-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人