Android - Vibrator及VibrationEffect类详解

本文详细介绍了Android系统中Vibrator类与VibrationEffect类的功能与使用方法,包括取消振动、检查硬件支持、创建不同模式的振动效果等,适用于Android开发者了解与实现设备触觉反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值