因此,在某些背景下,我正在开发位置跟踪应用程序。我正在运行一个服务,该服务使用融合的位置提供程序获取gps更新。当应用关闭或设备被锁定时,我的服务将移至前台。它还使用了部分唤醒锁并将其列入白名单。
我的印象是,设备移动后应退出打ze模式。如答案here所述。但是我在不同的设备上看到不一致的结果。我有三个测试设备。索尼experia,moto e4 plus和nexus 5x。该应用程序在Sony和Nexus上效果很好。我将其保持空闲状态,打do睡模式开始,然后在我移动设备时退出打ze睡模式,gps更新再次开始。这很棒,因为当设备静止时我不需要gps更新,这只会浪费电池寿命。为了清楚起见,每种设备的Android版本不同:
Sony Xperia: 7.0
Moto E4 plus: 7.1.1
Nexus 5X: 8.0
问题出在摩托车上,我让设备进入打ze模式。但是,提起并随身携带时,它不会退出打ze模式。它仅在进行某些用户交互时才退出打ze模式。在查看了其他答案和androids文档后,我认为移动设备应始终导致其处于休眠模式是正确的。如果是这样,那么这更有可能是硬件问题,还是OEM可以更改打do模式应如何工作?
谢谢您的帮助。
答案 0 :(得分:0)
因此android需要能够检测运动才能退出打ze模式。摩托车没有陀螺仪。这将停止检测运动并退出打do模式。
答案 1 :(得分:0)
为了使此功能正常工作,制造商应该已经实施了“显着运动传感器”。您可以通过询问此传感器是否存在来检查此传感器是否可用:“android.sensor.important_motion”。
SensorManager mSensorManager = (SensorManager) mContext.getSystemService(Service.SENSOR_SERVICE);
boolean isSensorPresent = mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION) != null;
除此之外,还有一些制造商使用自己的电源管理系统绕过打盹模式规则。例如,华为和小米生产的一些手机就是这种情况。 在这些情况下,可以停止制造商电源管理器系统以暂停您的应用程序。但必须由用户手动完成。