如何使Android设备振动?详细教程与实用技巧

2026-02-08 0 470

当下这个数字化时代,设备在特定动作中产生振动具备诸多实用价值。然而,许多人对此操作方法并不了解。今天,我们将对此进行深入讨论。

import android.os.Vibrator;
...
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 500 milliseconds
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    v.vibrate(VibrationEffect.createOneShot(500, VibrationEffect.DEFAULT_AMPLITUDE));
} else {
    //deprecated in API 26 
    v.vibrate(500);
}

设备振动权限的授予

在启动设备振动功能之前,需确保已给予相应应用振动权限。这和手机应用安装时类似,若安装时未注意权限设置,将来使用振动功能时便会遇到问题。此过程相当于为设备开启了振动功能的通道。不同操作系统中,授权位置和方式各异。比如在安卓系统,需进入设置中的应用权限管理,找到目标应用并激活振动权限。


权限不足,振动代码便失去了作用。若你制作了一款提醒软件,意图通过震动来提醒用户,但未获得相应权限,那么便无法实现提醒功能,这会影响到用户的体验。

 import android.os.Vibrator;

确定振动发生的活动中包含授权操作

权限一旦明确,必须保证在振动触发时权限操作得以实施。比如,当用户在健身APP完成锻炼任务后设备振动,就必须在对应任务的代码中确认权限已妥善处理。过去有些开发者未能注意这一点,导致测试时振动环节始终无法启动。这正是因为未正确核实活动中的权限执行。此类问题常常在调试阶段让人困惑不解。

不采取这种做法,可能会在特定情况下引发振动功能无法正常运作。比如,若你开发了一款游戏,玩家成功通关后应感受到振动庆祝,但设备却无任何反应,这可能会让玩家怀疑游戏是否出现了故障。

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Vibrate for 400 milliseconds
v.vibrate(400);

按需求设定振动时长

通常需要将振动设备设定在特定的时间段内运作。比如日常用的闹钟,它的振动不会持续太长,仅为了吸引你的注意,振动一会儿便停止。若以秒来计算,可能设定为1到3秒的短暂振动。

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Start without a delay
// Vibrate for 100 milliseconds
// Sleep for 1000 milliseconds
long[] pattern = {0, 100, 1000};
// The '0' here means to repeat indefinitely
// '0' is actually the index at which the pattern keeps repeating from (the start)
// To repeat the pattern from any other point, you could increase the index, e.g. '1'
v.vibrate(pattern, 0);

不过,有时你或许想让设备持续震动不停。比如,某些紧急警报软件,在地震或火灾发生时,会不断震动,直到用户手动关闭或是设备出现故障。

停止振动的操作

v.cancel();

停止振动时,只需调用对应的方法即可。这相当于给振动功能按下了暂停。例如,在使用远程控制智能家居的APP时,若设备因故障持续震动,你可通过APP的停止振动按钮来调用相应方法,使设备停止振动。若未完成此操作,设备可能会持续震动,直至电量耗尽。

对于开发者而言,在编写代码时,必须确保正确编写停止振动的函数调用,否则可能会导致一些预料之外的问题发生。

定制自己的振动模式

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Start without a delay
// Each element then alternates between vibrate, sleep, vibrate, sleep...
long[] pattern = {0, 100, 1000, 300, 200, 100, 500, 200, 100};
// The '-1' here means to vibrate once, as '-1' is out of bounds in the pattern array
v.vibrate(pattern, -1);

若要使振动更具特色,可以打造独特的振动样式。之前讲到的数字编码,比如0代表延后,100则代表初始振动时长为100毫秒。这样的个性化设置能够满足更多特定需求。以音乐APP为例,其震动模式可随音乐节奏调整。曾有一款APP,开发者希望借助振动让用户感受到音乐的质感,便尝试设计自定义振动模式,此举显著增强了用户在聆听动感音乐时的沉浸感。

自行设置振动模式会让操作变得繁琐,同时涉及众多必须细致思考的要素,以确保用户获得最佳的体验。

设备本身的振动条件

// Get instance of Vibrator from current Context
Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
// Output yes if can vibrate, no otherwise
if (v.hasVibrator()) {
    Log.v(\"Can Vibrate\", \"YES\");
} else {
    Log.v(\"Can Vibrate\", \"NO\");
}

若设备未启动振动,需先检查其是否具备振动功能。部分设备硬件上并不支持振动,若忽视这一点,持续在软件层面寻找问题,则如同逆水行舟。比如那些超小型简易智能设备,有些甚至未配备振动模块。

设备若具有振动特性,除了前面提到的权限分配问题,还可能涉及硬件故障等其他情况。此时,需检查设备内部的振动装置是否运作正常。

是否有过在调整设备振动参数时感到十分棘手的经历?不妨在评论区告诉我们。期待大家能点赞并转发此文,帮助更多人避免在设备振动设置上走错路。

 public void vibrate(int duration)
 {
    Vibrator vibs = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    vibs.vibrate(duration);    
 }

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 开发教程 如何使Android设备振动?详细教程与实用技巧 https://www.zuozi.net/74970.html

常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务