Vibrator振动器是Android给我们提供的用于机身震动的一个服务,例如当收到推送消息的时候我们可以设置震动提醒,也可以运用到游戏当中增强玩家互动性

  1.  

运行截图:

程序结构

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.example.administrator.myapplication">
  4. <application
  5. android:allowBackup="true"
  6. android:icon="@mipmap/ic_launcher"
  7. android:label="@string/app_name"
  8. android:roundIcon="@mipmap/ic_launcher_round"
  9. android:supportsRtl="true"
  10. android:theme="@style/AppTheme">
  11. <activity android:name=".MainActivity">
  12. <intent-filter>
  13. <action android:name="android.intent.action.MAIN" />
  14.  
  15. <category android:name="android.intent.category.LAUNCHER" />
  16. </intent-filter>
  17. </activity>
  18. </application>
  19.  
  20. <uses-permission android:name="android.permission.VIBRATE"/>
  21.  
  22. </manifest>

AndroidManifest.xml

  1. package com.example.administrator.myapplication;
  2.  
  3. import android.app.Service;
  4.  
  5. import android.content.Context;
  6.  
  7. import android.os.Vibrator;
  8. import android.support.v7.app.AppCompatActivity;
  9. import android.os.Bundle;
  10.  
  11. import android.view.View;
  12. import android.widget.Button;
  13.  
  14. import android.widget.Toast;
  15.  
  16. public class MainActivity extends AppCompatActivity implements View.OnClickListener{
  17.  
  18. private Button btn_hasVibrator;
  19. private Button btn_short;
  20. private Button btn_long;
  21. private Button btn_rhythm;
  22. private Button btn_cancle;
  23. private Vibrator myVibrator;
  24. private Context mContext;
  25.  
  26. @Override
  27. protected void onCreate(Bundle savedInstanceState) {
  28. super.onCreate(savedInstanceState);
  29. setContentView(R.layout.activity_main);
  30. //获得系统的Vibrator实例:
  31. myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
  32. mContext = MainActivity.this;
  33. bindViews();
  34. }
  35.  
  36. private void bindViews() {
  37. btn_hasVibrator = (Button) findViewById(R.id.btn_hasVibrator);
  38. btn_short = (Button) findViewById(R.id.btn_short);
  39. btn_long = (Button) findViewById(R.id.btn_long);
  40. btn_rhythm = (Button) findViewById(R.id.btn_rhythm);
  41. btn_cancle = (Button) findViewById(R.id.btn_cancle);
  42.  
  43. btn_hasVibrator.setOnClickListener(this);
  44. btn_short.setOnClickListener(this);
  45. btn_long.setOnClickListener(this);
  46. btn_rhythm.setOnClickListener(this);
  47. btn_cancle.setOnClickListener(this);
  48. }
  49.  
  50. @Override
  51. public void onClick(View v) {
  52. switch (v.getId()) {
  53. case R.id.btn_hasVibrator:
  54. Toast.makeText(mContext, myVibrator.hasVibrator() ? "当前设备有振动器" : "当前设备无振动器",
  55. Toast.LENGTH_SHORT).show();
  56. break;
  57. case R.id.btn_short:
  58. myVibrator.cancel();
  59. myVibrator.vibrate(new long[]{100, 200, 100, 200}, 0);
  60. Toast.makeText(mContext, "短振动", Toast.LENGTH_SHORT).show();
  61. break;
  62. case R.id.btn_long:
  63. myVibrator.cancel();
  64. myVibrator.vibrate(new long[]{100, 100, 100, 1000}, 0);
  65. Toast.makeText(mContext, "长振动", Toast.LENGTH_SHORT).show();
  66. break;
  67. case R.id.btn_rhythm:
  68. myVibrator.cancel();
  69. myVibrator.vibrate(new long[]{500, 100, 500, 100, 500, 100}, 0);
  70. Toast.makeText(mContext, "节奏振动", Toast.LENGTH_SHORT).show();
  71. break;
  72. case R.id.btn_cancle:
  73. myVibrator.cancel();
  74. Toast.makeText(mContext, "取消振动", Toast.LENGTH_SHORT).show();
  75. }
  76. }
  77. }

MainActivity

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context="com.example.administrator.myapplication.MainActivity"
  9. android:weightSum="1">
  10.  
  11. <Button
  12. android:id="@+id/btn_hasVibrator"
  13. android:layout_width="match_parent"
  14. android:layout_height="wrap_content"
  15. android:text="监测手机是否有振动器" />
  16.  
  17. <Button
  18. android:id="@+id/btn_short"
  19. android:layout_width="match_parent"
  20. android:layout_height="wrap_content"
  21. android:text="短振动" />
  22.  
  23. <Button
  24. android:id="@+id/btn_long"
  25. android:layout_width="match_parent"
  26. android:layout_height="wrap_content"
  27. android:text="长振动" />
  28.  
  29. <Button
  30. android:id="@+id/btn_rhythm"
  31. android:layout_width="match_parent"
  32. android:layout_height="wrap_content"
  33. android:text="节奏振动" />
  34.  
  35. <Button
  36. android:id="@+id/btn_cancle"
  37. android:layout_width="match_parent"
  38. android:layout_height="wrap_content"
  39. android:text="取消振动" />
  40.  
  41. </LinearLayout>

activity_main.xml

一、获得系统的Vibrator

  1. myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
  2. mContext = MainActivity.this;

二、判断并设置频率不同的震动器

 

  1. abstract void cancel():关闭或者停止振动器
  2.  
  3. abstract boolean hasVibrator():判断硬件是否有振动器
  4.  
  5. void vibrate(long milliseconds):控制手机振动为milliseconds毫秒
  1. void vibrate(long[] pattern,int repeat):指定手机以pattern指定的模式振动
  2.  
  3. 第一个参数:new int[200,400,600,800],在200,400,600,800这个时间交替启动与关闭振动器
    第二个参数:重复次数,如果是-1的只振动一次,如果是0的话则一直振动
  1. public void onClick(View v) {
  2. switch (v.getId()) {
  3. case R.id.btn_hasVibrator:
  4. Toast.makeText(mContext, myVibrator.hasVibrator() ? "当前设备有振动器" : "当前设备无振动器",
  5. Toast.LENGTH_SHORT).show();
  6. break;
  7. case R.id.btn_short:
  8. myVibrator.cancel();
  9. myVibrator.vibrate(new long[]{100, 200, 100, 200}, 0);
  10. Toast.makeText(mContext, "短振动", Toast.LENGTH_SHORT).show();
  11. break;
  12. case R.id.btn_long:
  13. myVibrator.cancel();
  14. myVibrator.vibrate(new long[]{100, 100, 100, 1000}, 0);
  15. Toast.makeText(mContext, "长振动", Toast.LENGTH_SHORT).show();
  16. break;
  17. case R.id.btn_rhythm:
  18. myVibrator.cancel();
  19. myVibrator.vibrate(new long[]{500, 100, 500, 100, 500, 100}, 0);
  20. Toast.makeText(mContext, "节奏振动", Toast.LENGTH_SHORT).show();
  21. break;
  22. case R.id.btn_cancle:
  23. myVibrator.cancel();
  24. Toast.makeText(mContext, "取消振动", Toast.LENGTH_SHORT).show();
  25. }
  26. }

三、开启系统权限

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

Android_(服务)Vibrator振动器的更多相关文章

  1. Android该系统提供的服务--Vibrator(振子)

    Android该系统提供的服务--Vibrator(振子) --转载请注明出处:coder-pig Vibrator简单介绍与相关方法: watermark/2/text/aHR0cDovL2Jsb2 ...

  2. Android中振动器(Vibrator)的使用

    系统获取Vibrator也是调用Context的getSystemService方法,接下来就可以调用Vibrator的方法控制手机振动了.Vibrator只有三个方法控制手机振动: 1.vibrat ...

  3. 振动器(Vibrator)

    package com.wwj.serviceandboardcast;   import android.app.Activity; import android.app.Service; impo ...

  4. Android 振动器

    今天介绍一下Android的振动器Vibrator,有三个方法来控制手机振动: 1.void vibrate(long milliseconds):控制手机振动milliseconds毫秒. 2.vo ...

  5. Android菜鸟的成长笔记(24)——Android中的振动器

    在某些时候,程序需要启动系统振动器,比如手机静音时使用振动提示用户:再比如玩游戏时,当系统碰撞.爆炸时使用振动带给用户更逼真的体验等.总之,振动是除视频.声音之外的另一种"多媒体" ...

  6. Android的几种Manager

    电话管理器TelephoneManager 第一个实例是获取网络和SIM卡信息:界面是一个列表,这里省略,Java代码如下: public class MainActivity extends Act ...

  7. Micro:Bit手柄试用之一MagicPad (解决蓝牙与gamePad包共存)

    前言 原创文章,转载引用务必注明链接.由于本人初次接触Micro:Bit,水平有限,如有疏漏,欢迎指正. Micro:Bit真好玩! DFRobot的论坛相关资料算是国内比较丰富的了,个人感觉MB比A ...

  8. 利用传感器(sensor)实现微信摇一摇动画

    所需要的权限: <uses-permission android:name="android.permission.VIBRATE"></uses-permiss ...

  9. 玩转Android之加速度传感器的使用,模仿微信摇一摇

    Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇 ...

随机推荐

  1. 04: gitlab安装与使用

    1.1 gitlab安装(192.168.56.12中安装) 1.GitLab是什么? 1. GitLab实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 2. GitLa ...

  2. GoAccess安装

    编译安装 yum install geoip-devel openssl-devel libmaxminddb-devel ncurses-devel bzip2-devel tokyocabinet ...

  3. 剑指offer-数组中重复的数字-数组-python

    题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...

  4. bzoj 3837 pa2013 Filary

    bzoj 先搞第一问.考虑简单情况,如果\(m=2\),那么一定有个剩余类大小\(\ge \lceil\frac{n}{2}\rceil\),同时这也是答案下界 然后我们每次随机选出一个数\(a_i\ ...

  5. 11 Mysql之配置双主热备+keeepalived.md

    准备 1. 双主 master1 192.168.199.49 master2 192.168.199.50 VIP 192.168.199.52 //虚拟IP 2.环境 master:nginx + ...

  6. 用原生js来写一个swiper滑块插件

        是不是有点印象了,没错,他的最基本的用法就是左右滑动,插件使用者只需要写几行简单的html和js即可实现一个简单滑动效果,不过你完全可以组合各种元素来适应不同的场景. 当然插件我已经写好了,咱 ...

  7. FastDFS整合Nginx的模块:fastdfs-nginx-module报错:fdfs_define.h:15:27: 致命错误:common_define.h:没有那个文件或目录

    错误提示: /usr/include/fastdfs/fdfs_define.h:15:27: 致命错误:common_define.h:没有那个文件或目录 [解决办法] 1.编辑fastdfs-ng ...

  8. Tomcat配置JNDI

    JNDI是什么?使用JNDI有什么好处? JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一. 我个人对j ...

  9. Get To Know Linux: The /etc/init.d Directory

    If you use Linux you most likely have heard of the init.d directory. But what exactly does this dire ...

  10. PHP强制修改返回的状态码

    在最后的程序执行完毕之前,加入下列语句,即可实现所有的返回码都为200即使在服务器内部发生错误,会报500情况下只要加上register_shutdown_function函数的处理同样可以实现返回2 ...