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 立即下载

相关推荐

ArcGIS拓扑面错误批量修改

在工作学习中经常会遇到拓扑修改的问题,当数据量巨大的时候会产生拓扑问题 当拓扑错误数量巨大时,人工逐一修改是不现实的,基于此利用gis自带工具箱实现拓扑面类错误的批量修改。 一、.常见拓扑错误的类型: 1面重叠 2空隙(绿色部分) 二、拓扑检查 1新建数据库-----新建数据集—导入数据. 2新建拓扑 3修改拓扑容差及名称 添加拓扑修改规则 完成拓扑检查-查看拓扑错误 三、拓扑批量...

qq_43173805的博客 3万+

Vibrator motor驱动

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

Bloom and Grow 5463

vivado Block Design 设计 .tcl 文件使用,导出,修改,添加方式

在vivado中生成 Block Design可以导出tcl文件进行保存(体积小),或者在别的版本vivado中打开(版本互通),这是一个非常好的功能。另外GitHub中很多项目都是采用这种方式上传的,学会如何使用可以快速修改历程项目。

2203_75345038的博客 2494

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

别让运放自激振荡!手把手教你用波特图分析反相放大电路的稳定性(附LTspice仿真)

本文详细解析了运算放大器在反相放大电路中的稳定性问题,通过波特图分析和LTspice仿真,揭示了自激振荡的成因及解决方案。文章从故障现象识别到数学工具应用,再到实战仿真和工程优化,提供了一套完整的稳定性分析工具链,帮助工程师有效避免运放自激振荡问题。

weixin_31682031的博客 303

眼动数据分析基础_AOI分析动态刺激物

如果您正在研究人们对如视频、动画等动态刺激物的视觉行为,动态AOI工具可为您提供类似静态AOI工具对于图片及其他静止刺激物分析的同样功能。创建和编辑动态AOI的过程和静态AOI相似。 关于动态AOI工具的使用,有几点非常重要: 多个看到相同线性动态刺激物的用户的眼动数据叠加是有价值的; 动态AOI不能用于非线性动态记录的分析; 动态AOI不能用于静态刺激物,如图片的分析; 动态AOI可以被开启、关闭、移动、调整大小及跟踪相关分析对象 首先,我们来定义两种不同的动态刺激物:线性动态刺激物(LDS),是指固

Kobe123brant的博客 3502

android Vibrator开启振动功能

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

Ruomiz的博客 6304

yolo自动化项目实例解析(九) 导航

比如我们经常使用的导航,说白了就是寻找两点之间最近的路径,也就是所谓的寻路,我们需要想办法让程序知道他要去哪里,路径包含(起点、轨迹、路径)

默子昂 1996

安卓调用震动之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

复现Fastjson反序列化漏洞(从dnslog回显到rce再到反弹shell)

Fastjson是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。......

记录并分享学习安全的知识点.. 2697

Linux驱动学习--HCI框架及源码分析

目录 一、引言 二、HCI框架 三、pcm_read简要分析 一、引言 最近一直在分析蓝牙驱动,发现在底层驱动与上层协议栈间还有一层HCI,主机控制层,两者之间通过HCI协议通讯 而Linux也将HCI协议抽象层了一个框架。 为上层提供一个统一的接口,让上层协议不依赖于具体硬件的实现。HCI在硬件中的固件与HCI在主机端的驱动通信方式有多种,比如像 UART、USB和PC Card等等。hci_core.c相当于一个框架,用于把各种具体通信方式绞合起来,并提供一些公共函数的实现。 今天就来简单的分析一下 二

文艺小少年的博客 2002

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

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

c_L_j_的博客 2815

【WRF-UCM】BEP+BEM 模拟:README

【WRF-UCM】BEP+BEM 模拟:README

WW、forever的博客 223

Android 之 Vibrator (振动器)

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

leyang0910的博客 2126

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

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

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

╰つ栺尖篴夢ゞ 7769

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

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、付费专栏及课程。

余额充值