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. PIE SDK神经网络聚类

    1.算法功能简介 神经网络是模仿人脑神经系统的组成方式与思维过程而构成的信息处理系统,具有非线性.自学性.容错性.联想记忆和可以训练性等特点.在神经网络中,知识和信息的传递是由神经元的相互连接来实现的 ...

  2. jq api --css

    .css() $("p").css("color","red"); $("p").css({ "color&q ...

  3. Promise个人笔记---【Promise的前世今生】

    Promise第一版本 案例是使用Node.js内置的fs模块[就是文件系统模块,负责读写文件.]来模拟异步操作 const fs = require('fs'); function getFileP ...

  4. vue工程中使用iconfont在线CDN不生效的问题

    为什么在vue工程中引入iconfont有时候不生效呢? 请依次使用以下方法 1. 在index.html中引入在线资源 <!DOCTYPE html> <html lang=&qu ...

  5. 获取window.location.href路径参数

    GetQueryString(param) { //param为要获取的参数名 注:获取不到是为null var currentUrl = window.location.href; //获取当前链接 ...

  6. zTree 图标样式

    <link rel="stylesheet" href="jquery/ztree/css/zTreeStyle/zTreeStyle.css" /> ...

  7. C#知识点提要

    本篇博文主要对asp.net mvc开发需要撑握的C#语言知识点进行简单回顾,尤其是C# 3.0才有的一些C#语言特性.对于正在学asp.net mvc的童鞋,不防花个几分钟浏览一下.本文要回顾的C# ...

  8. mysql 查询及 删除表中重复数据

    CREATE TABLE `test` ( `id` INT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(20) NULL DEFAULT NULL, `a ...

  9. 初学Hadoop之WordCount词频统计

    1.WordCount源码 将源码文件WordCount.java放到Hadoop2.6.0文件夹中. import java.io.IOException; import java.util.Str ...

  10. javaSE练习2——流程控制_2.1

    一.企业发放的奖金根据利润提成.利润低于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%:20万到40万之间时,高 ...