继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android - Vibrator及VibrationEffect类详解

幕布斯6054654
关注TA
已关注
手记 1264
粉丝 219
获赞 1011

前言

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



作者:木鱼舟2019
链接:https://www.jianshu.com/p/921d24ba1974


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP