我想以20秒的间隔定期检查用户的位置。自动

时间:2016-03-31 11:52:08

标签: android google-maps navigation

您好我正在创建Android应用。其中我包括一个导航模块。 在这里,我想以20秒的间隔自动检查用户的位置,我不想放任何按钮来触发此位置更改事件。此方法应该像实时Google Map导航系统一样自动运行。我使用FusedLocationAPILocationListener获取用户的位置信息。 我创建了这个方法。

    private void onLocationUpdate() {
    lr.setInterval(20000).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        //    ActivityCompat#requestPermissions
        // here to request the missing permissions, and then overriding
        //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
        //                                          int[] grantResults)
        // to handle the case where the user grants the permission. See the documentation
        // for ActivityCompat#requestPermissions for more details.
        return;
    }
    LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, lr, (com.google.android.gms.location.LocationListener) this);

}

此处lrLocationRequest的对象。 请告诉我在哪里可以称这种方法。 在onLocationChanged(Location location)下,我在用户的当前位置添加标记。

1 个答案:

答案 0 :(得分:0)

您需要创建服务:

public class LocationService extends Service
        implements LocationListener,
        GoogleApiClient.OnConnectionFailedListener,
        GoogleApiClient.ConnectionCallbacks {}

并实施所需的方法。你会得到:

 @Override
    public void onLocationChanged(Location location) {
        //do your stuff
    }

现在由您决定是否通过X次以及是否需要对位置执行某些操作。别忘了添加

    compile 'com.google.android.gms:play-services-location:8.+'
    compile 'com.google.android.gms:play-services-maps:8.+' 

在你的分数中。在你的清单中添加,当然是权限;

 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

和您的服务:

<service
        android:name="{package}.LocationService"
        android:exported="false" />