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

标签 android listener registration sensors sensormanager

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

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

我引入了一行代码来注销监听器,这样它就不会一直运行:

mySensorManager.unregisterListener(this);

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

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 它只会添加一次:)

同样适用于注销逻辑

关于android - 如何知道我的 SensorManager 是否有已注册的传感器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14269925/

相关文章:

validation - 只允许在网站上注册 'business' 电子邮件地址

java - 使用Java代码创建文件上传请求

android - Api 调用失败无法为类 Retrofit/Moshi 创建转换器

java - 实现Rest Api JAVA客户端android eclipse

java - 安卓 : Implement Broadcast Receiver for ClipboardManager

android - Mediaplayer setOnCompletionListener 重复调用

java - 检查用户名是否存在

java - 将数据设置为来自一些不同 R.array(XML) 的自定义 ListView 适配器

java - GUI 中监听器嵌套类的优点

java - JAIN SIP 未经授权的响应