转载请注明出处:Android_Vibrator(振动器)使用解析_夨坕write的博客-CSDN博客
知识概述
Vibrator(振动器),是Android设备给我们提供的用于机身震动的一个服务。例如当收到消息推送时可以设置震动提醒,闹钟一边响铃一边震动提醒我们等等。
代码示例
1、使用Vibrator(振动器)需要在AndroidManifest.xml
添加震动器权限
<uses-permission android:name="android.permission.VIBRATE"/>
2、随便在一个页面demo.xml添加几个按钮
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="判断是否有振动器" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="短振动" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="长振动" />
<Button
android:id="@+id/btn4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="取消振动" />
</LinearLayout>
3、在随便创建的页面对应的Activity页面使用Vibrator(振动器)的方法
package com.demo.activity;
import com.demo.util.ToastUtil;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.os.Vibrator;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class DemoActivity extends Activity {
private Button btn1, btn2, btn3, btn4;
private Vibrator vibrator;// 振动器
private Context mContext;// 上下文
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shake);
// 获得Vibrator实例
vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE);
mContext = ShakeActivity.this;
bindViews();
bindViewsByClick();
}
private void bindViews(){
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
btn4 = (Button) findViewById(R.id.btn4);
}
private void bindViewsByClick(){
// 判断是否有振动器
btn1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
String mString = vibrator.hasVibrator() ? "当前设备有振动器" : "当前设备无振动器";
Toast.makeText(mContext ,mString,Toast.LENGTH_LONG).show();
}
});
// 短振动
btn2.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
vibrator.cancel();
vibrator.vibrate(new long[] {100,200,100,200},0);
Toast.makeText(mContext ,"短振动",Toast.LENGTH_LONG).show();
}
});
// 长振动
btn3.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
vibrator.cancel();
vibrator.vibrate(new long[] {100,100,100,1000},0);
Toast.makeText(mContext ,"长振动",Toast.LENGTH_LONG).show();
}
});
// 取消振动
btn4.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
vibrator.cancel();
Toast.makeText(mContext ,"取消振动",Toast.LENGTH_LONG).show();
}
});
}
}
效果图
android_vibrator
解析
要点:
& 使用振动器的一般流程:
1、获得 Vibrator
实例
Vibrator vb = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE);
2、调用方法 vb.hasVibrator()
判断是否有振动器
3、可以调用方法 vb.hasAmplitudeControl()
判断是否可以设置振幅大小
4、调用以下方法之一设置振动器相关属性并开始震动
方法 | 说明 |
vibrate(long milliseconds, int amplitude) | 创建一次性振动 |
vibrate(long[] timings, int[] amplitudes, int repeat) | 创建波形振动 |
vibrate(long[] timings, int repeat) | 创建波形振动 |
参数说明:
参数 | 说明 |
milliseconds | 震动的时常,单位为毫秒 |
amplitude | 震动的强度 |
timings | 指定手机以 timings 指定的模式振动, 比如 就是让它在200,400,600,800 这个时间交替启动与关闭振动器 |
repeat | 是否重复震动,如果是 -1 的只振动一次,如果是 0 的话则一直振动 |
5、用完后可以调用 vb.cancel()
取消震动