您好我正在创建Android应用。其中我包括一个导航模块。
在这里,我想以20秒的间隔自动检查用户的位置,我不想放任何按钮来触发此位置更改事件。此方法应该像实时Google Map导航系统一样自动运行。我使用FusedLocationAPI
和LocationListener
获取用户的位置信息。
我创建了这个方法。
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);
}
此处lr
是LocationRequest
的对象。
请告诉我在哪里可以称这种方法。
在onLocationChanged(Location location)
下,我在用户的当前位置添加标记。
答案 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" />