Android_(服务)Vibrator振动器
Vibrator振动器是Android给我们提供的用于机身震动的一个服务,例如当收到推送消息的时候我们可以设置震动提醒,也可以运用到游戏当中增强玩家互动性
运行截图:
程序结构
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.example.administrator.myapplication">
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:roundIcon="@mipmap/ic_launcher_round"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-permission android:name="android.permission.VIBRATE"/>
- </manifest>
AndroidManifest.xml
- package com.example.administrator.myapplication;
- import android.app.Service;
- import android.content.Context;
- import android.os.Vibrator;
- import android.support.v7.app.AppCompatActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.Button;
- import android.widget.Toast;
- 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();
- }
- }
- }
MainActivity
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context="com.example.administrator.myapplication.MainActivity"
- android:weightSum="1">
- <Button
- android:id="@+id/btn_hasVibrator"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="监测手机是否有振动器" />
- <Button
- android:id="@+id/btn_short"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="短振动" />
- <Button
- android:id="@+id/btn_long"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="长振动" />
- <Button
- android:id="@+id/btn_rhythm"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="节奏振动" />
- <Button
- android:id="@+id/btn_cancle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="取消振动" />
- </LinearLayout>
activity_main.xml
一、获得系统的Vibrator
- myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
- mContext = MainActivity.this;
二、判断并设置频率不同的震动器
- abstract void cancel():关闭或者停止振动器
- abstract boolean hasVibrator():判断硬件是否有振动器
- void vibrate(long milliseconds):控制手机振动为milliseconds毫秒
- void vibrate(long[] pattern,int repeat):指定手机以pattern指定的模式振动
- 第一个参数:new int[200,400,600,800],在200,400,600,800这个时间交替启动与关闭振动器
第二个参数:重复次数,如果是-1的只振动一次,如果是0的话则一直振动
- 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(振子)
Android该系统提供的服务--Vibrator(振子) --转载请注明出处:coder-pig Vibrator简单介绍与相关方法: watermark/2/text/aHR0cDovL2Jsb2 ...
- Android中振动器(Vibrator)的使用
系统获取Vibrator也是调用Context的getSystemService方法,接下来就可以调用Vibrator的方法控制手机振动了.Vibrator只有三个方法控制手机振动: 1.vibrat ...
- 振动器(Vibrator)
package com.wwj.serviceandboardcast; import android.app.Activity; import android.app.Service; impo ...
- Android 振动器
今天介绍一下Android的振动器Vibrator,有三个方法来控制手机振动: 1.void vibrate(long milliseconds):控制手机振动milliseconds毫秒. 2.vo ...
- Android菜鸟的成长笔记(24)——Android中的振动器
在某些时候,程序需要启动系统振动器,比如手机静音时使用振动提示用户:再比如玩游戏时,当系统碰撞.爆炸时使用振动带给用户更逼真的体验等.总之,振动是除视频.声音之外的另一种"多媒体" ...
- Android的几种Manager
电话管理器TelephoneManager 第一个实例是获取网络和SIM卡信息:界面是一个列表,这里省略,Java代码如下: public class MainActivity extends Act ...
- Micro:Bit手柄试用之一MagicPad (解决蓝牙与gamePad包共存)
前言 原创文章,转载引用务必注明链接.由于本人初次接触Micro:Bit,水平有限,如有疏漏,欢迎指正. Micro:Bit真好玩! DFRobot的论坛相关资料算是国内比较丰富的了,个人感觉MB比A ...
- 利用传感器(sensor)实现微信摇一摇动画
所需要的权限: <uses-permission android:name="android.permission.VIBRATE"></uses-permiss ...
- 玩转Android之加速度传感器的使用,模仿微信摇一摇
Android系统带的传感器有很多种,最常见的莫过于微信的摇一摇了,那么今天我们就来看看Anroid中传感器的使用,做一个类似于微信摇一摇的效果. OK ,废话不多说,我们就先来看看效果图吧: 当我摇 ...
随机推荐
- 04: gitlab安装与使用
1.1 gitlab安装(192.168.56.12中安装) 1.GitLab是什么? 1. GitLab实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. 2. GitLa ...
- GoAccess安装
编译安装 yum install geoip-devel openssl-devel libmaxminddb-devel ncurses-devel bzip2-devel tokyocabinet ...
- 剑指offer-数组中重复的数字-数组-python
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- bzoj 3837 pa2013 Filary
bzoj 先搞第一问.考虑简单情况,如果\(m=2\),那么一定有个剩余类大小\(\ge \lceil\frac{n}{2}\rceil\),同时这也是答案下界 然后我们每次随机选出一个数\(a_i\ ...
- 11 Mysql之配置双主热备+keeepalived.md
准备 1. 双主 master1 192.168.199.49 master2 192.168.199.50 VIP 192.168.199.52 //虚拟IP 2.环境 master:nginx + ...
- 用原生js来写一个swiper滑块插件
是不是有点印象了,没错,他的最基本的用法就是左右滑动,插件使用者只需要写几行简单的html和js即可实现一个简单滑动效果,不过你完全可以组合各种元素来适应不同的场景. 当然插件我已经写好了,咱 ...
- 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 ...
- Tomcat配置JNDI
JNDI是什么?使用JNDI有什么好处? JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一. 我个人对j ...
- 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 ...
- PHP强制修改返回的状态码
在最后的程序执行完毕之前,加入下列语句,即可实现所有的返回码都为200即使在服务器内部发生错误,会报500情况下只要加上register_shutdown_function函数的处理同样可以实现返回2 ...