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注册设备
在驱动层主要通过控制设备寄存器的值来跟设备进行交互,比如对于震动,设置某个寄存器让马达上电,马达就开始转动,从而产生震动效果
一、应用层
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注册设备
在驱动层主要通过控制设备寄存器的值来跟设备进行交互,比如对于震动,设置某个寄存器让马达上电,马达就开始转动,从而产生震动效果
相关文章推荐
- android 如何创建配置文件和读配置文件
- android 程序启动界面的短暂黑屏解决办法
- Android点击EditText之外地方隐藏键盘
- Android关于JavaScript与Native方法相互调用
- Android 的 AlarmManager 和 wakeLock联合使用
- PullToRefresh开源库
- Android遇到的那些坑
- Android通过Intent.ACTION_CLOSE_SYSTEM_DIALOGS监听Home按键事件
- [Android]自定义圆形图片
- 使用Android开源工具PullToRefresh实现上啦刷新下拉加载
- 使用RxBinding处理控件异步调用
- Android音谱
- [置顶] Android实现应用的增量更新\升级
- android AsyncTask使用注意事项以及总结
- Android LayoutInflater详解
- Android开发实现异步加载图片
- Android 实现自己定义多级树控件和全选与反选的效果
- Android应用程序的Activity启动过程简要介绍和学习计划
- Android开发点击返回键退出(出现dialog)
- 安卓开发者必备的42个链接