自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhangjie201412的专栏

专注android开发

  • 博客(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 962

原创 Android Input子系统 -- InputManagerService启动

InputManagerService是Android framework中核心service之一,Android framework层涉及的代码也是非常多,123456789101112131415161718frameworks/native/services/inputflinger/ - InputDispatche...

2019-12-17 13:25:26 664

原创 Android Input子系统 -- Linux

前言上一节有展示Android Input子系统的架构图,这里我们关心Linux kernel层可以看到kernel层分为三层:输入子系统设备驱动:处理与硬件相关的信息,调用input API注册输入设备,并把数据往上报输入子系统核心层:为事件处理层和设备驱动层提供API接口调用输入子系统事件处理:通过核心层的API获取输入事件上报的数据,定义inpu...

2019-12-17 03:34:59 397

原创 Android Input子系统开篇

前言Input子系统在整个Android 系统中主要管理一些输入设备:按键、触摸屏鼠标等,他是建立在Linux的input子系统上的一套应用层软件架构,主要是处理用户的一些输入行为,反馈给前台的应用或者系统窗口。Linux的input子系统的范围要更广,包含sensor等设备。Input子系统系统框架从框架上看出来,主要分为三部分Linux 输入设备驱...

2019-12-17 00:26:58 430

原创 Android ION内存管理(2) -- 共享内存使用

内存共享和大块内存的使用,在实际场景下面的需求是很多的,这里,举三个简单的应用场景:用户态和内核态共享内存用户态不同进程内存共享内核态中使用ION分配buffer用户态和内核态共享内存在Android的BSP代码中有一个ion的library封装了一些对ion驱动设备操作的接口system/core/libion/123456789...

2019-12-16 13:42:30 4563

原创 Android ION 内存管理

ION的设计初衷Android为了更好的针对移动设备内存的管理,设计出了ION内存管理机制,主要是为了解决以下几个问题:预留大块连续内存,比如camera,display,GPU等模块避免内存随便花用户控件和硬件之间实现”零拷贝”(zero-copy)的内存共享做Android系统的,特别是跟Display,camera模块相关的ION的官方介绍和历史...

2019-12-16 03:14:25 1847

原创 实战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 4601 1

原创 STM32实战开发100弹【免费送开发板】-张杰-专题视频课程

购买本系列教程免费赠送我们精心打造的STM32MINI开发板,板载adxl345重力加速度传感器,可以配套实现二轮平衡小车,以及四轴飞行器等试验,千万不要错过。购买之后在评论里把联系地址和姓名电话写好,不方便透露的话 可以联系我QQ417248058...

2015-07-27 13:29:23 450

原创 【蓝牙低功耗BLE】按键的使用

好吧,隔了好久才来继续写我的博客,hw加班太多,郁闷,废话不多说,下面来讲讲今天的主题,CC2540上面按键的使用,如果您已经对单片机的按键使用很熟悉,那请略过本章节。1、硬件电路图本节实验很简单,按下S1,让LED1亮起来,再按下S1,让LED1灭掉,是不是很简单啊。首先要做的是识别按键被按下,可以看到按键弹起来的时候P0.0经过一个R10电阻接到3.3V

2014-10-23 20:55:26 5935 1

原创 【蓝牙低功耗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 8202

原创 【蓝牙低功耗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 5210

原创 原来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 5578 3

转载 android中的数据库操作

原文地址:http://blog.csdn.net/nieweilin/article/details/5919013android中的数据库操作      android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作。 一、android内的数据库的基础知识介绍        1.用了什么数据库

2013-01-08 22:26:55 4471

转载 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 8351

原创 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 4273 1

转载 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 4337

原创 重力小球

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 4755

原创 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 9726

原创 百度地图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 5749 1

原创 静态的声明一个指针变量

我是从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 5384 3

原创 分享一段自己写的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 5439 1

转载 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 4991

原创 Android 模拟器的上使用GPS的bug

由于最近研究Android 模拟器的GPS模块的实现,发现了模拟器GPS的bug。启动模拟器,通过DDMS发送经纬度,通过应用可以抓到数据,进入设置,安全与位置,关闭GPS,再打开,再次打开GPS测试软件,再次发送经纬度,怎么也收不到。查看了代码发现Android模拟器中完成GPS模块的功能主要是一个HAL层代码,通过socket接收发送过来的经纬度信息,其中代码是有问题的,GPS模块的工

2012-09-21 15:09:22 5837 1

原创 Android 驱动和系统开发 2. 解析模拟器GPS模块 (原创)

好久没有写技术博客了,恰逢今天还感冒了,这破天气,晚上凉风一吹,就感冒了,要加强锻炼呀。好了,废话不多说,由于工作需要,我要移植一个虚拟的gps模块,于是乎,我就参考了android模拟器的gps模块的实现方法,只需稍微改动就完成了我的工作了,随后我也会附上我做的模块的代码,这里主要还是来解析下模拟器上的gps模块代码吧。相信做过android location方面应用的同志都知道,and

2012-09-20 10:45:26 11486 4

转载 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 18330 5

原创 使用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 4479

转载 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 4543

转载 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 1216

转载 Android定制属于你自己的导航栏

在实际开发中,我们时常要用到上方的两个按钮,通俗的我们可以叫做导航,等等.还是先看今天需要要实现的一个最的效果:其实实现这样的效果有多种方式,今天我要给大家要介绍的就是如何的去定制自己的控件,也就是自定义控件,自定义控件分为多种,有组合控件,有重写在原来已有的控件上做基础的修改,也有自己重写写一个类继承于View对象,这方面的知识在实际开发当中也会常碰到,当然像我们这种菜鸟在这

2012-08-26 23:58:48 1484

转载 Linux 下C语言简单实现线程池

C语言简单实现线程池0 前言网上关于线程池的例子还是不少,简单明了的倒是比较少,看了网上的资料,打算借鉴网上的一些例子,自己实现以下。线程的概念就不多说,首先说一下多线程的好处:多线程技术主要解决处理器单元内多个线程执行的问题,它可以显著减少处理器单元的闲置时间,增加处理器单元的吞吐能力。那么为什么又需要线程池呢?我们知道应用程序创建一个对象,然后销毁对

2012-08-24 00:22:23 1471 1

转载 判断android设备是否支持多点触控

实现代码如下: [java] view plaincopy/**  * 判断设备是否支持多点触控  * @param context  * @return  */  public static boolean isSupportMultiTouch(Context context) {      PackageManage

2012-08-23 00:20:02 2047

转载 Android系统的开机画面显示过程分析

好几个月都没有更新过博客了,从今天开始,老罗将尝试对Android系统的UI实现作一个系统的分析,也算是落实之前所作出的承诺。提到Android系统的UI,我们最先接触到的便是系统在启动过程中所出现的画面了。Android系统在启动的过程中,最多可以出现三个画面,每一个画面都用来描述一个不同的启动阶段。本文将详细分析这三个开机画面的显示过程,以便可以开启我们对Android系统UI实现的分析之路。

2012-08-22 11:15:45 1490

转载 Android模拟按键——源码环境下开发应用程序

在http://blog.csdn.net/ericahdu 的帮助下,实现了模拟按键,在此,首先表示感谢:)在源码下写程序可以摆脱SDK的限制,毕竟SDK开放的API有限,比如我们实现模拟按键时,需要用到IWindowManager这个类,但是SDK中是不提供这个类的首先下载编译源码,然后在源码的frameworks/base/cmds下新建一个文件夹作为你新扩展模块的一个目录。比如叫做

2012-08-17 09:31:24 1843

原创 调用fork两次以避免僵死进程

如果一个进程fork一个子进程,但不要它等待子进程终止,也不希望子进程处于僵死状态直到父进程终止,实现这一要求的技巧是调用fork2次。下面是实例代码:#include #include #include int main(void){ pid_t pid; if((pid = fork()) < 0) { pri

2012-08-14 13:51:40 1424

原创 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 902

原创 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 1097

原创 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 890

原创 自动变量的潜在问题

下面是一个错误的实例......#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 794 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 913

原创 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 1170

超级好用vim配置

超级好用vim配置,提高写代码效率,绝对好用,方法简单粗暴。

2014-09-21

社会化cocos sdk

社会化cocos sdk

2014-06-24

友盟sdk资源包

友盟sdk资源包

2014-06-24

putty 新字体

在putty中添加新字体,看代码很舒服的字体,个人觉得很赞

2014-06-08

寿司游戏代码

寿司游戏代码

2014-05-03

android ndk

android ndk

2014-04-17

android-ndk-r9d.z09

android-ndk-r9d.z09

2014-04-16

android-ndk-r9d.z08

android-ndk-r9d.z08

2014-04-16

android-ndk-r9d.z07

android-ndk-r9d.z07

2014-04-16

android ndk 06

android ndk 开发工具包

2014-04-16

android ndk 04

安卓原声代码开发工具包 android ndk开发

2014-04-16

android ndk 03

安卓原声带吗开发工具,android ndk开发包

2014-04-16

android ndk 02

安卓原声代码的开发工具包 android ndk r9d

2014-04-16

android-ndk-01

android native development android-ndk-01

2014-04-16

globalmem--字符驱动

linux设备驱动学习之-----字符驱动

2012-03-27

flexcan在android中的移植

flexcan在android中的移植 send and dump

2012-03-27

canbus test

can总线移植测试代码,jni代码和java代码

2012-03-25

vim+taglist

gvim+taglist, 使用gvim和tlist

2012-03-02

Temperature JNI&JAVA;

Temperature JNI&JAVA;,code for my blog

2012-02-07

android sensor hal

android snesor hal code based on freescale BSP

2012-02-01

lpc的数据手册

lcp2106数据手册,移植手册,芯片资料!!!!!!

2011-10-25

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

TA关注的人

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