我正在尝试开发一个Android应用程序,我想从谷歌地图API获取以下详细信息。
对于以上三个功能,我是否必须选择付费版本的google maps API?或者它也可以使用免费版的谷歌地图API来完成?
对于所有三个问题,答案是肯定的。第一个,您可以确定想要在地理围栏的构建器中获得的准确度,就像这样
new Geofence.Builder()
.setRequestId(key)
.setCircularRegion(lat, lang, 150)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER)
.setLoiteringDelay(1000)
.build();
我将精度设置为150米(您应该知道的一件事是您设置的精确度越高,您使用的功率越大)
对于第二个和第三个,您可以将TransitionTypes设置为Geofence.GEOFENCE_TRANSITION_DWELL,以了解用户是否在一个地方呆了一段时间。同时,您可以使用PendingIntent在此条件匹配时发送广播。完整的代码如下
Geofence geofence = getGeofence(lat, lng, key);
geofencingClient.addGeofences(
getGeofencingRequest(geofence),
getGeofencePendingIntent(title, location, id))
.addOnCompleteListener(task -> {
if (task.isSuccessful()) {
}else{
}
});
getGeofencingRequest的代码
private GeofencingRequest getGeofencingRequest(Geofence geofence) {
GeofencingRequest.Builder builder = new GeofencingRequest.Builder();
builder.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER);
builder.addGeofence(geofence);
return builder.build();
}
getGeofencePendingIntent的代码
private PendingIntent getGeofencePendingIntent(String title, String location, long id) {
Intent i = new Intent("add your unique ID for the broadcast");
Bundle bundle = new Bundle();
bundle.putLong(Reminder.ID, id);
bundle.putString(Reminder.LOCATION_NAME, location);
bundle.putString(Reminder.TITLE, title);
i.putExtras(bundle);
return PendingIntent.getBroadcast(
getContext(),
(int) id,
i,
0
);
}