Android一直震动源码
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;// 震动时间@Overridepublic 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);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_main, menu);return true;}@Overridepublic 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("开始");}}@Overrideprotected void onPause() {vibrator.cancel();super.onPause();}@Overridepublic void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {}@Overridepublic void onStartTrackingTouch(SeekBar seekBar) {}@Overridepublic 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);}}} 界面浏览图http://dl.iteye.com/upload/attachment/0076/1727/c6f2ad29-c9ed-3bf8-bf3d-6e16ce76c519.png
界面代码
<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代码
页:
[1]