Android的传感器
Android 的传感器
#移动开发 #Android
1. sensor
sensor 译做感应器或传感器,android 架构支持多种
sensor,手机硬件不一定支持每一种
2. android 系统支持的 sensor,以 froyo 为例(详见 SensorManager.java
中的定义)
重力
STANDARD_GRAVITY
加速度:XYZ 三个方向上的加速度
SENSOR_ACCELEROMETER
温度:周围温度
SENSOR_TEMPERATURE
磁场:XYZ 三轴上的磁场
SENSOR_MAGNETIC_FIELD
光线:周围亮度,用于调节对应的屏幕亮度
SENSOR_LIGHT
接近:相应传感器与物体的距离,如在接电话时,判断耳朵与手机的距离,耳朵触屏被忽略,适里黑屏
SENSOR_PROXIMITY
角度:XYZ 轴的角度
SENSOR_ORIENTATION
SENSOR_ORIENTATION_RAW
其它
与具体应用相关,比如照相模块中实现的 CAMERA SENSOR
3. 如何访问 sensor
应用通过 SensorManager 访问各 ...
Android的开机流程
Android 的开机流程
#移动开发 #Android
y
1. 系统引导 bootloader
源码:bootable/bootloader/*
说明:加电后,CPU 将先执行 bootloader
程序,此处有三种选择
开机按 Camera+Power 启动到 fastboot,即命令或 SD
卡烧写模式,不加载内核及文件系统,此处可以进行工厂模式的烧写
开机按 Home+Power 启动到 recovery 模式,加载
recovery.img,recovery.img
包含内核,基本的文件系统,用于工程模式的烧写
开机按 Power,正常启动系统,加载 boot.img,boot.img
包含内核,基本文件系统,用于正常启动手机(以下只分析正常启动的情况)
2. 内核 kernel
源码:kernel/*
说明:kernel 由 bootloader 加载
3. 文件系统及应用 init
源码:system/core/init/*
配置文件:system/rootdir/init.rc,
说明:init 是一个由内核启动的用户级进程,它按照 init.r ...
android系统自带的Service原理与使用
android 系统自带的
Service 原理与使用
#移动开发 #Android
1. 说明
android 的后台运行在很多 service,它们在系统启动时被 SystemServer
开启,支持系统的正常工作,比如
MountService 监听是否有 SD 卡安装及移除,ClipboardService
提供剪切板功能,
PackageManagerService
提供软件包的安装移除及查看等等,应用程序可以通过系统提供的 Manager
接口来访问这些
Service 提供的数据,以下将说明他们的工具流程
2. 举例说明基本流程
以 android 系统支持 sensor(传感器)实例来说明框架层的 service 和
manager 是如何配合工作的
什么是 sensor
sensor 是传感器, 比如控制横竖屏切换利用的就是重力传感器 (gsensor), 还有
accelerator sensor 可取得
x, y, z 三个轴上的加速度 (应用如平衡球, 小猴吃香蕉等)
应用程序调用(以下为关键代码)
sensorManager=(SensorManager ...
Android的键盘事件处理
Android 的键盘事件处理
#移动开发 #Android
1. 基本流程
内核处理按键,通过设备文件的方式提供给 framework 层
framework 层的 KeyInputQueue.java
启动线程从设备文件中读出键码,然后把读出的键码按 kl
文件转成相应键值
(JNI 调用 EventHub.cpp),最后写入事件队列
framework 层的 WindowManagerService.java
启动线程从事件队列中读出键值,然后根据当前 focus
分发给相应窗口
UI 通过 KeyCharacterMap.java 处理 kcm 规则将用户基本按键与功能键
(Shift, Alt 等)
组合,得出最终按键
2. 两个配置文件
通常更换一种新的硬件,可能其键盘布局及键码与标准版本不同,不用更改代码,只要修改以下配置文件即可(如果增加新的未定义功能的按键,则需要修改代码)
xxx.kl
位置
development/emulator/keymaps/.kl (1.6 版本模拟器使用)
sdk/emulator/keymaps/.kl (2.2 版本 ...
android的图像识别
android 的图像识别
#移动开发 #Android
1. 什么是 opencv
简单的说这是基于图像动态捕捉处理、人脸识别、机器人视觉处理、图像信息认知录入等多为一体计算机视觉库
2. 安装
下载 ndk
[http://bbs.weiphone.com/read-htm-tid-521406.html
](http://bbs.weiphone.com/read-htm-tid-521406.html)
安装 ndk
_ $ tar xvjf OpenCV-2.1.0.tar.bz2
$ cd android-ndk-1.6_r1
$ export NDKROOT=pwd
$./build/host-setup.sh _
下载 opencv
[http://github.com/billmccord/OpenCV-Android/downloads
](http://github.com/billmccord/OpenCV-Android/downloads)
编译 opencv
_ $ tar xvzf bill*
$ cd app
$ ln -s bill* ...
android的文字识别OCR
android 的文字识别 OCR
#移动开发 #Android
1. 功能: 光学字符识别 (OCR,Optical Character Recognition)
是指对文本资料进行扫描,然后对图像文件进行分析处理,获取文字及版面信息的过程
2. 典型应用: 名片扫描
3. android 源码实现: external/tesseract/*
4. 编译: _ $ cd external/tesseract/
$ mm _
生成 libocr.so,push 系统 /system/lib/
中,它也可以放在软件的安装包里
5. 例程下载:
在此下载
[http://code.google.com/p/mezzofanti/
](http://code.google.com/p/mezzofanti/)
直接下载 apk 是能用的, 在源码中编译程序运行就退出,是由于可能
libocr.so 未安装, 把它 push
到系统中即可
_ $ adb push libocr.so /data/data/com.itwizard.mezzofanti/lib/ _
主要借鉴 OCR ...
android之安装使用NDK
android 之安装使用 NDK
#移动开发 #Android
1. 为什么需要 NDK
NDK 不能做界面,只能做功能支持的库。 NDK 与不使用 NDK,直接使用 JNI
相比,它能把库打包,并且很方便的安装。 NDK 使得没有源码的 eclipse
的环境编译 C/C++ 库变得非常方便。 NDK 通常是用来编译和安装 C/C++
库的,常用做库的移植,很多软件会以此方式提供源码。
2. 下载
[http://bbs.weiphone.com/read-htm-tid-521406.html
](http://bbs.weiphone.com/read-htm-tid-521406.html)
3. 安装 NDK
_ $ tar xvjf OpenCV-2.1.0.tar.bz2
$ cd android-ndk-1.6_r1
$ export NDKROOT=pwd
$./build/host-setup.sh _
4. 试用:编译其测试程序
_ $ _ _ make APP=hello-jni _ __
此时生成 out/apps/hello-jni/libhello-jn ...
Android自带的人脸识别
Android 自带的人脸识别
1. Android 自带的人脸识别
Android
自带的人脸识别只能识别出人脸在画面中的位置,中点,眼间距,角度等基本特性,提供给拍照性质的应用使用。从基本功能中不能得出明显的特征数据
2. 底层库支持
external/neven/*
3. 接口
frameworks/base/media/java/android/media/FaceDetector.java
4. Android 源码参考
packages/apps/Gallery/src/com/android/camera/*
5. 关键代码分析
_ package com.android.mydetect; _
_ _
_ import android.app.Activity; _
_ import android.widget.TextView; _
_ import android.os.Bundle; _
_ import android.media.FaceDetector; // _ _ 人脸识别接口 _ __
_ import android.widget.ImageVie ...
android之JNI
android 之 JNI
#移动开发 #Android
1. 为什么使用 JNI
JNI(Java Native Interface)Java 程序中调用 C/C++
开发的共享库,主要用于提高程序效率,或者
Android 应用对 C/C++ 库的调用(多用于调用移植的库,如语音合成库
pico,图像识别库 opencv 等)
2. android 源码中自带的实例
development/samples/SimpleJNI/*
3. 实例
编译环境
Ubuntu 10.04, android 源码环境
重要代码说明
java 代码
123456789101112131415161718192021222324252627_ package com.android.myjni; __ __ import android.app.Activity; __ import android.widget.TextView; __ import android.os.Bundle; __ __ public class MyJniActivity extends Activi ...
android典型应用之语音合成
android 典型应用之语音合成
#移动开发 #Android
1. android 语音合成介绍
语音合成引擎
语音引擎是真正实现语音合成的程序,必须安装它,应用程序才能使用此功能
pico 引擎
android 2.0 之后,源码自带语音软件 pico,其位置在
external/svox/pico*
,它只支持英法西班牙等五六种文字,不包含中文支持
espeak 引擎
如何需要支持中文,需要下载扩展支持 espeak, 下载
tts_3.0_rc05.apk(在此下载:[
http://code.google.com/p/eyes-
free/downloads/detail?name=tts_3.0_rc05.apk&can=2&q
](http://code.google.com/p/eyes-
free/downloads/detail?name=tts_3.0_rc05.apk&can=2&q))
设置系统语音支持
设置 -> 语音输入输出 -> 文字转语音设置
选中使用我的设置, 引擎选择 espeak, 默认 ...