Android Vibrator开启振动功能

image

前言

Android 开启振动主要运用了 Vibrator(振动器),系统中有一个 Vibrator 抽象类,我们可以通过获取 Vibrator实例调用里面的方法来完成振动功能。

Vibrator vibrator = (Vibrator) getSystemServic(Service.VIBRATOR_SERVICE);

记得加权限:

<uses-permission android:name="android.permission.VIBRATE"/>

方法和参数

vibrator.vibrate(1000);  //设置手机振动
vibrator.hasVibrator();  //判断手机硬件是否有振动器
vibrator.cancel();//关闭振动

这里主要讲解一下 vibrator.vibrate(),如下图所示:

vibrate ( long milliseconds )

vibrator.vibrate(1000); //立刻振动,持续时间为1s

vibrate ( long milliseconds, AudioAttributes attributes )

API 文档中对第二个参数的解释是:

attributes: AudioAttributes corresponding to the vibration. For example,specify 
USAGE_ALARM for alarm vibrations or USAGE_NOTIFICATION_RINGTONE for vibrations
associated with incoming calls.

意思就是说我们可以指定振动对应的属性

指定 USAGE_NOTIFICATION_RINGTONE 则是来电铃声振动

USAGE_ALARM  闹钟振动

使用

//API 21加入的
AudioAttributes audioAttributes = new AudioAttributes.Builder()
        .setUsage(AudioAttributes.USAGE_ALARM)
        .build();
        
vibrator.vibrate(1000, audioAttributes);

vibrate ( long [ ] pattern , int repeat )

pattern long 类型数组
API 解释:an array of longs of times for  which to turn 
the vibrator on or off;

官方文档对pattern中元素的详细说明:
Pass in an array of ints that are the durations for which to turn on or off 
the vibrator in milliseconds.The first value indicates the number of milliseconds 
to wait before turning the vibrator on. The next value indicates the number of 
milliseconds for which to keep the vibrator on before turning it off.Subsequent 
values alternate between durations in milliseconds to turn the vibrator off or to 
turn the vibrator on.
大致意思:数组中的整数用来打开或关闭振动器,第一个值表示在打开振动器之前要等待的毫秒数下一个值
表示在关闭振动器之前保持振动器的毫秒数,随后的值交替执行。
repeat 振动重复的模式:   -1 为不重复
                         0 为一直重复振动
                         1 则是指从数组中下标为1的地方开始重复振动(不是振动一次!!!)      
                         2 从数组中下标为2的地方开始重复振动。
                         .....

//下面的 pattern[] 我们可以理解为 开启振动后:
「等待0.1s」>「振动」>「振动2s」>「等待1s」>「振动1s」>「等待3s」

long pattern[] = {100, 2000, 1000, 1000,3000};
vibrator.vibrate(pattern,-1); 
对于上面 repeat 和 pattern 的关系的还是依照上图来说吧,
图片刚好和 long pattern[] = {100, 2000, 1000, 1000,3000}数组对应(为了方便解释 
我将等待振动时间和振动时间当做一组)

当 repeat 为 0 的时候会一直振动 此时会一直走 (0,1),(2,3)
下标 4 刚好是等待时间 依然会执行 然后本次重复结束,开启下一次重复。

当 repeat 为 1 的时候 第一次振动会(0,1),(2,3),然后等待 3s,本次振动结束,然后从下标为 1 
的地方开始重复振动, 此时会走(1,2),(3,4),(1,2),(3,4);

当 repeat 为 2 的时候 第一次振动会(0,1),(2,3),然后等待 3s,本次振动结束,从下标为2的
地方开始重复振动,此时为(2,3),然后等待3s,结束本次重复,开启下次(2,3)....

总结:pattern [ ] 数组中第一位为振动等待时间,重复执行时指定的下标为重复振动的第一位,亦为等待时间。
数组中个数为奇数时,最后一位为等待时间,依旧会执行。

vibrate ( long[ ] pattern, int repeat, AudioAttributes attributes )

这个就不做过多解释,上面都有涉及到。

结束

本篇文章主要介绍了一下振动器常见 API 和使用,比较简单。但都是亲自测试所得。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • Android 系统级别的Service有好多,可以通过getSystemService(@ServiceName...
    LeaYw阅读 1,563评论 0 6
  • 原文出处: http://www.androidchina.net/6174.html Notification在...
    木木00阅读 12,289评论 3 32
  • 1、Android的震动实现——Vibrator类 (1)实现震动,首先要加上使用震动所需的权限 (2)需要用到的...
    EdisonJQ阅读 20,436评论 1 12
  • 上篇写到我向孩子的妈妈提了一个问题:为什么大家都在对孩子的教育进行投资,而你的培养却是比较成功的?她没有办法告诉我...
    包包胡老师阅读 562评论 0 50