前言
我們在Android開發中經常會用到Vibrator類,這是用來讓手機振動的一個類。下面我們就來看一下Vibrator類以及在Android8.0中新增的VibrationEffect類的詳解吧。
一、Vibrator類詳解
在API級別1(Android1.0)中添加
1、基本概念
在設備上操作振動器的類。
如果您的進程退出,您啓動的任何振動都將停止。
必須使用帶有Vibrator.class
參數的Context.getSystemService(Class)
或帶有Context.VIBRATOR_SERVICE
參數的Context.getSystemService(String)
來獲取此類的實例。
2、公共方法
cancel
在API級別1(Android1.0)中添加
public abstract void cancel ()
關閉振動器。
需要VIBRATE
權限。hasAmplitudeControl
在API級別26(Android8.0)中添加
public abstract boolean hasAmplitudeControl ()
檢查振動器是否有振幅控制。
返回值:Boolean
如果硬件可以控制振動的幅度,則爲true,否則爲false。hasVibrator
在API級別11(Android3.0)中添加
public abstract boolean hasVibrator ()
檢查硬件是否有振動器。
返回值:Boolean
如果硬件有振動器,則爲true,否則爲false。vibrate
在API級別1(Android1.0)中添加
public void vibrate (long milliseconds)
此方法在API級別26(Android8.0)中已棄用。
使用vibrate(VibrationEffect)
來代替。
在指定的時間段內不斷振動。
需要VIBRATE
權限。
milliseconds:振動的毫秒數。vibrate
在API級別26(Android8.0)中添加
public void vibrate (VibrationEffect vibe)
需要VIBRATE
權限。
vibe:VibrationEffectvibrate
在API級別1(Android1.0)中添加
public void vibrate (long[] pattern, int repeat)
此方法在API級別26(Android8.0)中已棄用。
使用vibrate(VibrationEffect)
來代替。
用給定的模式振動。
傳遞一組整數,這些整數是在幾毫秒內打開與關閉振動器的持續時間。第一個值表示在打開振動器之前等待的毫秒數。下一個值表示在關閉振動器之前保持振動器開啓的毫秒數。之後的值以關閉振動器與打開振動器的持續時間(以毫秒爲單位)之間交替。
要使模式重複下去,請將索引傳遞到開始重複的模型數組,或用-1以禁用重複。
需要VIBRATE
權限。
pattern:打開與關閉振動器時間的整數序列。
repeat:索引到重複的模式,如果你不想重複,則爲-1。vibrate
在API級別21(Android5.0)中添加
public void vibrate (long[] pattern, int repeat, AudioAttributes attributes)
此方法在API級別26(Android8.0)中已棄用。
使用vibrate(VibrationEffect, AudioAttributes)
來代替。
用給定的模式振動。
傳遞一組整數,這些整數是在幾毫秒內打開與關閉振動器的持續時間。第一個值表示在打開振動器之前等待的毫秒數。下一個值表示在關閉振動器之前保持振動器開啓的毫秒數。之後的值以關閉振動器與打開振動器的持續時間(以毫秒爲單位)之間交替。
要使模式重複下去,請將索引傳遞到開始重複的模型數組,或-1以禁用重複。
需要VIBRATE
權限。
pattern:打開與關閉振動器時間的整數序列。
repeat:索引到重複的模式,如果你不想重複,則爲-1。
attributes:AudioAttributes對應振動。例如,爲報警振動指定AudioAttributes.USAGE_ALARM
,或爲與來電相關的振動指定AudioAttributes.USAGE_NOTIFICATION_RINGTONE
。vibrate
在API級別26(Android8.0)中添加
public void vibrate (VibrationEffect vibe, AudioAttributes attributes)
需要VIBRATE
權限。
vibe:VibrationEffect
attributes:AudioAttributesvibrate
在API級別21(Android5.0)中添加
public void vibrate (long milliseconds, AudioAttributes attributes)
此方法在API級別26(Android8.0)中已棄用。
使用vibrate(VibrationEffect, AudioAttributes)
來代替。
milliseconds:振動的毫秒數。
attributes:AudioAttributes對應振動。例如,爲報警振動指定AudioAttributes.USAGE_ALARM
,或爲與來電相關的振動指定AudioAttributes.USAGE_NOTIFICATION_RINGTONE
。
二、VibrationEffect類詳解
在API級別26(Android8.0)中添加
1.基本概念
VibrationEffect描述了由振動器執行的觸覺效果。這些效果可能是任何數量的因素,從單發振動到複雜波形。
2.常量
-
DEFAULT_AMPLITUDE
在API級別26(Android8.0)中添加
public static final int DEFAULT_AMPLITUDE
設備的默認振動強度。
常數值:-1(0xffffffff)
3.公共方法
createOneShot
在API級別26(Android8.0)中添加
public static VibrationEffect createOneShot (long milliseconds, int amplitude)
創建一次性振動。一次性振動將以指定的振幅在指定的時間段內持續振動,然後停止。
milliseconds:振動的毫秒數。這必須是一個正數。
amplitude:振動的強度。它必須是1到255之間的值,或DEFAULT_AMPLITUDE
。
返回值:VibrationEffect
期望的效果。createWaveform
在API級別26(Android8.0)中添加
public static VibrationEffect createWaveform (long[] timings, int[] amplitudes, int repeat)
創建波形振動。波形振動是可能重複的一系列時序序列和振幅序列。對於每個序列,振幅序列中的值確定振動的強度,時序序列中的值確定振動的時間長度。振幅爲0意味着沒有振動(即關閉),並且將忽略時序值爲0的任何序列。
要使模式重複下去,請將索引傳遞到開始重複的時序數組,或-1以禁用重複。
timings:交替開關時間的模式,從關閉開始。值爲0將導致忽略時序 / 幅度序列。
amplitude:振動的強度。它必須是1到255之間的值,或DEFAULT_AMPLITUDE
。
repeat:索引到重複的模式,如果你不想重複,則爲-1。
返回值:VibrationEffect
期望的效果。createWaveform
在API級別26(Android8.0)中添加
public static VibrationEffect createWaveform (long[] timings, int repeat)
創建波形振動。波形振動是可能重複的一系列時序序列和振幅序列。對於每個序列,振幅序列中的值確定振動的強度,時序序列中的值確定振動的時間長度。振幅爲0意味着沒有振動(即關閉),並且將忽略時序值爲0的任何序列。
生成波形的振幅序列與給定時序序列的大小相同,交替值爲0(即關閉)和DEFAULT_AMPLITUDE
,從0開始。因此,第一個時序值將是打開振動器之前要等待的時間,第二個值是在DEFAULT_AMPLITUDE
強度下振動多長時間等。
要使模式重複下去,請將索引傳遞到開始重複的時序數組,或-1以禁用重複。
timings:交替開關時間的模式,從關閉開始。值爲0將導致忽略時序 / 幅度序列。
repeat:索引到重複的模式,如果你不想重複,則爲-1。
返回值:VibrationEffect
期望的效果。describeContents
在API級別26(Android8.0)中添加
public int describeContents ()
描述此Parcelable實例的封送表示中包含的特殊對象的種類。例如,如果對象將在writeToParcel(Parcel,int)
的輸出中包含文件描述符,則此方法的返回值必須包含CONTENT_FILE_DESCRIPTOR
位。
返回值:int
一個位掩碼,指示由此Parcelable對象實例封送的特殊對象類型集。