Vibrator(振动器)

DirectInput & Xinput - 遊戲手把控制器範例 立即下载

本节我们介绍的是Vibrator(振动器),是手机自带的振动器,别去百度直接搜针振动器,因为你的搜索结果可能是如图所示的神秘的道具,或者其他神秘道具:

嗯,说回本节介绍的Vibrator,其实就是Android给我们提供的用于机身震动的一个服务!比如前面我们的Notification中可以设置震动,当收到推送消息的时候我们可以设置震动提醒,游戏必备,比如"打飞机"的游戏,当你的飞机给人打爆的时候,会长震动!

下面我们就来写个简单的例子,来熟悉下这个Vibrator的用法!

官方API文档:Vibrator


1.获得Vibrator实例:


Vibrator vb = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);


2.可以使用的相关方法:

  • abstract void cancel():关闭或者停止振动器
  • abstract boolean hasVibrator():判断硬件是否有振动器
  • void vibrate(long milliseconds):控制手机振动为milliseconds毫秒
  • void vibrate(long[] pattern,int repeat):指定手机以pattern指定的模式振动!比如:pattern为new int[200,400,600,800],就是让他在200,400,600,800这个时间交替启动与关闭振动器!而第二个则是重复次数,如果是-1的只振动一次,如果是0的话则一直振动还有其他两个方法用得不多~对了,使用振动器还需要在AndroidManifest.xml中添加下述权限:<uses-permission android:name="android.permission.VIBRATE"/>

3.使用示例:设置频率不同的震动器:

对于Vibrator用的最广泛的莫过于所谓的手机按摩器类的app,在app市场一搜,一堆,笔者随便下了几个下来瞅瞅,都是大同小异的,这点小玩意竟然有8W多的下载量...好吧,好像也不算多,不过普遍功能都是切换振动频率来完成,而所谓的按摩效果,是否真的有效就不得而知了,那么接下来我们就来实现一个简单的按摩器吧!核心其实就是:vibrate()中的数组的参数,根据自己需求写一个数组就可以了!下述代码需要在真机上进行测试!

运行效果图:

实现代码:

简单的布局文件,五个按钮:activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    
    <Button
        android:id="@+id/btn_hasVibrator"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="判断是否有振动器" />


    <Button
        android:id="@+id/btn_short"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="短振动" />

    <Button
        android:id="@+id/btn_long"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="长振动" />

    <Button
        android:id="@+id/btn_rhythm"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="节奏振动" />

    <Button
        android:id="@+id/btn_cancle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="取消振动" />
</LinearLayout>

接着是MainActivity.java部分:

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private Button btn_hasVibrator;
    private Button btn_short;
    private Button btn_long;
    private Button btn_rhythm;
    private Button btn_cancle;
    private Vibrator myVibrator;
    private Context mContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //获得系统的Vibrator实例:
        myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
        mContext = MainActivity.this;
        bindViews();
    }

    private void bindViews() {
        btn_hasVibrator = (Button) findViewById(R.id.btn_hasVibrator);
        btn_short = (Button) findViewById(R.id.btn_short);
        btn_long = (Button) findViewById(R.id.btn_long);
        btn_rhythm = (Button) findViewById(R.id.btn_rhythm);
        btn_cancle = (Button) findViewById(R.id.btn_cancle);

        btn_hasVibrator.setOnClickListener(this);
        btn_short.setOnClickListener(this);
        btn_long.setOnClickListener(this);
        btn_rhythm.setOnClickListener(this);
        btn_cancle.setOnClickListener(this);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.btn_hasVibrator:
                Toast.makeText(mContext, myVibrator.hasVibrator() ? "当前设备有振动器" : "当前设备无振动器",
                        Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_short:
                myVibrator.cancel();
                myVibrator.vibrate(new long[]{100, 200, 100, 200}, 0);
                Toast.makeText(mContext, "短振动", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_long:
                myVibrator.cancel();
                myVibrator.vibrate(new long[]{100, 100, 100, 1000}, 0);
                Toast.makeText(mContext, "长振动", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_rhythm:
                myVibrator.cancel();
                myVibrator.vibrate(new long[]{500, 100, 500, 100, 500, 100}, 0);
                Toast.makeText(mContext, "节奏振动", Toast.LENGTH_SHORT).show();
                break;
            case R.id.btn_cancle:
                myVibrator.cancel();
                Toast.makeText(mContext, "取消振动", Toast.LENGTH_SHORT).show();
        }
    }
}

对了,别漏了振动器权限哦!

<uses-permission android:name="android.permission.VIBRATE"/>
Android中手机震动的设置(Vibrator)的步骤简要说明 Android中手机震动的设置(Vibrator)的步骤: a、通过系统服务获得手机震动服务,Vibrator vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE); b、得到震动服务后检测vibrator是否存在: vibrator.hasVibrator(); 检测当前硬件是否有vibrator,如果有返回true,如果没有返回false。 c、根据实际需要进行适当的调用, vibrator.vibrate(long milliseconds); 开始启动vibrator持续milliseconds毫秒。 vibrator.vibr 立即下载

相关推荐

新手如何结合pbootCMS和宝塔面板快速构建网站

摘要: 新手可通过pbootCMS(轻量CMS)和宝塔面板(可视化工具)快速搭建网站,无需命令行。步骤包括:1) 准备服务器(Linux/CentOS7.x)和域名;2) 安装宝塔面板并配置LNMP环境(PHP7.4+MySQL5.7);3) 创建网站目录,上传并解压pbootCMS源码,设置文件权限;4) 运行安装向导,填写数据库信息和管理员账号;5) 测试前台/后台功能,优化性能并绑定域名。全程约30-60分钟,宝塔简化运维,pbootCMS便于内容管理,适合零基础用户。注意定期更新和备份以保障安全。

qinzhenyan的博客 1642

Vibrator motor驱动

今天大体看了下Android的Motor驱动模块,这部分高通都做好了,拿来就用,基本不需要修改,所以一直没有看,有空看了下,特作记录。Vibrator是基于Linux的timed output驱动框架的,基本的结构就是timed_output_dev struct,其中涉及的知识还有定时器和消息队列。只介绍driver这一部分,更详细的内容可以搜索CONFIG_MSM_PMIC_VIBRATOR这

Bloom and Grow 5463

一种导弹追踪算法的MATLAB仿真实现

以下是一个用于模拟机动变轨导弹和防空导弹追踪过程的 MATLAB 代码,同时会提供 3D 效果展示。你可以运行这段代码,从而观察机动变轨导弹和防空导弹的速度与位置变化。

SmartGridequation的博客 933

android基础知识-Vibrator(振动器) 使用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayou

xiaojun11的专栏 9108

Ubuntu 20.04下Cube-Studio云原生平台单机部署全攻略(附避坑指南)

本文详细介绍了在Ubuntu 20.04系统上单机部署Cube-Studio云原生平台的完整流程,包括环境准备、Docker配置、Rancher与Kubernetes集群部署以及Cube-Studio核心组件安装。特别提供了官方文档未涵盖的实战技巧和常见问题解决方案,帮助开发者高效完成部署并避免常见陷阱。

weixin_29313423的博客 465

GPlates——【将化石点标记在古地理图上时,改变标记点的大小和形状】

GPlates在还原古地理图和计算古坐标点上功能十分卓越,最近在使用它标注某个类群的化石坐标点时,这些点在地图上显示得非常小,让人不易察觉。作为一款优秀的GUI应用,应该具备更改标记点外观的功能,然而在查阅了官方手册,pygplates API后,表明不管是桌面应用还是python接口,都无法简便地修改标记点的外观。在之前GPlates学习和最近的pygplates学习中,印象里有可以改变标记点外观的东西,叫做。当然,这又诱使我翻了一遍资料,然而又没有直接关于symbol的资料。

whitedrogen的博客 2542

android Vibrator开启振动功能

前言Android开启振动主要运用了Vibrator(振动器),系统中有一个Vibrator抽象类,我们可以通过获取Vibrator实例调用里面的方法来完成振动功能。Vibrator vibrator = (Vibrator) getSystemServic(Service.VIBRATOR_SERVICE); 方法和参数vibrator.vibrate(1000); //设置手机振动 vibra

Ruomiz的博客 6304

MacBook 本地化部署 Dify 指南

dify 怎么安装部署 有哪些坑 !

weixin_44542598的博客 1522

安卓调用震动之Vibrator

首先申请权限 <uses-permission android:name="android.permission.VIBRATE" /> 声明 private Vibrator vibrator; vibrator = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE); 震动:震动参数有两种,一种是节奏震动 long [] pattern = {600,300,600,300,600,300}; // 停止 开启 停.

u013868665的博客 1683

从苏宁电器到卡巴斯基(第二部)第14篇:我在卡巴的日子 XIV

目录 WannaCry 我的感慨 邻里矛盾 WannaCry 如果大家对于科技互联网圈子的新闻比较感兴趣的话,相信会对2017年5月的“WannaCry勒索病毒”事件记忆犹新,因为这个病毒在当时的全世界范围内掀起了极大的波澜,众多的企事业单位深受其害,造成的金钱和数据损失难以估量,从某种意义上来说,它甚至引领了勒索病毒新一轮的爆发浪潮。而通过这样的一次爆发,也让我对于卡巴斯基的技术实力有了更进一步的了解。 我记得很清楚,爆发的那天是周六,没记错的话Seth那天有事,就请假没来,只有我自己在公司值

Gleam的专栏 4919

【STM32Cube_14】使用硬件I2C读写环境光强度传感器(BH1750)

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外设读取环境光强度传感器数据(BH1750)

Mculover666的博客(嵌入式) 7242

从底层驱动 到上层APP的流程(1)

1. 如何在底层添加一个设备节点,并封装到JNI 供APP调用(framework servermanager&NDK) 以驱Camera旋转马达为例,Camera旋转马达的GPIO的拉高拉低与camera的上电下电一致,所以添加到camera的驱动下 暴露出接口给其他设备调用 EXPORT_SYMBOL(kdCISModulePowerOn);,驱动给出)

c_L_j_的博客 2815

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android 之 Vibrator (振动器)

对于Vibrator用的最广泛的莫过于所谓的手机按摩器类的app,在app市场一搜,一堆,笔者随便下了 几个下来瞅瞅,都是大同小异的,这点小玩意竟然有8W多的下载量...好吧,好像也不算多, 不过普遍功能都是切换振动频率来完成,而所谓的按摩效果,是否真的有效就不得而知了, 那么接下来我们就来实现一个简单的按摩器吧!比如前面我们的Notification中可以设置震动,当收到推送消息的时候我们可以设置震动 提醒,游戏必备,比如"打飞机"的游戏,当你的飞机给人打爆的时候,会长震动!

leyang0910的博客 2126

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

HarmonyOS之LED灯和振动器Vibrator的功能和使用

一、简介 ① 基本概念 控制类小器件指的是设备上的 LED 灯和振动器。其中,LED 灯主要用作指示(如充电状态)、闪烁功能(如三色灯)等;振动器主要用于闹钟、开关机振动、来电振动等场景。 控制类小器件主要包含以下四个模块:控制类小器件 API、控制类小器件Framework、控制类小器件 Service、HD_IDL 层。 控制类小器件 API:提供灯和振动器基础的 API,主要包含灯的列表查询、打开灯、关闭灯等接口,振动器的列表查询、振动器的振动器效果查询、触发/关闭振动器等接口。 控制类小器件

╰つ栺尖篴夢ゞ 7769

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android vibrator,Android入门教程之Vibrator(振动器)

前言:Vibrator简介:下面我们就来写个简单的例子,来熟悉下这个Vibrator的用法!1.获得Vibrator实例:Vibrator vb = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);2.可以使用的相关方法:1.stract void cancel():关闭或者停止振动器2.tract boolean hasVibrator(...

weixin_27437725的博客 4293

android开发笔记之多媒体—振动器(Vibrator)

振动器Vibrator 手机静音时使用振动提示用户,玩游戏,当系统碰撞,爆炸时使用振动带给用户更逼真的体验。 获取振动器Vibrator对象: getSystemService(Service.VIBRATOR_SERVICE)方法 使用三个简单的方法来控制手机振动: ...

chenghunpeng8091的博客 144

Andorid手机振动器(Vibrator)的使用

※下面的例子,在程序起动后等待3秒后,振动1秒,再等待2秒后,振动5秒,再等待3秒后,振动1秒。要传递2个参数的时候,第1个参数用来指定振动时间的样本,第2个参数用来指定是否需要循环。需要在AndroidManifest.xml里进行下类设定。振动时间的样本是指振动时间和等待时间的交互指定的数组。只有1个参数的时候,第一个参数用来指定振动的毫秒数。例程源码(Java)

lmrylll的博客 1213

Android振动器(Vibrator)

振动频率为 静止->振动->静止->振动->... ...的毫秒数;振动(参数为振动频率,循环次数;

m0_57150356的博客 861

Vibrator振动器

获取振动器Vibrator实例:  Vibrator  mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE); Vibrator.vibrate()方法: 只有1个参数的时候,第一个参数用来指定振动的毫秒数。 要传递2个参数的时候,第1个参数用来指定振动时间的样本,第2个参数用来指定是

u012410509的专栏 688

Android基础入门教程——10.4 Vibrator(振动器)

本节我们介绍的是Vibrator(振动器),是手机自带的振动器,别去百度直接搜针振动器,因为 你的搜索结果可能是如图所示的神秘的道具,或者其他神秘道具: 嗯,说回本节介绍的Vibrator,其实就是Android给我们提供的用于机身震动的一个服务! 比如前面我们的Notification中可以设置震动,当收到推送消息的时候我们可以设置震动 提醒,游戏必备,比如”打飞机”的游戏,当你的飞机给人打爆的时候,会

Coder-Pig的猪栏 3万+

android开发--振动器类Vibrator的使用

概述:Vibrator类用于运行设备的振动器,当进程

xidiankk的专栏 802

android手动调用振动器(Vibrator)

android手动调用振动器(Vibrator) Vibrator vv=(Vibrator) getApplication().getSystemService(Service.VIBRATOR_SERVICE); vv.vibrate(500);//震半秒钟 vv.vibrate(new long[]{10, 100, 20, 200}, -1); 关于vv.vibrat...

55

android的振动器Vibrator

Android 的振动器用起来很简单,但是网上搜不到,因为被禁止了,我靠     Java代码   Vibrator  vv=(Vibrator) getApplication().getSystemService(Service.VIBRATOR_SERVICE);

精益求精 764
上一篇: Chronometer(计时器)
下一篇: Date & Time组件(下)-DatePicker(日期选择器)
lenovo_2017
博客等级 码龄10年 3粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值