通過震動的整體實現來理解驅動的開發
一、應用層
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 手機震動
1.新增震動許可權 uses permission android name android.permission.vibrate 2.獲取震動服務 vibrator mvibrator vibrator getsystemservice vibrator service 3.啟動震動 void v...
android震動學習經驗
最近研究了一下震動,給大家分享一下。最初的時候用了乙個很笨的方法。我知道通知中可以設定震動,每次震動都發乙個通知,功能雖然實現了,但是不知道會不會有什麼其他影響。如下 long vibrate 自定義的震動形式。也可以試用預設的。notification.default vibrate 四個引數 1...
android之手機震動
main.xml布局檔案 xml version 1.0 encoding utf 8 linearlayout xmlns android android orientation vertical android layout width fill parent android layout he...