使用方法(默認觸感反饋是啓用的)
-
view.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY, HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING);
-
第二個參數不傳
HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING
全部失效
初步測試結果
- 第一個參數傳除
HapticFeedbackConstants.VIRTUAL_KEY
以外的任何參數,不是震動比它小就是沒有震動。 - 第二個參數傳
HapticFeedbackConstants.FLAG_IGNORE_GLOBAL_SETTING)
(即忽略全局設置)以外的參數或者不傳,也沒有震動。
替代方法
實際上 HapticFeedback 也是調用的Vibrate震動引擎,只是Android系統內定義好了幾種比較好的震動效果,而且HapticFeedback不需要震動權限。
如果有權限:
<uses-permission android:name="android.permission.VIBRATE"/>
//取得震動服務
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
if (vibrator != null) {
vibrator.vibrate(new long[]{0,10},-1);
}
實測 Smartisan R1 在震動時間爲10ms的情況下已經有較重的劃欄杆
的感覺了。
vibrate()裏面是個long數組加一個重複模式,大概意思是(參考文章):
開始震動有兩個接口
1 . vibrator.vibrate(2000);//震動指定時間 ,數據類型long,單位爲毫秒,一毫秒爲1/1000秒
2. vibrator.vibrate(new long[]{100,10,100,1000}, -1);//按照指定的模式去震動。
數組參數意義:第一個參數爲等待指定時間後開始震動,震動時間爲第二個參數。後邊的參數依次爲等待震動和震動的時間
第二個參數爲重複次數,-1爲不重複,0爲一直震動