Android-Vibrator及VibrationEffect

作者: 古舟咕咕 | 来源:发表于2019-02-15 09:05 被阅读14次

    前言

    我们在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对象实例封送的特殊对象类型集。

    相关文章

      网友评论

        本文标题:Android-Vibrator及VibrationEffect

        本文链接:https://www.haomeiwen.com/subject/btaueqtx.html