android Vibrator类介绍分析

java哥 阅读:190 2021-03-31 23:31:50 评论:0


android手机中的震动由Vibrator实现。设置震动事件,需要知道其震动的时间长短、震动的周期等。

在android中,震动的时间一毫秒计算(1/1000秒),所以如果设置的时间值太小,会感觉不出来。

通过调用Vibrator的vibrate(long[] pattern, int repeat)方法实现。

前一个参数为设置震动的效果的数组,第二个参数为 -1表示只震动一次,为0则震动会一直持续。


Demo:

package com.shao.vibrator; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Vibrator; 
import android.widget.CompoundButton; 
import android.widget.Toast; 
import android.widget.CompoundButton.OnCheckedChangeListener; 
import android.widget.ToggleButton; 
 
public class VibratorActivity extends Activity { 
    /** Called when the activity is first created. */ 
 
	private Vibrator vibrator;  
	private  ToggleButton  tog1; 
	private  ToggleButton  tog2; 
	private  ToggleButton  tog3; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        init(); 
        tog1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
			 
			@Override 
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
				// TODO Auto-generated method stub 
				if(isChecked){ 
					//设置震动周期 
					vibrator.vibrate(new long[]{1000,10,100,1000}, -1); 
					showToast("OK"); 
				}else{ 
					//取消震动 
					vibrator.cancel(); 
					showToast("CANCEL"); 
				} 
			} 
		}); 
 tog2.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
			 
			@Override 
			public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
				// TODO Auto-generated method stub 
				if(isChecked){ 
					//设置震动周期 
					vibrator.vibrate(new long[]{100,100,100,1000}, 0); 
					showToast("OK"); 
				}else{ 
					//取消震动 
					vibrator.cancel(); 
					showToast("CANCEL"); 
				} 
			} 
		}); 
 tog3.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
		 
		@Override 
		public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
			// TODO Auto-generated method stub 
			if(isChecked){ 
				//设置震动周期 
				vibrator.vibrate(new long[]{1000,50,1000,50,1000}, 0); 
				showToast("OK"); 
			}else{ 
				//取消震动 
				vibrator.cancel(); 
				showToast("CANCEL"); 
			} 
		} 
	}); 
         
    } 
    private void  init(){ 
    	tog1= (ToggleButton) findViewById(R.id.tog1); 
    	tog2= (ToggleButton) findViewById(R.id.tog2); 
    	tog3= (ToggleButton) findViewById(R.id.tog3); 
    	vibrator = (Vibrator) this.getSystemService(VIBRATOR_SERVICE); 
    } 
    private void showToast(String msg){ 
    	Toast.makeText(this, msg, 1).show(); 
    } 
}


<?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" 
    > 
    <RelativeLayout  
      android:layout_marginTop="20dp" 
  	android:orientation="horizontal" 
  	android:layout_width="fill_parent" 
  	android:layout_height="wrap_content"> 
    <TextView   
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
       android:text="短震动" 
    /> 
<ToggleButton  
	android:id="@+id/tog1" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
    android:textOn="关闭" 
    android:textOff="打开" 
    android:layout_alignParentRight="true" 
    /> 
  </RelativeLayout>  
    <RelativeLayout  
      android:layout_marginTop="20dp" 
  	android:orientation="horizontal" 
  	android:layout_width="fill_parent" 
  	android:layout_height="wrap_content"> 
    <TextView   
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
 
     android:text="长震动" 
    /> 
<ToggleButton   
	android:id="@+id/tog2" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
     android:textOn="关闭" 
    android:textOff="打开" 
    android:layout_alignParentRight="true" 
    /> 
  </RelativeLayout>  
    <RelativeLayout  
      android:layout_marginTop="20dp" 
  	android:orientation="horizontal" 
  	android:layout_width="fill_parent" 
  	android:layout_height="wrap_content"> 
    <TextView   
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
 
     android:text="节奏震动" 
    /> 
<ToggleButton   
	android:id="@+id/tog3" 
    android:layout_width="wrap_content"  
    android:layout_height="wrap_content"  
     android:textOn="关闭" 
    android:textOff="打开" 
    android:layout_alignParentRight="true" 
    /> 
  </RelativeLayout>  
</LinearLayout> 


效果展示:


最后别忘了加上

   <uses-permission  android:name="android.permission.VIBRATE"/>
权限


声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

发表评论
搜索
排行榜
关注我们

一个IT知识分享的公众号