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
    在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對象實例封送的特殊對象類型集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章