1. 之前我编写的代码是如下:

 package com.himi.vibrate;

 import android.app.Activity;
import android.app.Service;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener {
private Button btnLow;
private Button btnNormal;
private Button btnFast; Vibrator vibrator; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE); btnLow = (Button) findViewById(R.id.btnlow);
btnNormal = (Button) findViewById(R.id.btnnormal);
btnFast = (Button) findViewById(R.id.btnfast);
//下面这五行代码是实现button上面的文字显示楷体,不用理会 AssetManager mgr = getAssets();
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf"); btnLow.setTypeface(tf);
btnNormal.setTypeface(tf);
btnFast.setTypeface(tf); } @Override
public void onClick(View v) {
if (v.equals(btnLow)) {
vibrator.vibrate(new long[] {1000,30,100,1000},0);
}
if (v.equals(btnNormal)) { vibrator.vibrate(new long[] {800,40,400,30},0);
}
if (v.equals(btnFast)) {
vibrator.vibrate(new long[] {30,100,20,50},0);
} } protected void onStop() {
if(null!=vibrator){
vibrator.cancel();
}
super.onStop();
}
}

2. 后来才知道原来问题是如此简单,修改完的代码如下:

 package com.himi.vibrate;

 import android.app.Activity;
import android.app.Service;
import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Vibrator;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; public class MainActivity extends Activity implements OnClickListener {
private Button btnLow;
private Button btnNormal;
private Button btnFast; Vibrator vibrator; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE); btnLow = (Button) findViewById(R.id.btnlow);
btnNormal = (Button) findViewById(R.id.btnnormal);
btnFast = (Button) findViewById(R.id.btnfast); AssetManager mgr = getAssets();
Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf"); btnLow.setTypeface(tf);
btnNormal.setTypeface(tf);
btnFast.setTypeface(tf); //之前没有加这3条语句,振动服务是没有响应的。后来发现这是语法没有弄清楚,我就是个傻逼
btnFast.setOnClickListener(this);//监听当前MainActivity
btnNormal.setOnClickListener(this);//监听当前MainActivity
btnLow.setOnClickListener(this);//监听当前MainAcitivity } @Override
public void onClick(View v) {
if (v.equals(btnLow)) {
vibrator.vibrate(new long[] {1000,30,100,1000},0);
}
if (v.equals(btnNormal)) { vibrator.vibrate(new long[] {800,40,400,30},0);
}
if (v.equals(btnFast)) {
vibrator.vibrate(new long[] {30,100,20,50},0);
} } protected void onStop() {
if(null!=vibrator){
vibrator.cancel();
}
super.onStop();
}
}

3. 总结

这里是MainAcitivity实现了OnClickListener接口,所以接口监听功能是属于当前MainActivity的,所以是要监听当前MainActivity的:

语法格式如下:

public class MainActivity extends Activity implements OnClickListener  {

………………

public void onCreate(Bundle savedInstanceState) {

…………

btn1 = (Button) findViewById(R.id.button1);

 btn1.setOnClickListener(this);//监听当前Acitivity,当然这里监听的就是MainActivity

}

public void onClick(View v) {

       if (v.equals(btn1)) {

                 …………

      }

……………………

}

Android(java)学习笔记54:Android 调用Vibrator震动功能的更多相关文章

  1. Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)

    1.之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; im ...

  2. Java学习笔记54(反射详解)

    反射概念: java反射机制是在运行状态中,对于任意一个类,都能知道所有属性和方法 对于任意一个对象都能调用它的任意一个方法和属性,这种动态获取和调用的功能称为java的反射机制 实际作用: 已经完成 ...

  3. Android开发学习笔记-关于Android的消息推送以及前后台切换

    下面是最简单的Android的消息推送的实现方法 package com.example.shownotic; import java.util.Random; import android.supp ...

  4. Java学习笔记——内部类及其调用方法

    一.static内部类的static方法 public class Test0719_Inner_Test { public static void main(String[] args) { //s ...

  5. Android 数字签名学习笔记

    Android 数字签名学习笔记 在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的pro ...

  6. java学习笔记之基础篇

    java选择语句之switch   //switch可以用于等值判断 switch (e) //int ,或则可以自动转化成int 的类型,(byte char short)枚举jdk 7中可以防止字 ...

  7. Android动画学习笔记-Android Animation

    Android动画学习笔记-Android Animation   3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中 ...

  8. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  9. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例

    ---------------------------------------------------------------------------------------------------- ...

随机推荐

  1. spring框架中由FactoryBean获取JedisCluster实例

    spring配置文件: <bean id="jedisCluster" class="com.pingan.ela.structure.ex.JedisCluste ...

  2. gradle cache目录(.gradle)剖析

    https://zhuanlan.zhihu.com/p/26473930 gradle下载后会对文件路径进行修饰,本文给出反向解析,把文件路径修改为原始路径的办法. 之所以研究这个,本来的目的是为了 ...

  3. 《springcloud 四》服务保护机制

    服务保护机制SpringCloud Hystrix 微服务高可用技术 大型复杂的分布式系统中,高可用相关的技术架构非常重要. 高可用架构非常重要的一个环节,就是如何将分布式系统中的各个服务打造成高可用 ...

  4. C# 批量生成随机密码,必须包含数字和字母,并用加密算法加密

    要求:密码必须包含数字和字母 思路:1.列出数字和字符. 组成字符串 :chars 2.利用randrom.Next(int i)返回一个小于所指定最大值的非负随机数. 3. 随机取不小于chars长 ...

  5. Whu 1603——Minimum Sum——————【单个元素贡献、滑窗】

    Problem 1603 - Minimum Sum Time Limit: 2000MS   Memory Limit: 65536KB   Total Submit: 623  Accepted: ...

  6. 净推荐值(NPS):用户忠诚度测量的基本原理及方法

    文章分享了一个衡量用户与产品或服务之间关系的指标:NPS,干货满满,希望对你有益. 初识NPS 作为互联网行业的用户体验从业者,我们都或多或少会接触一些衡量用户与产品或服务之间关系的指标,常见的指标如 ...

  7. 深入理解JavaScript系列(16):闭包(Closures)

    介绍 本章我们将介绍在JavaScript里大家经常来讨论的话题 —— 闭包(closure).闭包其实大家都已经谈烂了.尽管如此,这里还是要试着从理论角度来讨论下闭包,看看ECMAScript中的闭 ...

  8. js获取当前日期,格式为YYYY-MM-DD

    //获取当前时间,格式YYYY-MM-DD function getNowFormatDate() { var date = new Date(); var seperator1 = "-& ...

  9. C#字符串替换_无视大小写

    C#里的string.Replace是不能无视大小写的. 首先想到的是正则表达式,在网上查了下,果然有用正则表达式配合一些逻辑运算,实现无视大小写的字符串替换方法.但是正则表达式的方法用起来很麻烦,实 ...

  10. 程序员心灵鸡汤桌面壁纸1080p 欢迎大家下载,HTML,PHP,node,css,前端

    上段时间在读书的时候看见了一句话:一张地图,不论比例多么精确,它永远不可能带着主人在地面上移动半步, 作为爱思考,爱学习的程序员 突然想到了:一份帮助文档,不论多么详细,它永远不会帮助主人敲一行代码. ...