android 震動的實現

2021-07-09 15:15:18 字數 791 閱讀 3046

通過震動的整體實現來理解驅動的開發

一、應用層

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...