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

  1. package com.himi.vibrate;
  2. import android.app.Activity;
  3. import android.app.Service;
  4. import android.content.res.AssetManager;
  5. import android.graphics.Typeface;
  6. import android.os.Bundle;
  7. import android.os.Vibrator;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. public class MainActivity extends Activity implements OnClickListener {
  12. private Button btnLow;
  13. private Button btnNormal;
  14. private Button btnFast;
  15. Vibrator vibrator;
  16. @Override
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);
  21. btnLow = (Button) findViewById(R.id.btnlow);
  22. btnNormal = (Button) findViewById(R.id.btnnormal);
  23. btnFast = (Button) findViewById(R.id.btnfast);
  24. //下面这五行代码是实现button上面的文字显示楷体,不用理会
  25. AssetManager mgr = getAssets();
  26. Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf");
  27. btnLow.setTypeface(tf);
  28. btnNormal.setTypeface(tf);
  29. btnFast.setTypeface(tf);
  30. }
  31. @Override
  32. public void onClick(View v) {
  33. if (v.equals(btnLow)) {
  34. vibrator.vibrate(new long[] {1000,30,100,1000},0);
  35. }
  36. if (v.equals(btnNormal)) {
  37. vibrator.vibrate(new long[] {800,40,400,30},0);
  38. }
  39. if (v.equals(btnFast)) {
  40. vibrator.vibrate(new long[] {30,100,20,50},0);
  41. }
  42. }
  43. protected void onStop() {
  44. if(null!=vibrator){
  45. vibrator.cancel();
  46. }
  47. super.onStop();
  48. }
  49. }

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

  1. package com.himi.vibrate;
  2. import android.app.Activity;
  3. import android.app.Service;
  4. import android.content.res.AssetManager;
  5. import android.graphics.Typeface;
  6. import android.os.Bundle;
  7. import android.os.Vibrator;
  8. import android.view.View;
  9. import android.view.View.OnClickListener;
  10. import android.widget.Button;
  11. public class MainActivity extends Activity implements OnClickListener {
  12. private Button btnLow;
  13. private Button btnNormal;
  14. private Button btnFast;
  15. Vibrator vibrator;
  16. @Override
  17. public void onCreate(Bundle savedInstanceState) {
  18. super.onCreate(savedInstanceState);
  19. setContentView(R.layout.activity_main);
  20. vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);
  21. btnLow = (Button) findViewById(R.id.btnlow);
  22. btnNormal = (Button) findViewById(R.id.btnnormal);
  23. btnFast = (Button) findViewById(R.id.btnfast);
  24. AssetManager mgr = getAssets();
  25. Typeface tf = Typeface.createFromAsset(mgr, "fonts/DroidSansFallback.ttf");
  26. btnLow.setTypeface(tf);
  27. btnNormal.setTypeface(tf);
  28. btnFast.setTypeface(tf);
  29. //之前没有加这3条语句,振动服务是没有响应的。后来发现这是语法没有弄清楚,我就是个傻逼
  30. btnFast.setOnClickListener(this);//监听当前MainActivity
  31. btnNormal.setOnClickListener(this);//监听当前MainActivity
  32. btnLow.setOnClickListener(this);//监听当前MainAcitivity
  33. }
  34. @Override
  35. public void onClick(View v) {
  36. if (v.equals(btnLow)) {
  37. vibrator.vibrate(new long[] {1000,30,100,1000},0);
  38. }
  39. if (v.equals(btnNormal)) {
  40. vibrator.vibrate(new long[] {800,40,400,30},0);
  41. }
  42. if (v.equals(btnFast)) {
  43. vibrator.vibrate(new long[] {30,100,20,50},0);
  44. }
  45. }
  46. protected void onStop() {
  47. if(null!=vibrator){
  48. vibrator.cancel();
  49. }
  50. super.onStop();
  51. }
  52. }

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. aoj0558

    一.题意: 在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪.有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪.老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只 ...

  2. RESTful和SOAP的区别

    参考:[接口开发]浅谈 SOAP Webserver 与 Restful Webserver 区别 目录 一.Web Service 二.SOAP 三.REST 四.RPC 客户端和服务器端的通讯方式 ...

  3. python 生成嵌套字典

    import collections import json tree=lambda:collections.defaultdict(tree) some_dict=tree() some_dict[ ...

  4. maven+springboot+阿里大于

    问题:maven仓库无法找到taobao-sdk-java-auto-1.0.jar包 目的:将jar包添加到maven项目中 1.在官网下载jar包 2.将jar包放在d盘 3.mvn instal ...

  5. (转)SSH批量分发管理&非交互式expect

    目录 1 SSH批量分发管理 1.1 测试环境 1.2 批量管理步骤 1.3 批量分发管理实例 1.3.1 利用sudo提权来实现没有权限的用户拷贝 1.3.2 利用sudo提权开发管理脚本 1.3. ...

  6. 【问题记录】 Linux 安装 apache 遇到的一些问题

    以下为linux上安装apache时自己遇到的一些问题,记录在这,以后遇到时也会不定时更新... 一.安装Apache提示APR not found的解决办法 解决方法: 1. 网站 http://a ...

  7. 2018上半年DDoS攻击报告:流量峰值达1.7Tbps

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 2018年上半年DDoS攻防仍如火如荼发展,以IoT设备为反射点的SSDP反射放大尚未平息,Memcached DDoS又异军突起,以最高可 ...

  8. H5禁止页面滑动/滚动

    禁止页面滚动--完美解决方案,滚动条显示与否,手持设备兼容与否 禁止页面滚动 有三种方法 1,依靠css 将页面 document.documentElement.style.overflow='hi ...

  9. 浅谈前端与SEO

    转载地址: https://blog.csdn.net/lzm18064126848/article/details/53385274?tdsourcetag=s_pctim_aiomsg SEO(S ...

  10. 关于EF执行返回表的存储过程

    1.关于EF执行返回表的存储过程 不知道为什么EF生成的存储过程方法会报错,以下方法可以使用,call是MySQL执行存储过程的命令 [HttpGet] public HttpResponseMess ...