`

SensorEventListener 接口 摇一摇

 
阅读更多
public class  test extends Activity implements OnClickListener, SensorEventListener {
private SensorManager mSensorManager;
              @Override
	protected void onCreate(Bundle savedInstanceState) {
		//..............
	}
      }
       @Override
	public void onAccuracyChanged(Sensor sensor, int accuracy) {
		// TODO Auto-generated method stub

	}


	private float[] temp;

	@Override
	public void onSensorChanged(SensorEvent event) {
		if(PublicUtil.isWallPaperLocked(this))return; //屏幕如果锁定
		if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
                 //加速传感器类型(常量之为-1),一起有8种类型,-1表示是all
				if (temp!=null&&isShake(event.values)) {
					if (!isShaking) {
						isShaking = true;
						Timer timer = new Timer();
						TimerTask task = new TimerTask() {

							@Override
							public void run() {
								// TODO Auto-generated method stub
								getData(); //数据处理,如intent,发送http请求
							}
						};
						timer.schedule(task, 1000);//延迟一秒执行
					}
				}
				temp = event.values.clone();//克隆传感器里的values的值
			}
	}

	boolean isShake(float[] values){
		boolean flag = false;
		for (int i = 0; i < values.length; i++) {
			if(temp[i]-values[i]>15){ //如果摇动的力度大于15 就执行摇一摇
				System.out.println("temp="+temp[i]+"value="+values[i]);
				flag = true;
				break;
			}
		}
		return flag;
	}
     @Override
	protected void onResume() {
		super.onResume();
		StatService.onResume(this);
		// 加速度传感器
		mSensorManager.registerListener(this,
				mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
				// 还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等,
				// 根据不同应用,需要的反应速率不同,具体根据实际情况设定
				SensorManager.SENSOR_DELAY_NORMAL);
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		StatService.onPause(this);
		mSensorManager.unregisterListener(this);
	}

	@Override
	protected void onStop() {
		// TODO Auto-generated method stub
		super.onStop();
		// this.unRegisterLocationListener();
		mSensorManager.unregisterListener(this);
	}

 

从这个示例,我们可以基本总结出使用Android传感器的步骤,注册一个SensorEventListener,然后在onSensorChanged方法中处理传感器的数据。

这里需要注意的一点是,我把注册Sensor这个过程放在了onResume()方法中,而取消注册放在了onPause()方法中,这主要是因为,传感器的使用太耗电了,而且一定需要手动取消注册,否则即使Activity不可见,传感器依然在工作中,几个小时内就会耗光电量。

更多传感器的知识参考

http://aliusa.iteye.com/blog/1064560    

分享到:
评论

相关推荐

    摇一摇的源码

    摇一摇功能是移动应用中常见的一种互动方式,尤其在社交和游戏类应用中颇为流行。这个源码提供了一个带有美观界面的摇一摇实现,非常适合开发者进行学习和参考。以下将详细介绍摇一摇功能的核心知识点及其实现原理。...

    安卓摇一摇传感器相关-手机摇一摇DEMO代码实现摇一摇执行特定程序.zip

    在这个"安卓摇一摇传感器相关-手机摇一摇DEMO代码实现摇一摇执行特定程序.zip"压缩包中,包含了实现这一功能的源码示例。 摇一摇功能主要依赖于安卓系统中的SensorManager服务和加速度传感器(Accelerometer Sensor...

    模拟微信“摇一摇”功能

    在Android平台上实现微信“摇一摇”功能是一个有趣且具有挑战性的任务,涉及到传感器数据的获取、处理以及用户交互的设计。下面将详细讲解这个过程中的关键知识点。 首先,"摇一摇"功能的核心在于手机内置的传感器...

    摇一摇 源码

    2. **SensorEventListener**:为了监听设备的运动,我们需要实现SensorEventListener接口。这个接口有两个关键方法:`onSensorChanged(SensorEvent event)`和`onAccuracyChanged(Sensor sensor, int accuracy)`。...

    Android摇一摇功能示例源码_android.摇一摇功能实现zip

    SensorEventListener接口有两个重要的回调方法:onSensorChanged()和onAccuracyChanged()。前者会在传感器数据变化时被调用,后者则在传感器精度改变时触发。 2. **设置阈值**: 为了识别出摇一摇的动作,我们需要...

    Android应用源码之Android摇一摇功能示例源码-IT计算机-毕业设计.zip

    2. **注册SensorEventListener**:在Activity或Service中,创建一个SensorEventListener接口的实现类,用于监听加速度传感器的数据变化。通过SensorManager获取加速度传感器,并注册监听器: ```java ...

    Android摇一摇demo

    在Android平台上,实现“摇一摇”功能是一个有趣且实用的交互方式,常用于游戏、应用切换、抽奖等场景。本教程将详细讲解如何利用Android的SensorManager和SensorEventListener类来构建一个基本的“摇一摇”示例,即...

    Android传感器应用之摇一摇小球运动实现

    "摇一摇"动作就是一个常见的用户交互模式,常用于游戏、抽奖或者清理缓存等场景。本篇文章将深入探讨如何在Android中实现摇一摇小球运动的效果。 首先,我们需要理解Android的传感器系统。Android提供了...

    仿微信的摇一摇

    这通常在Activity的onCreate()方法中完成,通过调用SensorManager的registerListener()方法,传入SensorEventListener接口的实现类,指定要监听的传感器类型(例如Sensor.TYPE_ACCELEROMETER)和更新频率。...

    android摇一摇案例

    在Android平台上,实现“摇一摇”功能是一项常见的交互设计,它可以为用户带来新颖的体验。这个案例将探讨如何在Android应用中集成摇一摇事件检测,并触发相应的操作。我们将从以下几个方面进行深入讨论: 1. **...

    Android快速SDK(16)摇一摇Shake【傻瓜模式】

    4. **实现SensorEventListener接口**:为了接收传感器事件,我们需要让Activity实现SensorEventListener接口,并实现其两个方法:`onSensorChanged()` 和 `onAccuracyChanged()`。主要工作在`onSensorChanged()`中,...

    【流量云项目】摇一摇功能的实现

    6. **事件处理与响应**:当摇一摇事件被识别后,需要有一个事件处理机制来触发相应的业务逻辑,如启动一个新的Activity、更新UI、调用网络接口等。这部分通常涉及多线程处理,以确保UI的流畅性。 7. **测试与优化**...

    android仿360摇一摇功能源代码

    【Android 仿360摇一摇功能源代码详解】 在Android开发中,实现类似360摇一摇的功能是一项有趣的交互设计,它可以为用户带来新鲜的体验,比如用于抽奖、答题或者切换应用界面等。这个功能的核心在于检测手机的运动...

    安卓开发-手机摇一摇DEMO代码,实现摇一摇执行特定程序.zip.zip

    SensorEventListener接口包含两个关键方法:onSensorChanged(SensorEvent event) 和 onAccuracyChanged(Sensor sensor, int accuracy)。其中,onSensorChanged会在传感器数据发生变化时被调用,我们在这里处理摇一摇...

    仿微信摇一摇实现开始与结束监听

    在移动应用开发中,微信的“摇一摇”功能是一个非常有趣的交互设计,它通过手机的运动传感器数据来触发特定的事件。这个功能不仅让用户有了新鲜的体验,也为开发者提供了创新交互的可能性。本文将深入探讨如何在自己...

    摇一摇 功能的源代码

    在Android开发中,"摇一摇"功能是一个常见的交互方式,它允许用户通过摇动设备来触发特定的应用程序事件,例如切换页面、刷新内容或玩游戏等。本篇将深入讲解如何在Android应用中实现"摇一摇"功能,并提供相关的源...

    Android代码-Android摇一摇功能示例源码.zip

    实现SensorEventListener接口,重写onSensorChanged()方法。在这个方法中,你会接收到每次传感器数据更新的事件。 ```java @Override public void onSensorChanged(SensorEvent event) { if (event.sensor....

    摇一摇代码

    根据提供的文件信息,我们可以深入探讨“摇一摇”功能在移动应用开发中的实现方式和技术细节。下面将详细解析与该功能相关的技术要点。 ### 摇一摇功能概述 “摇一摇”功能通常用于手机应用程序中,允许用户通过...

    android摇一摇源码

    在这个例子中,"this"指的是实现了SensorEventListener接口的当前对象,需要重写`onSensorChanged(SensorEvent event)`方法,这里将接收到传感器的数据: ```java @Override public void onSensorChanged...

Global site tag (gtag.js) - Google Analytics