振动器(Vibrator)的使用
这里介绍振动器android.os.Vibrator类的使用。
● 振动器Vibrator实例的取得,调用Activity.getSystemService(VIBRATOR_SERVICE)方法。
● 使振动器振动,调用Vibrator.vibrate()方法。
只有1个参数的时候,第一个参数用来指定振动的毫秒数。
要传递2个参数的时候,第1个参数用来指定振动时间的样本,第2个参数用来指定是否需要循环。
振动时间的样本是指振动时间和等待时间的交互指定的数组。
※下面的例子,在程序起动后
等待3秒后,振动1秒,再等待2秒后,振动5秒,再等待3秒后,振动1秒
1
long[] pattern = {3000, 1000, 2000, 5000, 3000, 1000}; // OFF/ON/OFF/ON...
● 需要在AndroidManifest.xml里进行下类设定
1
<uses-permission android:name="android.permission.VIBRATE"/>
程序源代码:
public class VibratorTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = {3000, 1000, 2000, 5000, 3000, 1000}; // OFF/ON/OFF/ON...
vibrator.vibrate(pattern, -1);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(10);
}
return super.onTouchEvent(event);
}
}
另外一个例子:
1. package com.ray.test;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.os.Vibrator;
6. import android.view.MotionEvent;
7.
8. public class TestViberation extends Activity {
9. Vibrator vibrator;
10. /** Called when the activity is first created. */
11. @Override
12. public void onCreate(Bundle savedInstanceState) {
13. super.onCreate(savedInstanceState);
14. setContentView(R.layout.main);
15. }
16.
17. @Override
18. protected void onStop() {
19. if(null!=vibrator){
20. vibrator.cancel();
21. }
22. super.onStop();
23. }
24.
25. @Override
26. public boolean onTouchEvent(MotionEvent event) {
27.
28. if(event.getAction() == MotionEvent.ACTION_DOWN){
29. vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
30. long[] pattern = {800, 50, 400, 30}; // OFF/ON/OFF/ON...
31. vibrator.vibrate(pattern, 2);//-1不重复,非-1为从pattern的指定下标开始重复
32. }
33. return super.onTouchEvent(event);
34. }
35.
36.
37. }
● 振动器Vibrator实例的取得,调用Activity.getSystemService(VIBRATOR_SERVICE)方法。
● 使振动器振动,调用Vibrator.vibrate()方法。
只有1个参数的时候,第一个参数用来指定振动的毫秒数。
要传递2个参数的时候,第1个参数用来指定振动时间的样本,第2个参数用来指定是否需要循环。
振动时间的样本是指振动时间和等待时间的交互指定的数组。
※下面的例子,在程序起动后
等待3秒后,振动1秒,再等待2秒后,振动5秒,再等待3秒后,振动1秒
1
long[] pattern = {3000, 1000, 2000, 5000, 3000, 1000}; // OFF/ON/OFF/ON...
● 需要在AndroidManifest.xml里进行下类设定
1
<uses-permission android:name="android.permission.VIBRATE"/>
程序源代码:
public class VibratorTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
long[] pattern = {3000, 1000, 2000, 5000, 3000, 1000}; // OFF/ON/OFF/ON...
vibrator.vibrate(pattern, -1);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
vibrator.vibrate(10);
}
return super.onTouchEvent(event);
}
}
另外一个例子:
1. package com.ray.test;
2.
3. import android.app.Activity;
4. import android.os.Bundle;
5. import android.os.Vibrator;
6. import android.view.MotionEvent;
7.
8. public class TestViberation extends Activity {
9. Vibrator vibrator;
10. /** Called when the activity is first created. */
11. @Override
12. public void onCreate(Bundle savedInstanceState) {
13. super.onCreate(savedInstanceState);
14. setContentView(R.layout.main);
15. }
16.
17. @Override
18. protected void onStop() {
19. if(null!=vibrator){
20. vibrator.cancel();
21. }
22. super.onStop();
23. }
24.
25. @Override
26. public boolean onTouchEvent(MotionEvent event) {
27.
28. if(event.getAction() == MotionEvent.ACTION_DOWN){
29. vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
30. long[] pattern = {800, 50, 400, 30}; // OFF/ON/OFF/ON...
31. vibrator.vibrate(pattern, 2);//-1不重复,非-1为从pattern的指定下标开始重复
32. }
33. return super.onTouchEvent(event);
34. }
35.
36.
37. }