main.xml布局文件
<? xml version = " 1.0 " encoding = " utf-8 " ?> < LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android " android:orientation = " vertical " android:layout_width = " fill_parent " android:layout_height = " fill_parent " > < LinearLayout android:orientation = " horizontal " android:layout_width = " fill_parent " android:layout_height = " wrap_content " > < ToggleButton android:id = " @+id/tb1 " android:textOn = " 关闭振动 " android:textOff = " 启动振动 " android:checked = " false " android:layout_width = " wrap_content " android:layout_height = " wrap_content " /> < TextView android:id = " @+id/tv1 " android:text = " 振动已关闭 " android:layout_width = " wrap_content " android:layout_height = " wrap_content " /> </ LinearLayout > < LinearLayout android:orientation = " horizontal " android:layout_width = " fill_parent " android:layout_height = " wrap_content " > < ToggleButton android:id = " @+id/tb2 " android:textOn = " 关闭振动 " android:textOff = " 启动振动 " android:checked = " false " android:layout_width = " wrap_content " android:layout_height = " wrap_content " /> < TextView android:id = " @+id/tv2 " android:text = " 振动已关闭 " android:layout_width = " wrap_content " android:layout_height = " wrap_content " /> </ LinearLayout > </ LinearLayout >
清单文件
<? xml version = " 1.0 " encoding = " utf-8 " ?> < manifest xmlns:android = " http://schemas.android.com/apk/res/android " package = " com.ljq.activity " android:versionCode = " 1 " android:versionName = " 1.0 " > < application android:icon = " @drawable/icon " android:label = " @string/app_name " > < activity android:name = " .VibrateActivity " android:label = " @string/app_name " > < intent - filter > < action android:name = " android.intent.action.MAIN " /> < category android:name = " android.intent.category.LAUNCHER " /> </ intent - filter > </ activity > </ application > < uses - sdk android:minSdkVersion = " 7 " /> <!-- 设置手机震动权限 --> < uses - permission android:name = " android.permission.VIBRATE " /> </ manifest >
VibrateActivity类
package com.ljq.activity; import android.app.Activity; import android.app.Service; import android.os.Bundle; import android.os.Vibrator; import android.widget.CompoundButton; import android.widget.TextView; import android.widget.ToggleButton; import android.widget.CompoundButton.OnCheckedChangeListener; public class VibrateActivity extends Activity { private Vibrator vibrator = null ; private ToggleButton tb1 = null , tb2 = null ; private TextView tv1 = null , tv2 = null ; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); // 注意模拟器是模拟不了震动的,得真机测试哦 // 创建vibrator对象 vibrator = (Vibrator)getSystemService(Service.VIBRATOR_SERVICE); tv1 = (TextView)findViewById(R.id.tv1); tv2 = (TextView)findViewById(R.id.tv2); tb1 = (ToggleButton)findViewById(R.id.tb1); tb2 = (ToggleButton)findViewById(R.id.tb2); tb1.setOnCheckedChangeListener(listener); tb2.setOnCheckedChangeListener(listener); } OnCheckedChangeListener listener = new OnCheckedChangeListener(){ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { ToggleButton toggleButton = (ToggleButton)buttonView; switch (toggleButton.getId()) { case R.id.tb1: if (isChecked){ // 根据指定的模式进行震动 // 第一个参数:该数组中第一个元素是等待多长的时间才启动震动, // 之后将会是开启和关闭震动的持续时间,单位为毫秒 // 第二个参数:重复震动时在pattern中的索引,如果设置为-1则表示不重复震动 vibrator.vibrate( new long []{ 1000 , 50 , 50 , 100 , 50 }, - 1 ); tv1.setText( " 振动已启动 " ); } else { // 关闭震动 vibrator.cancel(); tv1.setText( " 震动已关闭 " ); } break ; case R.id.tb2: if (isChecked){ // 启动震动,并持续指定的时间 vibrator.vibrate( 3500 ); tv2.setText( " 振动已启动 " ); } else { // 关闭启动 vibrator.cancel(); tv2.setText( " 震动已关闭 " ); } break ; } } }; }