Android-Vibrator及VibrationEffect類詳解
前言
我們在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:VibrationEffect
-
vibrate
在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:AudioAttributes
-
vibrate
在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
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物件例項封送的特殊物件型別集。