- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个为 Cordova 应用程序编写的 Android 后台服务,我想通过 sensorManager 与加速度计进行交互。
我觉得我已经很接近了,但我认为还不够。
出于某种原因,sensorManager.registerListener 似乎没有触发 onSensorChanged 方法 - 我每 5 秒检查一次来自 MyService(我的后台服务类)的 X 值。
根据我的阅读,这与需要对 registerListener 的句柄有关,但我不确定......是什么或如何。
这是我的代码(为了便于阅读而删减):
class AccelListener implements SensorEventListener
{
public AccelListener(Context ctx) {
mCtx = ctx;
sensorManager = (SensorManager) mCtx.getSystemService(Context.SENSOR_SERVICE);
}
public int start() {
List<Sensor> list = this.sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if ((list != null) && (list.size() > 0)) {
this.mSensor = list.get(0);
this.sensorManager.registerListener(this, this.mSensor, SensorManager.SENSOR_DELAY_UI);
}
return this.status;
}
public void onSensorChanged(SensorEvent event) {
if (this.accuracy >= SensorManager.SENSOR_STATUS_ACCURACY_MEDIUM) {
this.timestamp = System.currentTimeMillis();
this.x = event.values[0];
this.y = event.values[1];
this.z = event.values[2];
}
}
}
public class MyService extends BackgroundService
{
protected JSONObject doWork() {
JSONObject result = new JSONObject();
Context thisContext = getApplicationContext();
AccelListener objAccel = new AccelListener(thisContext);
int intAccelReturn = objAccel.start();
setInterval(function()
{
result.put("OUTPUT", objAccel.x);
},5000);
}
非常感谢任何帮助。
谢谢
哦。
最佳答案
另一个区别
List<Sensor> list=
this.sensorManager.getSensorList(Sensor.TYPE_ACCELEROMETER);
if ((list != null) && (list.size() > 0)) {
this.mSensor = list.get(0);
this.sensorManager.registerListener(this, this.mSensor,
SensorManager.SENSOR_DELAY_UI);
}
和
this.mSensor = this.sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_UI);
是否在第二个示例中引用了 DefaultSensor 而不是列表中的任何传感器。您确定索引 0 处的传感器实例就是您要引用的那个吗?
BR
关于java - 后台服务中的 sensorManager.registerListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223754/
要在 Android 中从欧拉角(例如俯仰、滚转、方位角)中获取方向,需要执行以下操作: SensorManager.getRotationMatrix(float[] R, float[] I, f
API 演示 -> 图形 -> Compass 它只能正常工作,直到您不更改设备的自然方向。在大多数手机中是纵向的,而大多数 10 英寸平板电脑是横向的。如果您进行更改,则需要将其旋转 90 度。我希
我的线程上有此命令,但它不起作用:sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 我想在不打开我的应用程序的情况下创
我希望实现一个 SensorManager 类,它可以处理所有与传感器相关的事情,但这显然需要我启动一个新 Activity 。 我不打算这样做 - 只是运行计算。是使用服务处理此问题的最佳方式,您可
我正在为平板电脑开发一个应用程序,平板电脑将放在一个围绕给定点旋转的支架上。这意味着当应用程序首次打开时,很少从平板电脑移动。该应用程序将根据平板电脑在支架上的旋转显示各种内容。无论我多么努力地搜索,
在我的应用中,我使用光线和接近传感器来检测手机自掏腰包功能,然后在检测完成后注销 SensorManager。但是,即使应用程序的 CPU 使用率仅显示 1-2 秒,电池使用率始终显示我的应用程序为否
我的应用程序创建了一个 Service,它覆盖了 onStartCommand 以创建一个 SensorManager 并将一个 SensorEventListener 附加到其中一个传感器: pub
我需要检索手机的方向。目前我写了这个: public void onSensorChanged(SensorEvent event) { switch (event.sensor.getType(
我正在为我的 Android 应用程序使用传感器。我用一行代码注册传感器: mySensorManager.registerListener(this, orientationSensor, Sens
我在以下的帮助下获得了我的手机方向 SensorManager.getOrientation 但是结果很不稳定,大概+-8度,有什么好的过滤结果的方法吗? 这是我获取值的方式: public void
我有一个为 Cordova 应用程序编写的 Android 后台服务,我想通过 sensorManager 与加速度计进行交互。 我觉得我已经很接近了,但我认为还不够。 出于某种原因,sensorMa
我在 logcat 中遇到传感器管理器和错误的问题。当我用这一行注册监听器时: sensorMgr.registerListener(this, sensorMgr.getDefaultSensor(
我在资源中找到了这个值。 /** Standard gravity (g) on Earth. This value is equivalent to 1G */ public static
我一直在研究如何在我的 Android 应用程序中读取步数,并在文档中找到了两种完全不同的方法: Using SensorManager : val sensorManager = getSystem
我使用单例模式实现了一个简单的指南针类。一旦我向传感器管理器注册了加速度计和磁力计监听器,内存消耗就会增加。我的 GPS 类与指南针类非常相似,并且我没有出现内存泄漏问题。我在 onSensorCha
@Override protected void onResume(){ //super.onResume(); sensorManager.registerListener
Scala/Android 新手问题。我正在尝试将这个简单的代码从 Java 重写为 Scala。Java 工作代码: private final SensorEventListener mAccLi
我的源代码是: import android.content.Context; import android.hardware.SensorManager; public class ShakeEve
我在三星 S6 上使用心率传感器。为了访问此传感器,从 SDK 版本 > 23 开始,用户必须授予 BODY_SENSORS 权限 https://stackoverflow.com/a/326360
我使用 StackOverflow 的一些建议编写了一个加速度计应用程序(用于学习目的)。一切正常,但我在代码中收到“SensorManager.DATA_X 已弃用”消息作为警告: // setup
我是一名优秀的程序员,十分优秀!