Android提供的系统服务之--Vibrator(振动器)

这篇博客介绍了如何在Android中使用Vibrator系统服务来实现振动功能,包括短振动、长振动和节奏振动的简单示例代码。通过示例展示了在MainActivity中设置不同振动模式,并提供了测试apk供下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android提供的系统服务之--Vibrator(振动器)

                                                          ——转载请注明出处:coder-pig



Vibrator简介与相关方法:






简单demo——设置频率不同的振动器


对于Vibrator用的最广泛的莫过于所谓的手机按摩器类的app,在app市场一搜,一堆,笔者随便下了几个下来瞅瞅

,都是大同小异的,这点小玩意竟然有8W多的下载量...好吧,好像也不算多,不过普遍功能都是切换振动频率来完成

所谓的按摩效果,是否真的有效就不得而知了,那么接下来

我们就来实现一个简单的按摩器吧!

核心其实就是vibrate()中的数组的参数,根据自己需求写一个数组就可以了!

因为模拟器不会振动的,所以需要在手机上运行才会有效果哦!


效果图:


代码也很简单,布局的话就四个简单的按钮而已

activity_main.xml:

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:id="@+id/LinearLayout1"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     android:orientation="vertical"  
  7.     tools:context="com.jay.example.vibratordemo.MainActivity" >  
  8.   
  9.     <Button  
  10.         android:id="@+id/btnshort"  
  11.         android:layout_width="wrap_content"  
  12.         android:layout_height="wrap_content"  
  13.         android:text="短振动" />  
  14.   
  15.     <Button  
  16.         android:id="@+id/btnlong"  
  17.         android:layout_width="wrap_content"  
  18.         android:layout_height="wrap_content"  
  19.         android:text="长振动" />  
  20.       
  21.     <Button  
  22.         android:id="@+id/btnrhythm"  
  23.         android:layout_width="wrap_content"  
  24.         android:layout_height="wrap_content"  
  25.         android:text="节奏振动" />    
  26.           
  27.     <Button  
  28.         android:id="@+id/btncancle"  
  29.         android:layout_width="wrap_content"  
  30.         android:layout_height="wrap_content"  
  31.         android:text="取消振动" />         
  32. </LinearLayout>  

接着就是MainActivity的编写了,这里和上一节的写法是一样的,让Activity类实现OnClickListener接口

重写onClick方法,根据不同的view的id就可以判断是哪个按钮点击了,这种写法的好处是对于组件较多的

情况这样写可以简化代码!

MainActivity.java:

[java]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. package com.jay.example.vibratordemo;  
  2.   
  3. import android.app.Activity;  
  4. import android.app.Service;  
  5. import android.os.Bundle;  
  6. import android.os.Vibrator;  
  7. import android.view.View;  
  8. import android.view.View.OnClickListener;  
  9. import android.widget.Button;  
  10. import android.widget.Toast;  
  11.   
  12.   
  13. public class MainActivity extends Activity implements OnClickListener{  
  14.   
  15.     private Button btnshort;  
  16.     private Button btnlong;  
  17.     private Button btnrhythm;  
  18.     private Button btncancel;  
  19.     private Vibrator myVibrator;  
  20.       
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  
  25.           
  26.         btnshort = (Button) findViewById(R.id.btnshort);  
  27.         btnlong = (Button) findViewById(R.id.btnlong);  
  28.         btnrhythm = (Button) findViewById(R.id.btnrhythm);  
  29.         btncancel = (Button) findViewById(R.id.btncancle);  
  30.           
  31.         btnshort.setOnClickListener(this);  
  32.         btnlong.setOnClickListener(this);  
  33.         btnrhythm.setOnClickListener(this);  
  34.         btncancel.setOnClickListener(this);  
  35.           
  36.           
  37.         //获得系统的Vibrator实例:  
  38.         myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);  
  39.           
  40.     }  
  41.   
  42.     @Override  
  43.     public void onClick(View v) {  
  44.         switch (v.getId()) {  
  45.         case R.id.btnshort:  
  46.             myVibrator.cancel();  
  47.             myVibrator.vibrate(new long[]{100,200,100,200}, 0);  
  48.             Toast.makeText(getApplicationContext(), "短振动", Toast.LENGTH_SHORT).show();  
  49.             break;  
  50.         case R.id.btnlong:  
  51.             myVibrator.cancel();  
  52.             myVibrator.vibrate(new long[]{100,100,100,1000}, 0);  
  53.             Toast.makeText(getApplicationContext(), "长振动", Toast.LENGTH_SHORT).show();  
  54.             break;  
  55.         case R.id.btnrhythm:  
  56.             myVibrator.cancel();  
  57.             myVibrator.vibrate(new long[]{500,100,500,100,500,100}, 0);  
  58.             Toast.makeText(getApplicationContext(), "节奏振动", Toast.LENGTH_SHORT).show();  
  59.             break;  
  60.         case R.id.btncancle:  
  61.             myVibrator.cancel();  
  62.             Toast.makeText(getApplicationContext(), "取消振动", Toast.LENGTH_SHORT).show();  
  63.         }  
  64.           
  65.     }  
  66. }  

最后别忘了在AndroidManifest.xml文件中添加权限哦!

[html]   view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="android.permission.VIBRATE"/>  



好了,基本用法其实也是很简单的,这里就不多说了,另外上面也说了,虚拟机是没有震动效果的,所以

需要把应用发布到手机上才能检测效果了!参考代码下载:vibratorDemo.rar

为了方便各位,直接把apk导出来吧,直接下载安装到手机就可以测试效果了,当然只是个小demo,不会

推送广告,乱发短信什么的=-=!安装时可以查看所需要的权限!apk下载:vibratorDemo.apk

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值