前言
我们在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:VibrationEffectvibrate
在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:AudioAttributesvibrate
在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