现在的不少应用都用到了摇动手机改变内容的功能,比如微信中的“摇一摇”功能。前两天要实现这个功能,稍微看了一下关于传感器Sensor的内容。
传感器有几种类型:
方向传感器: Sensor.TYPE_ORIENTATION
加速度(重力)传感器: Sensor.TYPE_ACCELEROMETER
光线传感器: Sensor.TYPE_LIGHT
磁场传感器: Sensor.TYPE_MAGNETIC_FIELD
距离(临近性)传感器: Sensor.TYPE_PROXIMITY
温度传感器: Sensor.TYPE_TEMPERATURE
在摇动手机的功能中,我们只用加速度传感器就行了~~
加速度传感器返回值的单位是加速度的单位 m/s^2(米每二次方秒),有三个方向的值分别是
values[0]: x-axis 方向加速度
values[1]: y-axis 方向加速度
values[2]: z-axis 方向加速度
其中x,y,z方向的定义是以水平放置在的手机的右下脚为参照系坐标原点
x 方向就是手机的水平方向,右为正
y 方向就是手机的水平垂直方向,前为正
y 方向就是手机的空间垂直方向,天空的方向为正,地球的方向为负
所以说,你的手机放置的空间位置不同,它三个方向的加速度也不同。在这里,三个方向的加速度,与我们传统意义上的加速度(9.8m/s2)有所区别,需细细品味。
以下是摇动手机后清除TextView的文字的代码:
package gy.lovers; import java.util.ArrayList; import java.util.List; import java.util.Random; import android.app.Activity; import android.app.Service; import android.content.res.Resources; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.os.Bundle; import android.os.Vibrator; import android.view.View; import android.widget.Button; //需要实现SensorEventListener接口 public class LoversChoise extends Activity implements SensorEventListener{ Button clear; //定义sensor管理器 private SensorManager mSensorManager; //震动 private Vibrator vibrator; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.loverschoise); //获取传感器管理服务 mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); //震动 vibrator = (Vibrator) getSystemService(Service.VIBRATOR_SERVICE); clear = (Button) findViewById(R.id.clear); clear.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub //点击button后,给button按钮设置了text clear.setText("现在给button的text赋值喽~"); }); @Override protected void onResume(){ super.onResume(); //加速度传感器 mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), //还有SENSOR_DELAY_UI、SENSOR_DELAY_FASTEST、SENSOR_DELAY_GAME等, //根据不同应用,需要的反应速率不同,具体根据实际情况设定 SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onStop(){ mSensorManager.unregisterListener(this); super.onStop(); } @Override protected void onPause(){ mSensorManager.unregisterListener(this); super.onPause(); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // TODO Auto-generated method stub //当传感器精度改变时回调该方法,Do nothing. } @Override public void onSensorChanged(SensorEvent event) { // TODO Auto-generated method stub int sensorType = event.sensor.getType(); //values[0]:X轴,values[1]:Y轴,values[2]:Z轴 float[] values = event.values; if(sensorType == Sensor.TYPE_ACCELEROMETER){ /*因为一般正常情况下,任意轴数值最大就在9.8~10之间,只有在你突然摇动手机 *的时候,瞬时加速度才会突然增大或减少。 *所以,经过实际测试,只需监听任一轴的加速度大于14的时候,改变你需要的设置 *就OK了~~~ */ if((Math.abs(values[0])>14||Math.abs(values[1])>14||Math.abs(values[2])>14)){ //摇动手机后,设置button上显示的字为空 clear.setText(null); //摇动手机后,再伴随震动提示~~ vibrator.vibrate(500); } } } }
相关推荐
在Android平台上,开发一款能够指示方向的指南针应用是一个典型的传感器使用案例。本文将深入探讨如何利用Android系统提供的传感器服务来实现这一功能。 首先,我们要理解Android中的传感器系统。Android设备通常...
在Android平台上,我们可以利用内置的传感器系统来实现各种创新的功能,比如本文提到的"手机摇一摇解除闹铃"。这个功能允许用户在闹钟响起时,通过简单地摇动手机来停止闹铃,而无需触摸屏幕。接下来,我们将深入...
在Android开发中,指南针应用是一种常见的功能,它利用设备内置的传感器来指示地球的磁场北。...开发者可以通过修改和学习这个项目,深入了解Android传感器的使用和数据处理技巧,提升自己的Android应用开发能力。
通过学习这个实例,开发者可以掌握如何将传感器数据融入到应用程序中,提高用户体验,同时也能了解到如何处理传感器数据的实时性和准确性,这对于开发更复杂、更具创新性的Android应用至关重要。
开发者通过调用Android SDK中提供的相关API,能够实现对设备上硬件和软件传感器的访问与控制,进一步开发出各种创新的应用和服务。 总而言之,Android系统提供的传感器技术对移动设备的功能和用户体验有着深远的...
通过学习“Android应用之加速度传感器.ppt”,你将能掌握如何在Android应用中集成和使用加速度传感器,从而实现各种创新功能。这个文档可能涵盖了传感器的基本原理、API的使用示例、数据处理技巧等内容,对于深入...
总结,实现Android中的摇一摇小球运动,关键在于正确地使用SensorManager处理加速度传感器数据,设计合适的摇一摇检测算法,以及利用动画技术实现小球的动态效果。通过这个过程,开发者不仅可以掌握基本的传感器应用...
在Android应用中,你需要创建一个`SensorEventListener`的实现类,并重写`onSensorChanged(SensorEvent event)`方法,这个方法会在传感器数据更新时被调用。然后,通过`SensorManager`的`registerListener()`方法...
在Android平台上,获取手机传感器信息是一项关键任务,它涉及到设备的各种功能,如运动检测、环境感知等。这个程序专门设计用于正确...这些知识点对于任何想要构建涉及传感器功能的Android应用的开发者来说都至关重要。
在这个案例中,我们将重点讨论如何使用方向传感器(Orientation Sensor)来实现一个基本的水平仪。 首先,我们要理解水平仪的工作原理。传统水平仪内部有一个装满液体的透明圆盘,其中包含一个气泡。当设备倾斜时,...
首先,我们需要在应用中声明对传感器权限的使用,在`AndroidManifest.xml`文件中添加以下代码: ```xml <uses-permission android:name="android.permission.BODY_SENSORS" /> ``` 接下来,我们在代码中获取...
下面我们将深入探讨如何利用Android的加速度传感器来实现计步功能。 一、Android加速度传感器简介 Android系统提供了Sensor类和SensorManager类,用于管理和访问各种传感器,包括加速度传感器。加速度传感器...
在Android平台上,开发一个“摇一摇”功能的应用程序,主要涉及到的是设备的传感器技术,尤其是加速度计和震动传感器。下面将详细讲解这个过程涉及的技术点。 首先,我们需要了解Android系统的传感器框架。Android...
为了实现这样的功能,开发者需要编写核心模块代码,包括初始化传感器,注册监听器,解析传感器数据,以及将数据转化为游戏中的动作响应。在实际编程过程中,需要注意数据的平滑处理,以避免快速移动或抖动造成的不...
在Android平台上,传感器技术是移动应用开发中的一个重要组成部分,它为开发者提供了与设备硬件交互的能力,从而实现各种创新的功能。本示例源码主要涵盖了三种常见的传感器:加速度传感器、方位传感器和光线传感器...
在Android系统中,加速传感器是一种重要的硬件组件,它能够感知设备在三维...总之,Android的加速传感器为开发者提供了丰富的功能,通过理解和巧妙地使用它,可以开发出各种创新的应用,同时注意性能和用户体验的优化。
每个传感器的原理、使用方法和常见应用场合都有清晰的阐述,帮助开发者理解它们的工作机制并学习如何在代码中实现相应的功能。 在实际编程部分,书中有许多示例代码展示了如何注册监听器、处理传感器事件、进行...
"Android游戏开发中应用传感器的相关知识点" Android游戏开发中,传感器的应用非常广泛,包括加速度传感器、磁场传感器、陀螺仪传感器、光线传感器、压力传感器等。这些传感器可以检测到手机的各种状态和环境变化,...
在实际应用中,通常会结合其他传感器数据,如加速度计,使用传感器融合技术来提高旋转角度计算的准确性。Android提供了Sensor.TYPE_ROTATION_VECTOR传感器,它综合了陀螺仪和加速度计的信息,可以直接给出设备相对于...