获取用户位置,对Android上的电池影响最小

时间:2017-03-27 07:05:38

标签: android geolocation android-location

我开始开发一款永久保留在后台的应用,并检测用户暂时停留在某个位置(然后显示邀请用户打开的通知)应用程序获取有关该地点的信息。)

这与谷歌地图在您进入餐馆时所做的非常类似,它会向您显示检查评级的通知。

我想要的是对设备产生最小的影响,因此位置更新应该非常“被动”,仅在用户不移动时获取位置,并且如果可能的话,回收其他活动已经获得的位置数据 - 也许是谷歌地图本身或设备上运行的其他位置应用程序。 这不是导航应用程序,因此我不需要具有实时精确位置,而只需要具有最佳准确性和最小努力的近似位置,并且仅在用户不移动的情况下。

LocationListeneronLocationChanged似乎是我的人,但是我可以指定我不想触发设备的传感器,只有在可用于其他示波器时才重复使用位置数据吗?我的应用程序应该检查这些信息,然后决定在它们足够准确时进行反向地理编码。

1 个答案:

答案 0 :(得分:0)

是的,LocationListeneronLocationChanged是你的男人,但是对于被动实施,你可以选择一些选项。

首先,您可以检查最后一个已知位置,也许可以根据时间进行比较;即getTime()并验证它是否对您有用。

在代码方面,字面上......
Google samples, android location具有与最后一个位置部分相关的内容:

  /**
     * Runs when a GoogleApiClient object successfully connects.
     */
    @Override
    public void onConnected(Bundle connectionHint) {
        // Provides a simple way of getting a device's location and is well suited for
        // applications that do not require a fine-grained location and that do not need location
        // updates. Gets the best and most recent location currently available, which may be null
        // in rare cases when a location is not available.
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);

此外,您可以将其与LocationRequest对象结合使用,这可以帮助您实施,因为您可以在尝试getLastLocation()后立即调用它,并且基本上有更可靠的安排来获取位置。

     // Create the location request
            mLocationRequest = LocationRequest.create()
//priority object needs to be set, the following will definitely get results for you  
.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY)  

//interval updates can be on the lines of 15mins or 30... acc to your requirement
                            .setInterval(UPDATE_INTERVAL)  
                            .setFastestInterval(FASTEST_INTERVAL);
                    // Request location updates
                    LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,
                            mLocationRequest, this);

我建议您尝试PRIORITY_NO_POWER,可以与getLastLocation()结合使用。这些电源模式专门用于优化电池/功耗和检索位置的效率。