Android提供的系统服务之--Vibrator(振动器)
——转载请注明出处:coder-pig
Vibrator简介与相关方法:
简单demo——设置频率不同的振动器
对于Vibrator用的最广泛的莫过于所谓的手机按摩器类的app,在app市场一搜,一堆,笔者随便下了几个下来瞅瞅
,都是大同小异的,这点小玩意竟然有8W多的下载量...好吧,好像也不算多,不过普遍功能都是切换振动频率来完成
所谓的按摩效果,是否真的有效就不得而知了,那么接下来
我们就来实现一个简单的按摩器吧!
核心其实就是vibrate()中的数组的参数,根据自己需求写一个数组就可以了!
因为模拟器不会振动的,所以需要在手机上运行才会有效果哦!
效果图:
代码也很简单,布局的话就四个简单的按钮而已
activity_main.xml:
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:id="@+id/LinearLayout1"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- tools:context="com.jay.example.vibratordemo.MainActivity" >
- <Button
- android:id="@+id/btnshort"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="短振动" />
- <Button
- android:id="@+id/btnlong"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="长振动" />
- <Button
- android:id="@+id/btnrhythm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="节奏振动" />
- <Button
- android:id="@+id/btncancle"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="取消振动" />
- </LinearLayout>
接着就是MainActivity的编写了,这里和上一节的写法是一样的,让Activity类实现OnClickListener接口
重写onClick方法,根据不同的view的id就可以判断是哪个按钮点击了,这种写法的好处是对于组件较多的
情况这样写可以简化代码!
MainActivity.java:
- package com.jay.example.vibratordemo;
- import android.app.Activity;
- import android.app.Service;
- import android.os.Bundle;
- import android.os.Vibrator;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- import android.widget.Toast;
- public class MainActivity extends Activity implements OnClickListener{
- private Button btnshort;
- private Button btnlong;
- private Button btnrhythm;
- private Button btncancel;
- private Vibrator myVibrator;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- btnshort = (Button) findViewById(R.id.btnshort);
- btnlong = (Button) findViewById(R.id.btnlong);
- btnrhythm = (Button) findViewById(R.id.btnrhythm);
- btncancel = (Button) findViewById(R.id.btncancle);
- btnshort.setOnClickListener(this);
- btnlong.setOnClickListener(this);
- btnrhythm.setOnClickListener(this);
- btncancel.setOnClickListener(this);
- //获得系统的Vibrator实例:
- myVibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
- }
- @Override
- public void onClick(View v) {
- switch (v.getId()) {
- case R.id.btnshort:
- myVibrator.cancel();
- myVibrator.vibrate(new long[]{100,200,100,200}, 0);
- Toast.makeText(getApplicationContext(), "短振动", Toast.LENGTH_SHORT).show();
- break;
- case R.id.btnlong:
- myVibrator.cancel();
- myVibrator.vibrate(new long[]{100,100,100,1000}, 0);
- Toast.makeText(getApplicationContext(), "长振动", Toast.LENGTH_SHORT).show();
- break;
- case R.id.btnrhythm:
- myVibrator.cancel();
- myVibrator.vibrate(new long[]{500,100,500,100,500,100}, 0);
- Toast.makeText(getApplicationContext(), "节奏振动", Toast.LENGTH_SHORT).show();
- break;
- case R.id.btncancle:
- myVibrator.cancel();
- Toast.makeText(getApplicationContext(), "取消振动", Toast.LENGTH_SHORT).show();
- }
- }
- }
最后别忘了在AndroidManifest.xml文件中添加权限哦!
- <uses-permission android:name="android.permission.VIBRATE"/>
好了,基本用法其实也是很简单的,这里就不多说了,另外上面也说了,虚拟机是没有震动效果的,所以
需要把应用发布到手机上才能检测效果了!参考代码下载:vibratorDemo.rar
为了方便各位,直接把apk导出来吧,直接下载安装到手机就可以测试效果了,当然只是个小demo,不会
推送广告,乱发短信什么的=-=!安装时可以查看所需要的权限!apk下载:vibratorDemo.apk