Tag: 传感器

当屏幕closures时,Android加速计不工作

我正在为计算机科学的最终论文开发一个应用程序,我需要收集和logging加速计数据。 我需要整整一天的时间,所以有严重的电池限制(例如,我不能离开屏幕)。 此外,这不是一个市场针对性的应用程序,所以如果需要的话,做一些严重的黑客攻击,甚至是低级的C / C ++编码是相当可接受的。 众所周知,在许多设备上,加速度计事件的侦听器在屏幕熄灭时停止生成事件(有关此问题的一些链接: http : //code.google.com/p/android/issues/detail? id = 3708 , Accelerometer在Droid / Nexus One屏幕closures的情况下停止提供样本,即使使用WakeLock也是如此 )。 我彻底search了一些替代品,其中一些包括变通办法,不适用于我的设备(LG P990,股票ROM)。 那么会发生什么呢:当你在一个服务中注册一个android加速度计传感器的事件监听器时,它会正常工作,直到屏幕closures。 我已经尝试在IntentService上的Service上注册eventListener,试图获取WakeLocks。 关于wakelocks,我可以validation服务仍在运行看LOGcat输出,但似乎加速度计进入睡眠模式。 在一些链接中提出的解决方法之一是使用IntentService的线程定期注销和重新注册事件监听器,就像下面的代码片段 synchronized private static PowerManager.WakeLock getLock(Context context) { if (lockStatic==null) { PowerManager mgr=(PowerManager)context.getSystemService(Context.POWER_SERVICE); lockStatic = mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,NAME); lockStatic.setReferenceCounted(true); } return(lockStatic); } @Override protected void onHandleIntent(Intent intent) { sensorManager=(SensorManager) getSystemService(SENSOR_SERVICE); sensorManager.unregisterListener(this); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), […]

如何结合OpenGL使用onSensorChanged传感器数据

(编辑:我在增强现实框架中添加了最好的工作方法,现在还考虑了陀螺仪,使其更加稳定: DroidAR框架 ) 我已经编写了一个TestSuite来了解如何根据您在SensorEventListener.onSensorChanged()获得的数据来计算旋转angular度。 我真的希望你能完成我的解决scheme来帮助像我这样有同样问题的人。 这里是代码,我想你会在阅读之后理解它。 随意改变它,主要想法是实现几种方法发送方向angular度的opengl视图或任何其他目标,将需要它。 方法1到4正在工作,它们直接将rotationMatrix发送到OpenGl视图。 方法6现在也适用,但我没有解释为什么旋转必须做yx z .. 所有其他方法不工作或越野车,我希望有人知道让他们working.I认为最好的方法将是方法5,如果它的工作,因为这将是最容易理解,但我不知道它是多么有效率。 完整的代码没有优化,所以我build议不要使用它,因为它是在你的项目。 这里是: /** * This class provides a basic demonstration of how to use the * {@link android.hardware.SensorManager SensorManager} API to draw a 3D * compass. */ public class SensorToOpenGlTests extends Activity implements Renderer, SensorEventListener { private static final boolean TRY_TRANSPOSED_VERSION = false; […]

如何计算手机在静止的垂直方向上的移动?

我正在开发一个应用程序使用Android操作系统,我需要知道如何计算设备在垂直方向上的运动。 例如,设备处于静止状态(A点),用户拿起它(B点),现在A点和B点之间有一个高度变化,我将如何计算? 我已经阅读了关于传感器和加速度计的文章,但是我找不到任何帮助我的东西。 任何人有任何想法?

Android – 加速下(粉碎)

video为那些不明白的人解释 这个答案是不正确的答案请尝试用其他解决scheme来回答(100赏金是过时的) 同样的问题,但更好的解释 这个问题被认为是正确的,但一点也没有,我用我的旧设备中兴通讯试了它,大部分时间都是这样,但现在我有一个三星Galazy A5 2016,它不起作用,LG G3 。 事情是尝试使用Accelerometer和一些Sensors我必须能够检测到在video上做出的这两个动作中的任何一个。 有两个动作: 粉碎它(用一点速度) 自由落体 我让你决定说服我什么是更好的select,更容易做,更好的我的意思是在大多数设备上的作品。

Android TYPE_LINEAR_ACCELERATION传感器 – 它显示了什么?

我正在开发汽车加速追踪应用程序。 我使用标准的加速度计,事先在特定的位置进行校准。 然后,假设手机的方向不变,我将加速计数据logging了一段指定的时间,并计算了移动参数,其中一个参数是testing结束时的车速。 它在一条平直的,横向的道路上工作得很好:几个百分点的错误。 但后来我发现,在API级别10中有一个名为TYPE_LINEAR_ACCELERATION的虚拟传感器,据我所知,它必须做我所需要的:过滤引力,方向变化 – 所以我可以使用它,并获得纯粹的线性加速度的移动设备。 但在现实生活中.. 我做了一个简单的应用程序,做了一个小testing: //public class Accelerometer implements SensorEventListener { … public void onSensorChanged(SensorEvent se) { if(!active) return; lastX = se.values[SensorManager.DATA_X]; lastY = se.values[SensorManager.DATA_Y]; lastZ = se.values[SensorManager.DATA_Z]; long now = System.currentTimeMillis(); interval = now – lastEvetn; lastEvetn = now; out.write(Float.toString(lastX) + ";" + Float.toString(lastY) + ";" + Float.toString(lastZ) + ";" […]

奇怪的行为与android方向传感器

目前,我正在尝试使用方向传感器值使用getRotation()方法来旋转3D立方体。 当Android设备被旋转到一些边界之上时,会观察到一些意外的行为。 例如,如果我让设备“站起来”,“滚动”的价值就变得疯狂了。 此外,我正在经历类似于所谓的万向节锁的现象。 唯一的区别是我甚至在将传感器值应用到3D旋转之前遇到了这个问题。 当我尝试通过仅围绕“俯仰”轴旋转装置来改变“俯仰”值时,“俯仰”值也根据俯仰的旋转而改变。 对我来说这似乎完全不合理。 有人能帮我吗? 我被困在这个问题上一个月了。