参考链接:https://www.jianshu.com/p/7cf9972b4fc6
参考链接:https://blog.csdn.net/zhaoxiaojian1213/article/details/77479417
实现震动,首先要加上使用震动所需的权限,添加在AndroidMainifest.xml
<!-- 添加震动权限 -->
<uses-permission android:name="android.permission.VIBRATE"/>
直接看代码,复制拿去直接用
public class TipHelp {
/*
* final Activity activity :调用该方法的Activity实例long milliseconds :震动的时长,单位是毫秒
long[] pattern :自定义震动模式 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒
boolean isRepeat : 是否反复震动,如果是true,反复震动,如果是false,只震动一次
TipHelper.Vibrate(getActivity(), new long[]{800, 1000, 800, 1000, 800, 1000}, true);
*/
private static Vibrator vib;
public static void Vibrate(final Activity activity, long milliseconds) {
vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(milliseconds);
}
public static void Vibrate(final Activity activity, long[] pattern, boolean isRepeat) {
vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(pattern, isRepeat ? 1 : -1);
}
public static void Vibrate(MainActivity activity, long[] pattern, boolean isRepeat) {
vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.vibrate(pattern, isRepeat ? 1 : -1);
}
/**
* 停止震动
*/
public static void stop() {
vib.cancel();
}
//取消震动
public static void virateCancle(final Activity activity){
Vibrator vib = (Vibrator) activity.getSystemService(Service.VIBRATOR_SERVICE);
vib.cancel();
}
}
在需要的地方可以直接调用:
TipHelper.Vibrate(getActivity(), new long[]{800, 1000, 800, 1000, 800, 1000}, true);
如果想要设置一个震动开关按钮,添加一个标志位来判断震动是否已经开启。
public static Boolean isVirating = false;//声明一个全局静态变量
在开关按钮里改变一下boolean值,我用的是switch控件
sw_zd.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked){
isVirating = true;
}else {
//关闭震动
if (isVirating)
{
isVirating = false;
TipHelp.virateCancle(getActivity());
}
}
}
});
然后在需要的地方进行一个判断就可以了
if(MeFragment.isVirating){ //MeFragment是声明全局静态变量的类名
TipHelp.Vibrate(getActivity(), new long[]{800, 1000, 800, 1000, 800, 1000}, true);
}
希望能够帮助到别人。
要学的还有很多,加油。