package com.vibrator.vibratordemo; import android.os.Bundle; import android.os.Vibrator; import android.app.Activity; import android.app.Service; import android.util.Log; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; import android.widget.Button; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity implements OnClickListener, OnSeekBarChangeListener { private Button btnstart; private SeekBar seekbar1; private boolean isClick; /*************************************************************************** * 要让手机乖乖的震动,需创建Vibrator对象,通过调用vibrate方法来达到震动的目的, 在Vibrator的构造器中有4个参数, * 前3个的值是设置震动的大小,在这边可以把数值改成一大一小,这样就可以明显感觉出 * 震动的差异,而最后一个值是设置震动的时间。以下的范例设置每个震动的模式都不一样, long[] pattern :自定义震动模式 * 。数组中数字的含义依次是[静止时长,震动时长,静止时长,震动时长。。。]时长的单位是毫秒 boolean isRepeat : * 是否反复震动,如果是true,反复震动,如果是false,只震动一次 -1 只震动一次 *************************************************************************/ private Vibrator vibrator; private int num = 10;// 震动时间 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnstart = (Button) findViewById(R.id.btn_start); seekbar1 = (SeekBar) findViewById(R.id.seekbar1); btnstart.setOnClickListener(this); vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); seekbar1.setMax(1000); seekbar1.setOnSeekBarChangeListener(this); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } @Override public void onClick(View v) { if (!isClick) { /* 短震动 */ // vibrator.vibrate(new long[] { 100, 10, 100, 1000 }, -1); /* 短震动循环 */ vibrator.vibrate(new long[] { num, 25000 }, 0); /* 长震动 */ // vibrator.vibrate(new long[]{100,100,100,1000},0); /* 节奏震动 */ // vibrator.vibrate(new long[]{1000,50,1000,50,1000},0); isClick = true; btnstart.setText("暂停"); } else { vibrator.cancel(); isClick = false; btnstart.setText("开始"); } } @Override protected void onPause() { vibrator.cancel(); super.onPause(); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { Log.i(getClass().getSimpleName(), "seekbar长度发生改变"); num = seekBar.getProgress(); Log.i(getClass().getSimpleName(), "num=" + num); if (isClick) { vibrator.vibrate(new long[] { num, 1000 }, 0); } } }
界面浏览图
界面代码
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" > <Button android:id="@+id/btn_start" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="开始" /> <SeekBar android:id="@+id/seekbar1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> </RelativeLayout>
java代码