Android传感器的运用之ACCELEROMETER
来源:互联网 发布:excel 数据分组 编辑:程序博客网 时间:2024/05/22 10:38
Android中支持很多种传感器:
比如加速度,重力的,光感,磁感等等。
在运用该API常用到的两个类和一个接口
SensorManager:传感器管理类;
Sensor:一个描述传感器的类;
SensorEventListener:传感器事件监听类(SensorListener类已过期);
一般运用步骤:
2.实例化一个你需要使用的sensor对象。
也可以通过getSensorList()来获取所有的传感器对象,返回一个list;
3.实现传感器监听接口
4.注册传感器
5.反注册传感器
代码例子都很简单简短。
以下附上我以前用到的一个关于加速度的传感器,我用来做摇晃事件监听;
上面是自己实现的一个关于加速度的传感器类
在Activity中实例化该类,并实现onShakeListener接口
然后你可以在Activity的几个生命周期中实现它的注册和反注册。
在onshakeListener中onShake方法中做传感器检测到变动的事件处理。
比如加速度,重力的,光感,磁感等等。
在运用该API常用到的两个类和一个接口
SensorManager:传感器管理类;
Sensor:一个描述传感器的类;
SensorEventListener:传感器事件监听类(SensorListener类已过期);
一般运用步骤:
1.通过上下文获取SensorManager的对象。
Context.getSystemService(Context.Sensor_service);
2.实例化一个你需要使用的sensor对象。
Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
也可以通过getSensorList()来获取所有的传感器对象,返回一个list;
3.实现传感器监听接口
4.注册传感器
5.反注册传感器
代码例子都很简单简短。
以下附上我以前用到的一个关于加速度的传感器,我用来做摇晃事件监听;
/** * 摇动检测器 * @author Nono * */public class ShakeDetector implements SensorEventListener{private static final String TAG = ShakeDetector.class.getSimpleName(); private static final double SHAKE_SHRESHOLD = 7000d; private Context mContext; private long lastTime ; private float last_x; private float last_y; private float last_z; private SensorManager sensorManager; private onShakeListener shakeListener; /** * 构造 * @param context */ public ShakeDetector(Context context){ mContext = context; sensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE); } /** * 注册传感器 */public boolean registerListener() {if (sensorManager != null) {Sensor sensor = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);if (sensor != null) {this.sensorManager.registerListener(this, sensor,SensorManager.SENSOR_DELAY_GAME);LogUtil.log(TAG, "registerListener: succeed!!");return true;}}return false;} /** * 反注册传感器 */public void unRegisterListener() {if (sensorManager != null)sensorManager.unregisterListener(this);}public void setOnShakeListener(onShakeListener listener){shakeListener = listener;}public void onSensorChanged(SensorEvent event) {//if (event.sensor.getType() == SensorManager.SENSOR_ACCELEROMETER) {long curTime = java.lang.System.currentTimeMillis();if ((curTime - lastTime) > 10) {long diffTime = (curTime - lastTime);lastTime = curTime;float x = event.values[0];floaty = event.values[1];float z = event.values[2];float speed = Math.abs(x + y + z - last_x - last_y - last_z)/ diffTime * 10000;if (speed > SHAKE_SHRESHOLD) {// 检测到摇晃后执行的代码shakeListener.onShake();}last_x = x;last_y = y;last_z = z;}//}}public void onAccuracyChanged(Sensor sensor, int accuracy) {// TODO Auto-generated method stub}/** * * @author Nono * */public interface onShakeListener{public void onShake();}}
上面是自己实现的一个关于加速度的传感器类
在Activity中实例化该类,并实现onShakeListener接口
@Overrideprotected void onCreate(Bundle savedInstanceState) {requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);super.onCreate(savedInstanceState);mContext = this;mShakeDetector = new ShakeDetector(mContext);mShakeDetector.setOnShakeListener(this);
然后你可以在Activity的几个生命周期中实现它的注册和反注册。
在onshakeListener中onShake方法中做传感器检测到变动的事件处理。
- Android传感器的运用之ACCELEROMETER
- Android传感器的运用之ACCELEROMETER
- Android传感器的运用之ACCELEROMETER
- PhoneGap 16 Android传感器之Accelerometer
- android accelerometer传感器demo
- Android传感器API之:加速度Accelerometer功能源码
- Android——加速传感器(ACCELEROMETER)的应用
- Windows Phone开发之Accelerometer-加速度传感器
- android-传感器的简单运用
- 加速度传感器Accelerometer
- input模型之加速传感器(accelerometer)驱动浅析
- Android之传感器的分析
- Android传感器之磁场传感器
- Android传感器之陀螺仪传感器
- Android传感器之加速度传感器
- Android传感器之距离传感器
- Android传感器之光照传感器
- Android传感器之姿态传感器
- Android 系统自带样式Android:theme
- 报表Birt report
- iphone-common-codes-ccteam源代码 CCNSTimer.h
- 用于运行 ASP.NET 的进程帐户必须具有对 IIS 元数据库(如 IIS://servername/W3SVC)的读访问权
- iphone-common-codes-ccteam源代码 CCNSTimer.m
- Android传感器的运用之ACCELEROMETER
- 可以给build.xml改名,例如改成HelloWorld.xml
- 第六章堆排序之“优先级队列实现先进先出队列和栈”(练习6.5-6)
- iphone-common-codes-ccteam源代码 CCNSURL.h
- Android支持Java哪些特性?
- How to submit a patch to upsream
- iphone-common-codes-ccteam源代码 CCNSURL.m
- MYSQL存储过程中简单对光标进行判断的demo
- 推荐6款常用的Java开源报表制作工具