安卓 摇一摇 事件监听


package com.sc.sensor;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;


/*
 * 摇一摇事件监听 工具类
 **/
public class SensorTool
{
	/** 摇一摇事件回调接口 */
	public interface ShakeListener
	{
		public void onShake();
	}
	
	private static final int SENSOR_VALUE = 12;
	
	private static SensorManager sensorManager = null;
	private static SensorEventListener sensorEvent = null;
	private static ShakeListener shakeListener = null;
	
	/** 设置摇一摇事件监听 */
	public static void SetShakeListener(Context context, ShakeListener listener)
	{
		if (sensorManager == null) sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
		if (sensorEvent != null) sensorManager.unregisterListener(sensorEvent);
		
		shakeListener = listener;
		if (sensorEvent == null) sensorEvent = new SensorEventListener()
		{
			@Override
			public void onAccuracyChanged(Sensor arg0, int arg1)
			{
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public void onSensorChanged(SensorEvent event)
			{
				int sensorType = event.sensor.getType();
				//values[0]:X轴,values[1]:Y轴,values[2]:Z轴
				float[] values = event.values;
				if (sensorType == Sensor.TYPE_ACCELEROMETER)
				{
					//这里可以调节摇一摇的灵敏度
					if ((Math.abs(values[0]) > SENSOR_VALUE || Math.abs(values[1]) > SENSOR_VALUE || Math.abs(values[2]) > SENSOR_VALUE))
					{
						// System.out.println("onSensorChanged=====>" + " X:" + values[0] + " Y:" + values[1] + " Z:" + values[2]);
						if (null != shakeListener)
						{
							shakeListener.onShake();
						}
					}
				}
			}
		};
		
		sensorManager.registerListener(sensorEvent, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL);
	}
	
	/** 移除摇一摇事件监听 */
	public static void RemoveShakeListener()
	{
		if (sensorManager != null && sensorEvent != null) sensorManager.unregisterListener(sensorEvent);
	}
}

示例:SensorExample: 安卓手机应用,摇一摇,点亮屏幕(手机电源键损坏,检测摇一摇,自动点亮屏幕)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值