您的位置:首页 > 移动开发 > Android开发

android 震动的实现

2016-01-25 16:32 155 查看
通过震动的整体实现来理解驱动的开发

一、应用层

android的系统有一个专门处理震动请求的服务,通过它应用就能够向系统请求多长时间的震动

Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);

vib.vibrate(milliseconds);

二、framework层

在VibratorService调用

startVibrationLock->doVibratorOn->vibratorOn向底层请求震动

三、JNI层

com_android_server_VibratorService

映射的本地方法是vibratorOn,调用的是硬件适配层的vibrator_on

四、HAL层:hardware\libhardware_legacy\vibrator\vibrator.c

vibrator_on,调用sendit把命令发给底层驱动,设备

#define THE_DEVICE"/sys/class/timed_output/vibrator/enable"

timed_output 是对设备进行定时控制的一类

五、驱动层

有不同的厂家的驱动,比如以msm_vibrator.c

在初始化的时候通过timed_output_dev_register注册设备

在驱动层主要通过控制设备寄存器的值来跟设备进行交互,比如对于震动,设置某个寄存器让马达上电,马达就开始转动,从而产生震动效果
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: