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

前言:

Vibrator简介:

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

1.获得Vibrator实例:

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

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

1.stract void cancel():关闭或者停止振动器

2.tract boolean hasVibrator():判断硬件是否有振动器

3.id vibrate(long milliseconds):控制手机振动为milliseconds毫秒

4.id 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"/>

小结:

好了,本文我们学习了Vibrator(振动器)的基本使用,代码非常简单,还不赶紧加入到 你的APP中,让你的应用HI起来~

(0)

相关推荐

  • Android实现手机震动效果

    本文实例介绍了Android实现手机震动.抖动效果,分享给大家供大家参考,具体内容如下 (1)布局文件如下 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:la

  • Android实现调用震动的方法

    本文实例讲述了Android实现调用震动的方法.分享给大家供大家参考,具体如下: 调用Android系统的震动,只需要一个类 那就是Vibrator ,这个类在hard包中,一看系统级的服务,又要通过manifest.xml文件设置权限了 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/an

  • Android 如何定制vibrator的各种震动模式M 具体方法

    一般振动时间的配置在如下文件: 复制代码 代码如下: frameworks/base/core/res/res/values/config.xml    <!-- 长按振动 -->    <!-- Vibrator pattern for feedback about a long screen/key press -->    <integer-array name="config_longPressVibePattern">        <

  • Android中手机震动的设置(Vibrator)的步骤简要说明

    Android中手机震动的设置(Vibrator)的步骤: a.通过系统服务获得手机震动服务,Vibrator vibrator = (Vibrator)getSystemService(VIBRATOR_SERVICE); b.得到震动服务后检测vibrator是否存在: vibrator.hasVibrator(); 检测当前硬件是否有vibrator,如果有返回true,如果没有返回false. c.根据实际需要进行适当的调用, vibrator.vibrate(long millisec

  • Android Vibrator调节震动代码实例

    使用Vibrator的vibrate()可调节震动时间:cancel()取消震动. 复制代码 代码如下: <!-震动权限--> <uses-permission android:name="android.permission.VIBRATE"/> //振动器实例化 private Vibrator mVibrator1; mVibrator1=(Vibrator) getApplication().getSystemService(Service.VIBRAT

  • 浅析Android手机卫士之抖动输入框和手机震动

    查看apiDemos,找到View/Animation/shake找到对应的动画代码,直接拷贝过来 当导入一个项目的时候,报R文件不存在,很多情况是xml文件出错了 Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake); et_phone.startAnimation(shake); 动画的xml文件shake.xml android:interpolator="@anim/cycle_7" interpo

  • Android登陆界面实现清除输入框内容和震动效果

    本文为大家分享Android登陆界面实现清除输入框内容和震动效果的全部代码,具体内容如下: 效果图: 主要代码如下 自定义的一个EditText,用于实现有文字的时候显示可以清楚的按钮: import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextWatcher; import android.uti

  • android滑动解锁震动效果的开启和取消

    如果我们需要根据设置中的触摸震动开关来开启和取消滑动解锁的震动效果,就需要做以下修改了. 在LockScreen.java类中的LockScreen方法中的 复制代码 代码如下: else if (mUnlockWidget instanceof MultiWaveView) {            MultiWaveView multiWaveView = (MultiWaveView) mUnlockWidget; multiWaveView.setVibrateEnabled(Setti

  • Android入门教程之Vibrator(振动器)

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

  • Android入门教程之ListView的具体使用详解

    目录 ListView 的简单用法 定制 ListView 的界面 提升 ListView 的运行效率 ListView 的点击事件 ListView 的简单用法 在布局中加入 ListView 控件还算简单,先为 ListView 指定一个 id,然后将宽度和高度都设置为 match_parent,这样 ListView 就占满了整个布局的空间 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&

  • Android入门教程之RecyclerView的具体使用详解

    目录 RecyclerView 的基本用法 横向滚动 RecyclerView 点击事件 RecyclerView 的基本用法 和我们之前学习的控件不一样,RecyclerView 属于新增控件,所以我们需要在项目的 build.gradle 中添加 RecyclerView 库的依赖,才能使用该控件 dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementa

  • Android入门教程之Fragment的具体使用详解

    目录 Fragment 的简单用法 动态加载 Fragment Fragment 实现返回栈 Fragment 和 Activity 之间的交互 Fragment 生命周期 Fragment 的简单用法 Fragment 是一种可以嵌入在 Activity 当中的 UI 片段,它能让程序更加合理和充分地利用大屏幕的空间,因此在平板上应用非常广泛 在一个 Activity 中添加两个 Fragment,并让两个 Fragment 平分 Activity 的空间,首先新建一个左侧 Fragment

  • Android入门教程之ListView的应用示例

    本文实例讲述了Android ListView的简单应用.分享给大家供大家参考,具体如下: 我们今天要讲的内容是Android中ListView中的实现.一共分为四个步骤,我将一一讲解: Step one:创建一个新的Android工程,命名为ListViewDemo. Step two:找到ListViewDemo.Java,把我们习惯的继承Activity,改成ListActivity,如下: public class ListViewDemo extends ListActivity St

  • Android入门教程之Picasso框架

    一.简介: Picasso是Square公司开源的一个Android图形缓存库.可以实现图片下载和缓存功能. 二.Picasso的特性 Picasso是一个Android图片加载缓存框架,它具有如下特性: 1.支持任务优先级,会优先加载"优先级"较高的图片. 2.带有统计监控功能,可以统计缓存命中率,实时监控已使用的内存等等. 3.能够根据当前网络状态自动调整并发线程数. 4.支持图片的延迟加载. 5.本身不具有本地缓存,而是使用的OkHttp实现. Picasso除了使用上比较简单.

  • Android开发教程之Fragment定义、创建与使用方法详解【包含Activity通讯,事务执行等】

    本文实例讲述了Android开发教程之Fragment定义.创建与使用方法.分享给大家供大家参考,具体如下: 概述 Fragment是activity的界面中的一部分或一种行为.你可以把多个Fragment们组合到一个activity中来创建一个多面界面并且你可以在多个activity中重用一个Fragment.你可以把Fragment认为模块化的一段activity,它具有自己的生命周期,接收它自己的事件,并可以在activity运行时被添加或删除. Fragment不能独立存在,它必须嵌入到

  • AngularJS入门教程之AngularJS表达式

    表达式用于应用程序数据绑定到HTML.表达式都写在双括号就像{{表达式}}.表达式中的行为跟ng-bind指令方式相同. AngularJS应用表达式是纯javascript表达式,并输出它们被使用的数据在那里. AngularJS表达式格式 : {{expression }} AngularJS表达式可以是字符串.数字.运算符和变量 数字运算{{1 + 5}} 字符串连接{{ 'abc' + 'bcd' }} 变量运算 {{ firstName + " " + lastName }}

  • AngularJS入门教程之Helloworld示例

    本文实例讲述了AngularJS入门教程之Helloworld示例.分享给大家供大家参考,具体如下: 什么是AngularJs? angularjs是一个为动态WEB应用设计的结构框架.它能让你使用HTML作为模板语言,通过扩展HTML的语法,让你能更清楚.简洁地构建你的应用组件.它的创新点在于,利用数据绑定和依赖注入,它使你不用再写大量的代码了.这些全都通过浏览器端的javascript实现,这也使得它能够完美地和任何服务器技术结合. AngularJS简单的Helloworld例子: <!D

  • AngularJS入门教程之AngularJS模型

    相关阅读: AngularJS入门教程之AngularJS表达式 AngularJS入门教程之AngularJS指令 在前面表达式和指令的教程中了解到,AngularJS模型(ng-model)可以将HTML输入域中的值与AngularJS创建的变量绑定. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="http://apps.bdimg.

随机推荐