Android
itdo_just
这个作者很懒,什么都没留下…
展开
-
Android灯光系统框架分析
首先别人的APP要能直接访问到你写的硬件或者不经过任何修改的APP能直接使用你的驱动,就需要使用系统自带的JNI,所以我们需要写出符合系统自带JNI文件的HAL文件和驱动程序,下面具体分析一个这个HAL和驱动程序需要实现什么。灯光系统由以下四个文件组成APP:电池灯APP,通知灯APP,背光灯APP JNI :com_android_server_lights_LightsService.cpp原创 2017-07-31 18:53:21 · 2010 阅读 · 0 评论 -
android6.0第三方APP获得设备节点的访问权限
之前使用android4.4的系统进行开发时 system/app(系统自带APP) 目录下的 app 可以直接访问 dev 目录下的设备节点,Android 5.0 以后,因为采取了 SEAndroid/SElinux 的安全机制,即使拥有 root权限,或者对某内核节点设置为 777 的权限,仍然无法在 JNI 层访问。 这里先了解一下 SEAndroid app 的分类 SELinux(或S原创 2017-10-07 18:36:29 · 5082 阅读 · 0 评论 -
socketpair双向通信
android很多地方会涉及到进程间的通信,比如输入系统,那么进程间通信会涉及哪些内容呢?进程:负责读取和分发事件应用程序:负责处理输入事件上面这两个进程会涉及哪些双向通信呢:进程会发送输入事件应用程序会告知事件处理完或APP已关闭这里大家可能会有疑惑,binder系统能否实现上面所说的双向通信呢? 答案是不行,binder分为server和client,每次都由client主动发出请原创 2017-08-23 12:47:30 · 843 阅读 · 0 评论 -
使用 global key 一键启动应用程序
按键分三类: 1. global key:按下按键,启动某个APP可以自己指定,修改: Frameworks/base/core/res/res/xml/Global_keys.xml例如AKEYCODE_TV2. system key:比如音量键 AKEYCODE_VOLUME_DOWN3. user key:其它按键,比如ABCD AKEYCODE_A使用globa原创 2017-08-26 12:14:11 · 1858 阅读 · 0 评论 -
Android输入系统简述
触摸屏与键盘是Android最普遍也是最标准的输入设备。其实Android所支持的输入设备的种类不止这两个,鼠标、游戏手柄均在内建的支持之列。当输入设备可用时,Linux内核会在/dev/input/下创建对应的名为event0~n或其他名称的设备节点。而当输入设备不可用时,则会将对应的节点删除。在用户空间可以通过ioctl的方式从这些设备节点中获取其对应的输入设备的类型、厂商、描述等信息。 当用原创 2017-08-25 16:53:53 · 458 阅读 · 0 评论 -
inotify和epoll机制
假设你买了一台笔记本,但是你嫌它自带的键盘不好用,于是你买了个键盘,这样你可以两个键盘同时使用,这里面涉及了什么呢?键盘即插即用 a) 那么怎么检测键盘的接入和拔出,两种机制 Hotplug机制:内核发现键盘接入/拔出->启动hotplug进程->消息传入输入系统,这种机制非常复杂,Android并不使用这种机制Inotift:输入系统使用inotify检测一个目录“/dev/input”原创 2017-08-22 17:35:02 · 1272 阅读 · 0 评论 -
Android消息处理机制
引用一段进程的总结作为开头:进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;所有由你启动的进程都是用户进程。进程是操作系统进行资源分配的单位。在Windows下,进程又被细化为线程,也就是一个进程下有多个能原创 2017-07-28 17:25:49 · 285 阅读 · 0 评论 -
Android Binder-编写client/server
前面对Binder的用途和通信过程涉及的代码进行了概述,这章主要用C来实现一个client和server,说再多不如代码体现的直接,下面的附上代码,代码都做了详细的注解,理解起来比较容易。第一个程序是向Service_manager注册一个服务,编写一个test_server.c程序#include <stdio.h>#include <stdlib.h>#include <errno.h>#原创 2017-08-06 15:37:09 · 962 阅读 · 0 评论 -
Android Binder-框架简析
Android这个庞大的系统中会涉及非常多的进程间通信,是什么让各个进程间通信起来毫无障碍且有条不紊的呢?传统的IPC(即”进程间的通信”缩写),例如Pipe和Socket,执行一次通信需要两次数据的拷贝,举个例子如,Client要将一块内存数据传递给Server,一般的做法是,Client将这块数据从它的进程空间拷贝到内核空间中,然后内核再将这个数据从内核空间拷贝到Server的进程空间,这样,S原创 2017-08-05 18:50:39 · 326 阅读 · 0 评论 -
Android里java程序的编译启动
下面使用一个程序来说明如何在PC上和Android系统上编译我们写好的java程序PC端: 在PC上执行java程序时我们一般使用javac来编译程序,以一个Hello.java程序来说明一下编译的步奏:javac Hello.java编译之后会得到一个Hello.class执行:java HelloAndroid端: 在android里面他的虚拟机就不是java了,而是一个称为”dal原创 2017-08-13 15:39:42 · 1087 阅读 · 0 评论 -
Android硬件访问服务-HAL
一般情况下,APP不直接访问硬件,而是由SystemServer通过HAL和JNI来访问硬件,实质即java访问C,建议把对硬件的操作写在一个HAL文件里面,对上一章写的代码com_android_server_LedService.cpp这个JNI文件做进一步的修改,除了向上注册本地函数之外,还要去加载HAL文件,然后调用HAL里面的函数。使用HAL有两个好处:1. 容易修改,只需直接修改HAL原创 2017-07-27 14:14:52 · 1012 阅读 · 0 评论 -
Android硬件访问服务-JNI
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).Android驱动开发中访问硬件有以下两种方式:使用Java直接通过JNI访问C库,C库里面实现硬件上的Open,Read/Write,ioctl等linux驱动函数,但是这种方法有缺点,比如说一个LCD设备驱动有很多应用程序(电话、QQ、微信等)都需要访问,难道每个都原创 2017-07-23 16:54:19 · 661 阅读 · 0 评论 -
Android硬件访问服务-Service
Android有四大组件: 一、Activity 二、Service 三、Broadcast Receiver 四、Content ProviderService是Android中一个类,它是Android四大组件之一,使用Service可以在后台执行长时间的操作( perform long-running operations in the background ),Service并不与用原创 2017-07-25 16:24:56 · 2685 阅读 · 0 评论 -
Android灯光系统-class和HAL
首先分析下如何使用android系统自带的命令去操作单板上的led,可以使用以下命令去验证: 点亮LED及查看亮度 echo 255 > /sys/class/leds/led1/brightness cat /sys/class/leds/led1/brightness cat /sys/class/leds/led1/max_brightness 闪烁 ec原创 2017-08-02 16:43:51 · 1522 阅读 · 0 评论 -
Android使用串口(基于android-serialport-api)
运行平台: CPU:全志V40 Android版本:6.0.1关于安卓设备上使用串口,谷歌官方在github上有提供代码实例,里面有JNI的代码和串口API的java文件,工程的地址如下: https://github.com/cepr/android-serialport-api官方给出的代码是eclipse工程,SDK的版本也比较旧。我使用的Android Studio,如果直接...原创 2018-06-07 10:32:14 · 52658 阅读 · 15 评论