【问题标题】:How to check whether the device is idle or moving for Android App?Android App如何检查设备是空闲还是移动?
【发布时间】:2019-12-11 06:59:05
【问题描述】:
  • 在我的一个移动应用程序中,我想使用 Android 设备的 GPS 存储用户的实时纬度和经度。

  • 为此,我将使用 API 来发送设备的纬度和经度值,并将每 10 秒调用一次该 API。

  • 但是,当设备处于空闲模式并且没有移动到任何地方时,我不想通过 API 发送请求以避免服务器上不必要的负载。

  • Android 库中是否有任何方法可以检测到设备是否在移动?如果设备在口袋里或者我把它放在钱包里的车里,它必须检查我是在走路还是在睡觉,或者汽车是否在移动。

我是 Android 新手。

谢谢 京东

【问题讨论】:

    标签: android device accelerometer hardware-acceleration


    【解决方案1】:

    将上次发送的纬度和经度保存在共享首选项中,并计算上次位置和当前位置之间的距离,如果距离大于则更新新位置到服务器。

    使用此函数计算距离

     private float calculateLocationDifference() {
        float[] dist = new float[1];
        Location.distanceBetween(lastLocation.getLatitude(), lastLocation.getLongitude(), currentLocation.getLatitude(), currentLocation.getLongitude(), dist);
        return dist[0];
    }
    

    请注意,连续获取位置会更快耗尽用户电池。

    【讨论】:

    • 这就是为什么我想检查设备是否在移动而不是使用 GPS 位置。如果手机一直在移动,它应该调用API并将数据存储在数据库中。
    • 没有其他方法可以检测设备是否在移动
    • 我说的方法只会减轻服务器的负担,不会给用户带来负担
    【解决方案2】:

    您可以使用 android 中的 Activity Recognition API 来实现这一点。有各种活动需要识别。 https://developer.android.com/guide/topics/location/transitions

    【讨论】:

      猜你喜欢
      • 2011-03-01
      • 1970-01-01
      • 2017-12-04
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多