Andorid 调用系统震动

您所在的位置:网站首页 手机震动图标 Andorid 调用系统震动

Andorid 调用系统震动

2023-06-16 05:07| 来源: 网络整理| 查看: 265

前言: 项目中有时我们需要调用手机的系统震动功能,最近做的项目中有用到。以下是我所用的方法: 权限: /** * 初始化震动 * * @param context */ public static void initViarbtor(Context context) { if (context == null) return; vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_SCREEN_OFF); context.getApplicationContext().registerReceiver(mIntentReceiver, filter); vibrator.vibrate(new long[]{300, 100, 100, 1000}, 0); //等待3s,震动0.1s,等待0.1s,震动 1S;0表示一直震动 }

初始化震动后,我们还有写一个方法用来停止震动:

/** *停止震动 * * @param context */ public static void stopViarbtor(Context context) { if (vibrator!=null) vibrator.cancel(); vibrator=null; }

到此我们简单的调用系统的震动跟停止震动就已经结束了,但有些产品思想跟人的思想就是不一样,有的黑屏之后,或者按下电源键,震动依然还在。如过只是用以上方法这个需要是满足不了,原因: 安卓是起服务实现震动的,如下: mVibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);

持续震动可以通过public abstract void vibrate(long[] pattern, int repeat);设置repeat参数来实现 repeat为-1表示不重复, 如果不是-1, 比如改成1, 表示从前面这个long数组的下标为1的元素开始重复. mVibrator.vibrate(new long[]{100,100,100,1000}, 0);//持续震动 熄屏后发现震动停止了,原因是VibratorService.java中注册了一个屏保事件的广播接收者,进入ACTION_SCREEN_OFF屏保时,会调用doCancelVibrateLocked,继而调用doVibratorOff停掉振动**

所以在我们自己的模块。需要动态建立一个类似的广播进行处理,以确保持续震动还是停止。为此我们还要有一下操作:

static BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { synchronized (vibrator) { vibrator.cancel(); Log.e("MelodyTest", "hongyan:has no vibrator"); vibrator.vibrate(new long[]{300, 100, 100, 1000}, 0); //等待3s,震动0.1s,等待0.1s,震动 1S;0表示一直震动 } } } }; }

经过以上操作我们得任务就完成了,不妨可以试一下。这里写图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3