在Android应用程序中,要确定用户当前的位置和活动状态(例如步行、跑步、驾驶等),通常使用GeoFencing或ActivityRecognitionAPI。
以下是使用GeoFencing API的示例代码:
private void createGeofence() {
GeofencingClient geofencingClient = LocationServices.getGeofencingClient(this);
Geofence geofence = new Geofence.Builder()
.setRequestId("myGeofence")
.setCircularRegion(LATITUDE, LONGITUDE, RADIUS_METERS)
.setExpirationDuration(Geofence.NEVER_EXPIRE)
.setTransitionTypes(Geofence.GEOFENCE_TRANSITION_ENTER |
Geofence.GEOFENCE_TRANSITION_EXIT)
.build();
GeofencingRequest request = new GeofencingRequest.Builder()
.setInitialTrigger(GeofencingRequest.INITIAL_TRIGGER_ENTER)
.addGeofence(geofence)
.build();
Intent intent = new Intent(this, GeofenceBroadcastReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
geofencingClient.addGeofences(request, pendingIntent);
}
以下是使用ActivityRecognitionAPI的示例代码:
public class MyActivityRecognition implements GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener, ResultCallback {
protected GoogleApiClient mGoogleApiClient;
public void startRecognition() {
mGoogleApiClient = new GoogleApiClient.Builder(context)
.addApi(ActivityRecognition.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
}
public void onConnected(@Nullable Bundle bundle) {