如何知道我的 SensorManager 是否有已注册的传感器

2024-03-12

我正在为我的 Android 应用程序使用传感器。我用一行代码注册传感器:

mySensorManager.registerListener(this, orientationSensor, SensorManager.SENSOR_DELAY_NORMAL);

我引入了一行代码来取消注册侦听器,这样它就不会一直运行:

mySensorManager.unregisterListener(this);

到目前为止它有效,但我需要在应用程序恢复时再次注册它。我需要知道我的传感器管理器是否有已注册的侦听器,以便我可以再次注册或跳过它。可以做这样的事情吗?:

if (mySensorManager.getRegisteredListenerList == null){ registerListener() } else { .. }

据我所知,没有本地方法可以检查您是否已经注册了侦听器。我不会太担心这个检查,因为这个检查已经由 Android 完成,所以如果你已经注册了监听器,Android 不会添加相同的监听器两次:

@SuppressWarnings("deprecation")
private boolean registerLegacyListener(int legacyType, int type,
        SensorListener listener, int sensors, int rate)
    {
        if (listener == null) {
            return false;
        }
        boolean result = false;
        // Are we activating this legacy sensor?
        if ((sensors & legacyType) != 0) {
            // if so, find a suitable Sensor
            Sensor sensor = getDefaultSensor(type);
            if (sensor != null) {
                // If we don't already have one, create a LegacyListener
                // to wrap this listener and process the events as
                // they are expected by legacy apps.
                LegacyListener legacyListener = null;
                synchronized (mLegacyListenersMap) {
                    legacyListener = mLegacyListenersMap.get(listener);
                    if (legacyListener == null) {
                        // we didn't find a LegacyListener for this client,
                        // create one, and put it in our list.
                        legacyListener = new LegacyListener(listener);
                        mLegacyListenersMap.put(listener, legacyListener);
                    }
                }
                // register this legacy sensor with this legacy listener
                legacyListener.registerSensor(legacyType);
                // and finally, register the legacy listener with the new apis
                result = registerListener(legacyListener, sensor, rate);
            }
        }
        return result;
    }

所以你可以根据需要多次调用registerListener,它只会添加一次:)

这同样适用于取消注册逻辑

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何知道我的 SensorManager 是否有已注册的传感器 的相关文章

随机推荐

  • Tapestry 5.4:如何使用外部 dist 包?

    我想使用 swagger ui 中的 dist 包来公开我的 web 服务 dist pkg 位于此处 https github com swagger api swagger ui tree master dist https githu
  • 核心数据不保存对 Transformable 属性的更改

    我正在保存一个NSMutableArray在我的核心数据存储中的 Transformable 属性中 我可以使用中的数据正确创建实体NSMutableArray然后将其从属性中加载出来 甚至进行更改 当我浏览我的应用程序并重新访问它时 我的
  • 如何在jsp中显示从dao获取的数据

    in jsp table width 100 border 0 cellspacing 2 cellpadding 2 tr class tab highlighted 2 td class tab highlighted 2 width
  • 如何创建php调度进程?

    我被要求创建一个网络应用程序 它将在特定时间内向用户发送更新 例如 2009 年 6 月至 8 月期间 user1 每 5 分钟请求一次更新 user2 仅今天每 10 分钟请求一次更新 从 2009 年 6 月到 8 月 user3 每
  • 当我使用 Tomcat 7 JDBC 连接池取消部署 Web 应用程序时,为什么连接仍然存在?

    我已经将一个最小的 Spring Web 应用程序部署到 Tomcat 7 0 22 它由几个页面 一个控制器 一个服务和一个 DAO 组成 该 DAO 有一个运行 SELECT 查询的方法 Web 应用程序配置为使用新的Tomcat JD
  • 访问带有向量索引的矩阵

    我有一个矩阵 a 16x3 和一个向量 b 16x1 b 显示矩阵 a 中每行有多少个有效值 a magic 3 a 8 1 6 3 5 7 4 9 2 b 1 3 2 b 1 3 2 我想做的是将无效值设置为 NaN a b 1 end
  • 活动滚动时绘制面板边框

    当我尝试制作面板边框时 我遇到了问题 首先我将属性面板设置为 自动滚动 真 然后我将边框绘制代码放在面板事件中 ControlPaint DrawBorder e Graphics ClientRectangle Color Black 5
  • 需要 FLAG_ACTIVITY_NEW_TASK 澄清

    所以我的问题是 我启动 App1 打开 Screen1 然后打开 Screen2 我按 Home 键 将 App1 留在后台 我打开 App2 并启动 App1 Screen1FLAG ACTIVITY NEW TASK https dev
  • 通过 VBA 设置默认打印机

    我正在运行一个在两台打印机之间切换的 Excel 宏 一台名为 RecOffice Pink 另一台名为 RecOffice White 这是解决 VBA 无法轻松指定打印托盘问题的一个巧妙的解决方法 粉红色打印机除了一个纸盘之外的所有纸盘
  • 抓取 Finviz 页面以获取表中的特定值

    首先我要说的是 我不支持抓取服务条款不允许的网站 这纯粹是为了从各个网站假设收集财务数据的学术研究 如果有人想看这个链接 存储在 URLs csv 文件中 想要抓取第 2 5 列 即 Ticker Perf Week Perf Month
  • 使用 csv 文件从元组到整数

    我在使用 csv reader 时遇到了一些问题 我有两个文件 FileA 对应 9 个地理坐标 x 第 1 列 和 y 第 2 列 没有标题 该文件从 Excel 保存到 csv 文件中 301506 5918202 301012 591
  • 防止注销后的返回操作

    注销后 如果我按浏览器中的后退按钮 它不应该显示上一页 它必须转到默认页面 仅限登录页面 所以我尝试了很多方法 Ruby on Rails应用程序 例如 history forward onbeforeunload 元标记中的过期缓存 ht
  • 使用 sed 交换两个单词

    我试图交换一行中的两个单词 但它不起作用 例如 今天是我大学的第一天 应该是 我的今天是大学的第一天 这是我尝试过的 sed s a zA z0 9 a zA z0 9 a zA z0 9 3 2 1 filename txt 我究竟做错了
  • 阻止导入的模块出现在代码完成中?

    如何防止导入的模块被访问 即堵塞我的代码完成选项 例如 testmodule py import os def o stuff return 当我导入时testmodule 我不想os每次我打字时都会出现testmodule 我只想要在 t
  • 基于寄存器的虚拟机如何工作?

    基于寄存器的虚拟机如何工作 我正在寻找有关基于寄存器的虚拟机如何工作的介绍 有人可以帮忙吗 谢谢 具有可用源代码的基于寄存器的 VM 的一个示例是Lua http www lua org 有许多资源可能会有所帮助 Lua 5 0的实现 ht
  • WPF Ribbon - 隐藏选项卡标题(单选项卡应用程序)

    我是 WPF 新手 正在尝试使用功能区控件 我的应用程序中有一个选项卡 并且希望隐藏标题但仍显示选项卡本身 我一直在尝试各种属性和样式 但我只能隐藏整个选项卡 我尝试过 ribbontab 可见性 ribbontab header 可见性
  • 无论如何,Task.Factory.StartNew 在 UI 线程上调用

    我必须处理一个奇怪的问题 至少从我的角度来看是这样 我使用任务来等待变量获取特定值 然后再次在 ui 线程上运行 继续 部分 现在的问题是 在我调用 StartNew 之前 调用内部的 ManagedThreadId 是相同的 它会冻结我的
  • 检查表达式语言中是否存在参数[重复]

    这个问题在这里已经有答案了
  • 如何使用 ObservableObject 更新 UIViewRepresentable

    我正在尝试学习与 SwiftUI 结合 并且正在努力如何更新我的视图 来自 UIKit ObservableObject 之前BindableObject 问题是 显然 方法updateUIView一旦 Published对象发送它已更改的
  • 如何知道我的 SensorManager 是否有已注册的传感器

    我正在为我的 Android 应用程序使用传感器 我用一行代码注册传感器 mySensorManager registerListener this orientationSensor SensorManager SENSOR DELAY