`

Android-Sensor重力感应器灵敏度问题

阅读更多

项目中的使用经验:

Sensor重力感应器的灵敏度调整主要是跟下面两个东西有关

(1)float[] values = SensorEvent.values的三个值的检测,SensorEvent.values 值的单位是:米/秒^2(加速度)

(2)Sensor的registerListener()中的SensorManager.SENSOR_DELAY_FASTEST参数的设置

 

直接上代码了(这是项目中的感应器类的代码):代码中有参数设置的说明,

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

public class HpSensor {
	private IShake mIShake;
	private Sensor mSensor;
	private SensorManager mSensorManage;
	private SensorEventListener mSensorEventListener;
	private boolean SensorRegistOK;

	public HpSensor(Context aContext, IShake aIShake){
		mIShake = aIShake;
		mSensorManage = (android.hardware.SensorManager)aContext.getSystemService("sensor");
		mSensor = mSensorManage.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
		mSensorEventListener = new android.hardware.SensorEventListener(){
			@Override
			public void onSensorChanged(SensorEvent event) {
				int sensorType = event.sensor.getType();
				float[] values = event.values;
				if(SensorRegistOK && (sensorType == Sensor.TYPE_ACCELEROMET                                  ER) && (values.length >= 3)){    
 //values[0]表示三维中的x轴,values[1]表示y轴,values[2]表示z轴,下面被注释掉的代码灵敏度在某些设备中不高,这里将校验值变小,15改为12(也可以更小),并去掉z轴的校验,即z轴方向的移动不做逻辑处理,只响应水平的移动
 // if((Math.abs(values[0])>15||Math.abs(values[1])>15|                                           |Math.abs(values[2])>15)){
    if((Math.abs(values[0])>12||Math.abs(values[1])>12)){
	mIShake.doSomething();
					}
				}
			}

			@Override
			public void onAccuracyChanged(Sensor sensor, int accuracy) {
			}
		};
	}

	public void register(){
               //这里可以直接设置第三个参数的值,设置的越大,则感应的频率越高,灵敏度也越高,实际测试中频率太高会导致系统版本较低的设备感应器不能正常使用,如2.2的设备不能大于3,否则失效,版本2.3及已上能适应更大的频率
//		SensorRegistOK = mSensorManage.registerListener(mSensorEventListener, mSensor, 3);
		SensorRegistOK = mSensorManage.registerListener(mSensorEventListener, mSensor,SensorManager.SENSOR_DELAY_UI);
	}

	public void unregister(){
		mSensorManage.unregisterListener(mSensorEventListener, mSensor);
	}
}

 

 

 

0
0
分享到:
评论

相关推荐

    Android重力感应传感器Sensor.TYPE_ACCELEROMETER

    加速度传感器可能存在零点偏移、灵敏度差异等误差,设备厂商通常会在生产过程中进行校准。然而,随着时间的推移,传感器可能会漂移,需要用户或应用进行手动校准。 总结来说,Sensor.TYPE_ACCELEROMETER是Android...

    android-sensor

    "android-sensor"这个主题主要涵盖了如何在Android设备上利用传感器,特别是重力感应器,来创建交互式应用。在这个压缩包中,有两个文件:`uuid.avi` 和 `android_sensor_data.ppt`,它们可能是教学视频和演示文稿,...

    Android 重力感应游戏-疯狂的小球

    考虑到不同用户对重力感应的敏感度不同,游戏通常会提供灵敏度设置,允许玩家根据个人喜好调整。此外,良好的视觉反馈和音效设计也是提升游戏体验的重要组成部分。 总之,"疯狂的小球"作为一款基于Android重力感应...

    Android手机平台重力感应Demo.zip

    在Android平台上,重力感应功能是一项重要的硬件特性,它允许应用程序感知设备的移动和方向变化。这个名为"Android手机平台重力感应Demo.zip"的压缩包包含了一个示例项目,旨在帮助开发者理解和实现如何在Android...

    android重力感应

    在Android平台上,重力感应是通过传感器服务来实现的,它可以帮助开发者获取设备在空间中的运动状态,例如手机的翻转、倾斜等动作。本文将深入探讨如何在Android中进行重力感应的开发,以及相关的知识和技术。 首先...

    Android 利用重力感应调整手机模式

    在本实例中,我们将探讨如何利用重力感应器(Gravity Sensor)来实现根据手机朝向自动调整手机模式的功能。这个功能可以让用户在不手动操作的情况下,轻松切换手机的状态,例如从正常模式到震动模式。 首先,我们...

    android 重力感应小游戏,对安卓重力感应坐标有很好的诠释

    Android系统提供了SensorManager服务来访问各种传感器,包括重力感应器。开发者可以通过以下步骤获取并处理重力感应数据: 1. 获取SensorManager实例:`SensorManager sensorManager = (SensorManager) ...

    Android重力感应的测试程序源码.zip

    在Android平台上,重力感应是通过传感器服务(Sensor Service)来实现的,它允许应用程序获取设备的物理运动数据。这个"Android重力感应的测试程序源码.zip"包含了一个示例项目,帮助开发者理解如何利用Android SDK...

    Android重力感应

    在Android开发中,重力感应是一项重要的功能,它允许应用程序根据设备的移动和方向来响应用户的操作。在标题“Android重力感应”中提到的“飘落树叶”和“用力摇晃手机掉元宝”是两个典型的示例,它们展示了如何利用...

    Android基于Sensor感应器获取重力感应加速度的方法

    `Sensor`类中还有许多方法用于获取传感器的属性,如名称、厂商、灵敏度等。通常,我们并不直接创建`Sensor`对象,而是通过`SensorManager`获取。 `SensorManager`类是Android系统中负责管理所有传感器的组件,它...

    Chase Whisply重力感应游戏 -Android

    在Android开发中,实现重力感应功能主要依赖于Android提供的Sensor框架。Sensor框架是Android系统用来处理传感器数据的一套API,它可以获取到设备的各种传感器信息,包括加速度传感器、陀螺仪、磁力计等。对于重力...

    android 根据重力感应换歌

    在Android平台上,重力感应是一种常见的传感器技术,用于检测设备在空间中的移动和方向变化。开发者可以利用这种技术为用户提供丰富的交互体验,例如在音乐播放应用中,根据设备的倾斜或翻转来切换歌曲。本篇文章将...

    GMA302KU Datasheet

    GMA302KU 是一款高性能的G-Sensor(重力感应传感器),广泛应用于移动设备、物联网(IoT)设备以及汽车电子系统等领域。这款传感器能够精确地检测并转换三轴加速度,为用户提供高质量的运动数据。本文将对GMA302KU的...

    智能产品中的传感器技术分解PPT学习教案.pptx

    首先,【重力感应器(G-sensor)】是通过压电效应工作,测量内部重物在不同方向上的力,以确定设备的水平方向。这种技术广泛应用于游戏、屏幕自动旋转等功能,使得手机可以根据用户握持或转动设备的角度自动调整显示...

    KXTJ3-1057-Specifications-Rev-5.0_3轴加速计_奇思_ROHM.pdf

    - 改进的设计几乎消除了回流焊后偏移和灵敏度变化。 7. 产品说明书的最后部分提供了Kionix公司的联系方式,包括电话、传真、网站和电子邮件信息,以及版权信息和文档编号。 8. 扫描文档时的OCR错误被识别并纠正,...

    HTC G_SENSOR 代码

    在智能手机领域,HTC G_SENSOR 是一种重力感应器,用于检测设备在三维空间中的运动和方向变化。这种传感器基于微电子机械系统(MEMS)技术,能够捕捉到手机在X、Y、Z三个轴上的加速度变化。G_SENSOR 在手机上的应用...

    安卓开发-指南针定位源码.zip

    本压缩包"安卓开发-指南针定位源码.zip"包含了实现这一功能的源代码,对于学习和理解安卓定位及方向感应器的应用非常有帮助。 首先,指南针的实现主要依赖于安卓系统的Sensor类,特别是Orientation Sensor(方向...

    6-4(加速度传感器).7z

    使用SensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER)可以获取设备上的加速度传感器实例,然后调用SensorManager.registerListener()方法注册监听器,设置所需的感应灵敏度和更新频率。 4. **数据处理**:...

    Gsensor mc3433.pdf

    传感器特性描述了加速度传感器的性能指标,如噪声、灵敏度和线性度。电气和定时特性描述了工作电压、输入输出电平等参数,这些参数对于系统设计者在设计电路和软件时是必须了解的。 最后,MC3433的数据表还提供了...

Global site tag (gtag.js) - Google Analytics