我尝试使用加速度计检测震动事件。我发现,当我连续摇动手机时,值(value)差异加速度还是比较稳定的。但是当我旋转手机时,这个值总是有很大的变化(这个值通常比“不旋转摇晃”的值大)。我想关注摇晃事件,而不是旋转事件。有没有办法解决问题是什么?这是我的shaing检测代码publicvoidonSensorChanged(SensorEventevent){if(event.sensor.getType()==SensorManager.SENSOR_ACCELEROMETER){nowTime=System.currentTimeMillis();floatx=event.values
我想开发一个应用程序,我需要知道我的设备在建筑物内的位置(设备当前所在的房间)。GPS在建筑物中不工作。有没有办法找到设备在建筑物中的位置?如果是如何?我可以为此目的使用位置或运动传感器或它们的组合吗? 最佳答案 没有通用的解决方案。如果您可以在建筑物中放置WiFi热点/中继器(最好在每个房间),您可以根据WiFi信号强度对位置进行三角测量。但这也不简单,因为通过墙壁和地板的信号损失不同。您需要提前勘测建筑物并制作信号强度图,然后根据您收到的信号在map上查找您的位置。运动传感器也不够精确,如果您在钢结构内部,指南针也不准确。
我需要检索手机的方向。目前我写了这个:publicvoidonSensorChanged(SensorEventevent){switch(event.sensor.getType()){caseSensor.TYPE_MAGNETIC_FIELD:this.mag_vals=event.values.clone();this.sensorReady=true;break;caseSensor.TYPE_ACCELEROMETER:this.acc_vals=event.values.clone();break;}if(this.mag_vals!=null&&this.acc_val
我想知道我是否可以在不使用定位服务的情况下使用(线性)加速度计和指南针来计算速度。我想通过计算北/西/上轴的加速度分量并随时间对它们进行积分来做到这一点。那行得通吗? 最佳答案 一般来说,安卓设备上的加速度计噪音太大,无法整合信号并获得速度。此外,您还需要对设备方向进行近乎完美的估计,即使使用陀螺仪(很少有设备拥有)通常也噪音太大。主要问题是从加速度计信号中减去重力,因为重力通常是信号的很大一部分。如果电话方向估计略有偏差,则重力会在错误的方向上被减去。这会使加速度的分量方向错误,您的速度估计很快就会变得毫无用处。当您知道设备没有移
我正在开发将SensorManager用于不同目的的Android应用程序。在调查过程中,我发现Sensor.getResolution()函数为不同的设备返回不同的值:HTCSensation的所有板载传感器的分辨率值为1.0。摩托罗拉XOOM:3-axisAccelerometer->0.0095768073-axisMagneticfieldsensor->0.0625L3G4200DGyroscopesensor->0.0012217305LinearAccelerationSensor->0.009576807GravitySensor->0.009576807在使用适当的传
我正在尝试编写最简单的陀螺仪实现(仅在屏幕更改时记录屏幕的方向)。有人可以提供一个简单的例子吗?这就是我现在正在尝试的:publicclassLessonFiveGLSurfaceViewextendsGLSurfaceViewimplementsSensorEventListener{privateLessonFiveRenderermRenderer;publicLessonFiveGLSurfaceView(Contextcontext){super(context);System.out.println("test");}@OverridepublicvoidonSensorC
有人可以举例说明如何使用接近传感器吗?我尝试像使用其他传感器一样使用它,但它不起作用。这是我一直在使用的代码fragment:finalSensorManagermSensorManager;finalSensormproximity;mSensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);mproximity=mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);mSensorManager.registerListener(newSensorListener
是否可以在查看相机预览时知道手机指向哪个方向,还是必须像指南针一样将手机放平。谢谢 最佳答案 是的——下面的代码应该可以完成这项工作publicclassTestextendsActivityimplementsSensorEventListener{publicstaticfloatswRoll;publicstaticfloatswPitch;publicstaticfloatswAzimuth;publicstaticSensorManagermSensorManager;publicstaticSensoraccelerom
有什么方法可以获得每秒的传感器读数?以秒为单位的SENSOR_DELAY_NORMAL速率是多少?sm=(SensorManager)getSystemService(SENSOR_SERVICE);accelerometer=sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);sm.registerListener(this,accelerometer,SensorManager.SENSOR_DELAY_NORMAL); 最佳答案 谢谢,它也回答了我的问题,我使用的是1000,似乎值以微
更新:我能够通过引入类范围静态计数器并忽略x数量的事件来解决我遇到的特定问题。但我仍然想知道我做错了什么:以微秒为单位用提示注册监听器,而不是使用四个给定常量之一。我的应用程序中的一个Activity正在连接传感器以获取设备的方向、确定滚动并使用它。我正在使用SensorManager.registerListener(SensorEventListenerlistener,Sensorsensor,intrate)注册我的传感器。来自AndroidDocumentationforthismethod:Parameters[...]rateTheratesensoreventsared