Vibrator控制手机震动
Vibrator控制手机震动
效果图
源码
下载地址(Android Studio工程):http://download.csdn.net/detail/q4878802/9049755
添加权限
<!-- 震动的权限 -->
<uses-permission  android:name="android.permission.VIBRATE" />工具类
package com.kongqw.kqwvibrator.engine;
import android.content.Context;
import android.os.Vibrator;
/**
 * Created by kongqw on 2015/8/26.
 */
public class KqwVibrator {
    private static KqwVibrator mKqwVibrator;
    private Context mContext;
    private Vibrator mVibrator;
    private KqwVibrator(Context context) {
        mContext = context;
        // 初始化振动器对象
        mVibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
    }
    public static KqwVibrator getInstance(Context context) {
        if (null == mKqwVibrator) {
            mKqwVibrator = new KqwVibrator(context);
        }
        return mKqwVibrator;
    }
    /**
     * 开始震动
     *
     * @param time 震动时间 毫秒
     */
    public void vibrate(long time) {
        mVibrator.vibrate(time);
    }
    /**
     * 取消震动
     */
    public void cancle() {
        mVibrator.cancel();
    }
    /**
     * 重复震动
     */
    public void repeatVibrate() {
        //等待1秒,震动2秒,等待1秒,震动3秒
        long[] pattern = {1000, 2000, 1000, 3000};
        //-1表示不重复, 如果不是-1, 比如改成1, 表示从前面这个long数组的下标为1的元素开始重复.
        mVibrator.vibrate(pattern, -1);
    }
}测试类
package com.kongqw.kqwvibrator;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import com.kongqw.kqwvibrator.engine.KqwVibrator;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    /**
     * 开始震动500毫秒
     *
     * @param view
     */
    public void button1(View view) {
        KqwVibrator.getInstance(this).vibrate(500);
    }
    /**
     * 重复震动
     *
     * @param view
     */
    public void button2(View view) {
        KqwVibrator.getInstance(this).repeatVibrate();
    }
    /**
     * 停止震动
     *
     * @param view
     */
    public void button3(View view) {
        KqwVibrator.getInstance(this).cancle();
    }
}页面布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:onClick="button1"
        android:text="开始震动500毫秒" />
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:onClick="button2"
        android:text="重复震动" />
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_below="@+id/button2"
        android:onClick="button3"
        android:text="停止震动" />
</RelativeLayout>说明
mVibrator.vibrate(pattern, -1);这个是一个间歇性震动的方法,第一个参数是一个long类型的数组(毫秒),单数(双数角标)为等待时间,双数(单数角标)为震动时间。
例:
//等待1秒,震动2秒,等待1秒,震动3秒
long[] pattern = {1000, 2000, 1000, 3000};第二个参数是循环的参数,是几就表示下次从第几个角标开始循环,-1表示不循环。
父类方法
/**
 * Vibrate with a given pattern.
 *
 * <p>
 * Pass in an array of ints that are the durations for which to turn on or off
 * the vibrator in milliseconds.  The first value indicates the number of milliseconds
 * to wait before turning the vibrator on.  The next value indicates the number of milliseconds
 * for which to keep the vibrator on before turning it off.  Subsequent values alternate
 * between durations in milliseconds to turn the vibrator off or to turn the vibrator on.
 * </p><p>
 * To cause the pattern to repeat, pass the index into the pattern array at which
 * to start the repeat, or -1 to disable repeating.
 * </p>
 * <p>This method requires the caller to hold the permission
 * {@link android.Manifest.permission#VIBRATE}.
 *
 * @param pattern an array of longs of times for which to turn the vibrator on or off.
 * @param repeat the index into pattern at which to repeat, or -1 if
 *        you don't want to repeat.
 */
public void vibrate(long[] pattern, int repeat) {
    vibrate(pattern, repeat, null);
}
/**
 * Vibrate with a given pattern.
 *
 * <p>
 * Pass in an array of ints that are the durations for which to turn on or off
 * the vibrator in milliseconds.  The first value indicates the number of milliseconds
 * to wait before turning the vibrator on.  The next value indicates the number of milliseconds
 * for which to keep the vibrator on before turning it off.  Subsequent values alternate
 * between durations in milliseconds to turn the vibrator off or to turn the vibrator on.
 * </p><p>
 * To cause the pattern to repeat, pass the index into the pattern array at which
 * to start the repeat, or -1 to disable repeating.
 * </p>
 * <p>This method requires the caller to hold the permission
 * {@link android.Manifest.permission#VIBRATE}.
 *
 * @param pattern an array of longs of times for which to turn the vibrator on or off.
 * @param repeat the index into pattern at which to repeat, or -1 if
 *        you don't want to repeat.
 * @param attributes {@link AudioAttributes} corresponding to the vibration. For example,
 *        specify {@link AudioAttributes#USAGE_ALARM} for alarm vibrations or
 *        {@link AudioAttributes#USAGE_NOTIFICATION_RINGTONE} for
 *        vibrations associated with incoming calls.
 */
public void vibrate(long[] pattern, int repeat, AudioAttributes attributes) {
    vibrate(Process.myUid(), mPackageName, pattern, repeat, attributes);
}Vibrator控制手机震动的更多相关文章
- js控制手机震动
		js控制手机震动 <button onclick="vibrate()">震动</button> <script> function vibra ... 
- 使用Vibrator控制手机振动
		import android.os.Bundle;import android.os.Vibrator;import android.app.Activity;import android.app.S ... 
- Java-Android【1】-控制手机震动
		一.配置震动授权 1.在AndroidManifest.xml文件中添加<manifest></manifest>中添加一行 <uses-permission andro ... 
- cocos2d-x3.2中加入Android手机震动
		本人宣布从此博文发出后,我的cocos2dx的引擎从cocos2dx3.1.1跳到cocos2dx3.2,哈哈,事实上变化不大的,不碍事~~~ 以下来说说在cocos中加入Android手机震动的功能 ... 
- [android] 手机卫士输入框抖动和手机震动
		查看apiDemos,找到View/Animation/shake找到对应的动画代码,直接拷贝过来 当导入一个项目的时候,报R文件不存在,很多情况是xml文件出错了 Animation shake = ... 
- 【Android】Android如何实现手机震动
		实现手机震动其实很简单,手机震动使用是Vibrator类,然后震动也是需要权限的,在使用之前在AndroidManifest.xml文件中添加 <uses-permission android: ... 
- Android 手机震动 设置震动时间
		开启震动,单次,5秒: Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); //震动5秒 vibrator.vibra ... 
- 在Airtest中如何使用无线模式控制手机
		在使用Airtest超快速开发App爬虫文章的最后,我们留了一个尾巴:如何启动Airtest的无线模式,不用USB线就能控制手机? 本文将会讲到具体的做法.做法分为两种:第一种是在Airtest的ID ... 
- JS 判断浏览器类型,获取位置信息,让手机震动
		判断是否是安卓 var isAndroid = /Android/i.test(navigator.userAgent); 判断是否是IOS系统 var isIOS = /iPhone|iPad|iP ... 
随机推荐
- python学习记录2
			一.两个模块(sys和os) #!/usr/bin/env python # _*_ coding: UTF-8 _*_ # Author:taoke import sys print(sys.pat ... 
- OC/Swift/C/C++混合使用的编程姿势
			一,OC调用C语言方法 1.OC中的.m文件对C语言完全兼容,可以直接导入C头文件,进行使用 2.定义一个.c的C语言文件,在.m文件中导入,就可以使用. 二,OC调用C++语言方法 1.需要将. ... 
- [AHOI2012]树屋阶梯
			题目描述 输入输出格式 输入格式: 一个正整数N(1<=N<=500),表示阶梯的高度. 输出格式: 一个正整数,表示搭建方法的个数.(注:搭建方法的个数可能很大) 输入输出样例 输入样例 ... 
- [Ioi2011]ricehub
			Description 乡间有一条笔直而长的路称为“米道”.沿着这条米道上 R 块稻田,每块稻田的坐标均 为一个 1 到 L 之间(含 1 和 L)的整数.这些稻田按照坐标以不减的顺序给出,即对于 0 ... 
- 计蒜客 NOIP模拟赛(3) D1T1火山喷发
			火山喷发对所有附近的生物具有毁灭性的影响.在本题中,我们希望用数值来模拟这一过程. 在环境里有 nnn 个生物分别具有 A1,A2,⋯,An点生命值,一次火山喷发总计 M轮,每轮造成 1点伤害,等 ... 
- SpringBoot学习之基础篇
			在前面的博文中,已经演示过springboot与Mybatis集成的实例,本篇再来探讨一下SpringBoot的基础. 一.关于SpringBoot SpringBoot可以基于Spring轻松创建 ... 
- Amazon新一代云端关系数据库Aurora(上)
			本文由 网易云发布. 在2017年5月芝加哥举办的世界顶级数据库会议SIGMOD/PODS上,作为全球最大的公有云服务提供商,Amazon首次系统的总结 了新一代云端关系数据库Aurora的设计实现 ... 
- mac下IDLE无法输入中文的问题
			解决方法是下载安装新版本的 Tcl/Tk 下载地址:http://www.activestate.com/activetcl/downloads 注意要下最新的8.5.18.0版本,安装好了再重启ID ... 
- JS多个对象添加到一个对象中
			var obj1 = {"qq":10}; var obj2={"mm":2,"nn":3}; var obj3={"xx&quo ... 
- 将一个div置于另一个div之上
			div piao置于div bg之上 <div class="bg"> <div class="piao" style="backg ... 
