当前位置: 首页 > 知识库问答 >
问题:

android wear重复sensorEventListener

伯彦君
2023-03-14

我正在开发一个Android Wear应用程序,它从一开始就记录心率,直到用户停止触碰按钮为止,这样我就不会在功能onStop或ondestroy上注销监听器。

问题是当我返回穿戴菜单,再次打开应用程序。在那一刻,应用程序再次注册监听器,并获得所有的测量重复。我尝试在函数onStart和onRestart上注销监听器,但它没有起作用。

下面是我的代码:

    ...

public class MainActivity extends Activity implements SensorEventListener {
    Sensor mHeartRateSensor;
    SensorManager mSensorManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Sensor and sensor manager
        mSensorManager = ((SensorManager)getSystemService(SENSOR_SERVICE));
        mHeartRateSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_HEART_RATE);
    }

    @Override
    protected void onStart() {
        super.onStart();  
        mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        mSensorManager.registerListener(this, mHeartRateSensor, SensorManager.SENSOR_DELAY_NORMAL);
    }
    /*
    I need the listeners are active, so i can't unregister it
    @Override
    protected void onDestroy() {
        this.mSensorManager.unregisterListeners(this);
        super.onDestroy();
    }*/

    @Override
    public void onSensorChanged(SensorEvent sensorEvent) {
        //Get heart rate and accuracy
    }

    @Override
    public void onAccuracyChanged(Sensor sensor, int i) {
        //
    }

    /*on click listeners*/
    ...
}

提前道谢。

共有1个答案

乜烨霖
2023-03-14

您可以添加一个名为misregister的布尔变量,将其默认值设置为false,并且当您要注册时,首先检查该值,如果为false,则进行注册,如果为true,则不再注册。

 类似资料:
  • 简介 本章中我会介绍重复。通过重复,你可以编写“通常的”程序。虽然也可以使用do表达式,但Scheme中通常通过递归实现重复。 递归 在自己的定义中调用自己的函数叫做递归函数(Recursive Function)。虽然这听起来很奇怪,但是循环的常见方法。如果你把函数类比为机器的话,递归似乎毫无道理。然而,正因为函数是过程,函数调用自己是有意义的。比如说,让我们来考察一下文献调研吧。你可能需要去阅

  • 下面是Gradle Build的stacktrace: Build.Gradle看起来是这样的: 编辑1:从META-INF目录中的httpmime库的本地副本中删除我有问题的文件,成功解决了此问题

  • 问题内容: 这个问题已经在这里有了答案 : “ INSERT IGNORE”与“ INSERT…ON DUPLICATE KEY UPDATE” (11个答案) 6年前关闭。 我正在尝试完成此查询;我的标签字段设置为UNIQUE,我只是希望数据库忽略任何重复的标签。 甚至可以接受 问题答案: 建议不要使用INSERT IGNORE,因为它会忽略所有错误(即,草率的全局忽略)。相反,由于在您的示例中

  • 问题内容: 我在存储的过程中有一个字符串,类似于或 从上面的字符串中,我必须从中删除多个逗号,它必须看起来像 或仅在 then时 。我必须仅使用Sql Server函数。我正在使用Sql Server 2008和.Net 3.5 提前致谢。 问题答案: 该选项适用于仅使用逗号或最多398个连续逗号的字符串。 如果需要更多,在顶部添加额外的2的幂,或者如果需要较少,则从顶部删除2的幂。每个阶段的注释

  • 我开发了一个从REST API获取访问令牌的简单类。它还没有完全实现,但它的想法是将令牌持久化到数据库中。我还有一个函数来检查是否有任何可用的令牌,如果没有,它就调用获取新令牌的函数。我还开发了一个单元测试来检查我是否获得了令牌。 我在运行测试时遇到了一个问题,NoSuchBeanDefinitionException问题。我不知道我做错了什么。我对Spring boot还很陌生,所以感谢所有的帮

  • 为什么会出现这种错误?我正在使用freemarker-2.3.20和spring-webmvc-3.2.17

  • 问题内容: java.util.Collections.max的签名如下所示: 公共静态<T扩展对象和可比较<?超级T >> T max(Collection collection); 据我了解,它基本上意味着T必须既是 java.lang.Object又是java.lang.Comparable <?超级T >> , 但是,由于每个java.lang.Comparable也是java.lang.

  • 我是新来这个网站的。 我一直无法连接到我创建的Java数据库。我使用了以下代码,但给出了 java.lang.ClassNotFoundException:org.apache.derby.jdbc.clientDriver 作为一个错误。 我试着浏览了很多论坛和提要,但没有一个建议是有效的。