今天在做闹钟Demo的时候,想加上闹钟到期提醒的时候实现震动功能,就上网大概查了下Android中震动的相关资料,总体来说还是蛮简单的。
Android中的Vibrator 类负责对手机震动的处理
导包:import android.os.Vibrator;
加权限:<uses-permission android:name="android.permission.VIBRATE" />
先大概介绍下常用的几个方法:
方法 | 描述 |
---|---|
public void cancel() | 取消震动 |
public boolean hasVibrator() | 判断当前是否在震动 |
public void vibrate(long[] pattern, int repeat) | 设置震动周期,如果repeat为-1则不循环震动,0表示一直震动 |
public void vibrate(long milliseconds) | 打开震动,设置震动时长,1000为1秒 |
1、首先要获取到Vibrator的实例,这个和获取AlarmManger比较类似,获取系统服务,代码如下:
private Vibrator vibrator=null;
vibrator = ( Vibrator ) getApplication().getSystemService(Service.VIBRATOR_SERVICE);
2、开启震动,这里有两个方式,在上面给出,一个参数(不能设置循环)、多个参数(可设置循环)
vibrator.vibrate(1000);//震动一秒
//long型数组内的数组依次表示:等待1秒、震动2秒、等待3秒、震动4秒,0表示无限循环long型数组内定义的震动规则;如果是-1则表示不循环震动
vibrator.vibrate( new long[]{1000,2000,3000,4000},0);
需要说明的是,不管后边的是0、1、2、3等,都会先把Long型数组内的震动模式执行一遍,之后,如果是2,则表示把第一遍执行完之后把1000移除,循环{2000,3000,4000}这样,只不过是模式变为震动、等待、震动。。。
3、取消震动
//取消该实例的震动
vibrator.cancel();
最后大家不要忘了加上相应的权限,还有记得运行的时候不要忘了在真机上运行,模拟器不支持震动。