Android 当屏幕关闭时,使用类型\步\检测器

Android 当屏幕关闭时,使用类型\步\检测器,android,android-4.4-kitkat,android-sensors,Android,Android 4.4 Kitkat,Android Sensors,我正在开发一个应用程序,它使用类型\步\检测器。我想检测用户是否正在行走,即使手机屏幕关闭。但当屏幕关闭时,传感器类型_步进_检测器不工作。 因此,我使用PowerManager/WakeLock使CPU不休眠。但它仍然不起作用。 作为比较,我在我的演示应用程序中添加了磁性传感器侦听器和步进检测器侦听器,当屏幕打开时,两者都可以接收数据,但当屏幕关闭时,只有磁性传感器可以接收数据 PowerManager manager = (PowerManager)getSystemServ

我正在开发一个应用程序,它使用类型\步\检测器。我想检测用户是否正在行走,即使手机屏幕关闭。但当屏幕关闭时,传感器类型_步进_检测器不工作。 因此,我使用PowerManager/WakeLock使CPU不休眠。但它仍然不起作用。 作为比较,我在我的演示应用程序中添加了磁性传感器侦听器和步进检测器侦听器,当屏幕打开时,两者都可以接收数据,但当屏幕关闭时,只有磁性传感器可以接收数据

        PowerManager manager = (PowerManager)getSystemService(Context.POWER_SERVICE);
        mWakeLock = manager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
        mWakeLock.acquire();
然后:

然后:

        magnetSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        sensorManager.registerListener(magnetSensorListener, magnetSensor, SensorManager.SENSOR_DELAY_NORMAL);
以及:


若你们想检查用户是否在行走,你们必须采取完全不同的方法。谷歌发布了一份报告。此框架允许您跟踪用户的当前活动,例如,和其他活动


它还允许您在应用程序处于后台时跟踪活动。

非常感谢,我会尝试一下。你能告诉我为什么屏幕关闭时步进传感器不工作吗?有什么解决办法吗?老实说,我不知道-从未尝试过在后台使用STEP_检测器
        magnetSensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
        sensorManager.registerListener(magnetSensorListener, magnetSensor, SensorManager.SENSOR_DELAY_NORMAL);
        stepDetectorListener = new SensorEventListener() {

            @Override
            public void onAccuracyChanged(Sensor arg0, int arg1) {

            }

            @Override
            public void onSensorChanged(SensorEvent arg0) {
                //NO DATA when screen off
            }

        };


        magnetSensorListener = new SensorEventListener() {

            @Override
            public void onAccuracyChanged(Sensor arg0, int arg1) {

            }

            @Override
            public void onSensorChanged(SensorEvent arg0) {
                 //DATA when screen off
            }

        };