package com.tsgame.tsgame_niuniu.util;

import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.os.Vibrator;

public class VibratorUtil {

	Vibrator mVibrator;
	Context mContext;
	private static VibratorUtil mKqwVibrator;

	public VibratorUtil(Context context) {
		mContext = context;
		// 初始化振动器对象

		mVibrator = (Vibrator) context
				.getSystemService(Context.VIBRATOR_SERVICE);
	}

	public static VibratorUtil getInstance(Context context) {

		if (mKqwVibrator == null) {

			mKqwVibrator = new VibratorUtil(context);

		}
		return mKqwVibrator;

	}

	/**
	 * 开始震动
	 * 
	 * @param time
	 *            震动时间 毫秒
	 */
	public void vibrate(long time) {
		mVibrator.vibrate(time);
	}

	/**
	 * 取消震动
	 * 
	 * @param time
	 *            震动时间 毫秒
	 */
	public void cancle() {
		mVibrator.cancel();
	}

	/**
	 * 重复震动
	 */
	public void repeatVibrate(int repeat) {
		if(repeat!=1||repeat!=-1){
			
			repeat=-1;
			
		}
		// 等待1秒，震动2秒，等待1秒，震动3秒
		long[] pattern = { 1000, 2000, 1000, 3000 };
		// -1表示不重复, 如果不是-1, 比如改成1, 表示从前面这个long数组的下标为1的元素开始重复.
		mVibrator.vibrate(pattern, -1);
		
	}

	/**
	 * final Activity activity ：调用该方法的Activity实例 long milliseconds ：震动的时长，单位是毫秒
	 * long[] pattern ：自定义震动模式 。数组中数字的含义依次是[静止时长，震动时长，静止时长，震动时长。。。]时长的单位是毫秒
	 * boolean isRepeat ： 是否反复震动，如果是true，反复震动，如果是false，只震动一次
	 */

	public static void Vibrate(final Activity activity, long milliseconds) {
		Vibrator vib = (Vibrator) activity
				.getSystemService(Service.VIBRATOR_SERVICE);
		vib.vibrate(milliseconds);
	}

	public static void Vibrate(final Activity activity, long[] pattern,
			boolean isRepeat) {
		Vibrator vib = (Vibrator) activity
				.getSystemService(Service.VIBRATOR_SERVICE);
		vib.vibrate(pattern, isRepeat ? 1 : -1);

	}
}
