我刚刚开始使用android提供的位置服务,我正在考虑以下代码:
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
//update textview
makeUseOfNewLocation(location);
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
public void onProviderEnabled(String provider) {}
public void onProviderDisabled(String provider) {}
};
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
当位置更新时,我将使用可用的getSpeed()
方法以速度更新文本视图。
我的问题是,这会破坏手机的电池续航时间吗?如果是的话,有没有更有效的方法呢?比如注册BroadcastReceiver
以获取位置更新?我只是在寻找能够以最大化电池寿命的方式使用位置更新的方法。
答案 0 :(得分:3)
Google Play服务位置API优于Android 框架位置API(android.location)作为添加位置的一种方式 了解您的应用。如果您目前正在使用Android 框架位置API,强烈建议您切换到 Google Play尽快提供服务位置API。
来源:Making Your App Location-Aware
我已经使用过它,并发现以下内容非常有效,特别是在核电池方面经常准确地获取位置:
1。使用Fused Location Provider,GoogleApiClient:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
mGoogleApiClient.connect();
2. 根据要求使用LocationRequest:
mLocationRequest = new LocationRequest();
mLocationRequest.setFastestInterval(120000);
//there are other options associated with this objects
// including types of priority
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
3. 如果类实现this
或在以下位置定义新位置,则将LocationServices设置为使用LocationListener
:
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
所有组件都在包
下com.google.android.gms