If you think the Android project AndroidWearable-Samples listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.
Java Source Code
package com.example.android.wearable.geofencing;
//www.java2s.comimportstatic com.example.android.wearable.geofencing.Constants.INVALID_FLOAT_VALUE;
importstatic com.example.android.wearable.geofencing.Constants.INVALID_INT_VALUE;
importstatic com.example.android.wearable.geofencing.Constants.INVALID_LONG_VALUE;
importstatic com.example.android.wearable.geofencing.Constants.KEY_EXPIRATION_DURATION;
importstatic com.example.android.wearable.geofencing.Constants.KEY_LATITUDE;
importstatic com.example.android.wearable.geofencing.Constants.KEY_LONGITUDE;
importstatic com.example.android.wearable.geofencing.Constants.KEY_PREFIX;
importstatic com.example.android.wearable.geofencing.Constants.KEY_RADIUS;
importstatic com.example.android.wearable.geofencing.Constants.KEY_TRANSITION_TYPE;
import android.content.Context;
import android.content.SharedPreferences;
/**
* Storage for geofence values, implemented in SharedPreferences.
*/publicclass SimpleGeofenceStore {
// The SharedPreferences object in which geofences are stored.
privatefinal SharedPreferences mPrefs;
// The name of the SharedPreferences.
privatestaticfinal String SHARED_PREFERENCES = "SharedPreferences";
/**
* Create the SharedPreferences storage with private access only.
*/public SimpleGeofenceStore(Context context) {
mPrefs = context.getSharedPreferences(SHARED_PREFERENCES, Context.MODE_PRIVATE);
}
/**
* Returns a stored geofence by its id, or returns null if it's not found.
* @param id The ID of a stored geofence.
* @return A SimpleGeofence defined by its center and radius, or null if the ID is invalid.
*/public SimpleGeofence getGeofence(String id) {
// Get the latitude for the geofence identified by id, or INVALID_FLOAT_VALUE if it doesn't
// exist (similarly for the other values that follow).
double lat = mPrefs.getFloat(getGeofenceFieldKey(id, KEY_LATITUDE),
INVALID_FLOAT_VALUE);
double lng = mPrefs.getFloat(getGeofenceFieldKey(id, KEY_LONGITUDE),
INVALID_FLOAT_VALUE);
float radius = mPrefs.getFloat(getGeofenceFieldKey(id, KEY_RADIUS),
INVALID_FLOAT_VALUE);
long expirationDuration =
mPrefs.getLong(getGeofenceFieldKey(id, KEY_EXPIRATION_DURATION),
INVALID_LONG_VALUE);
int transitionType = mPrefs.getInt(getGeofenceFieldKey(id, KEY_TRANSITION_TYPE),
INVALID_INT_VALUE);
// If none of the values is incorrect, return the object.
if (lat != INVALID_FLOAT_VALUE
&& lng != INVALID_FLOAT_VALUE
&& radius != INVALID_FLOAT_VALUE
&& expirationDuration != INVALID_LONG_VALUE
&& transitionType != INVALID_INT_VALUE) {
returnnew SimpleGeofence(id, lat, lng, radius, expirationDuration, transitionType);
}
// Otherwise, return null.
return null;
}
/**
* Save a geofence.
* @param geofence The SimpleGeofence with the values you want to save in SharedPreferences.
*/publicvoid setGeofence(String id, SimpleGeofence geofence) {
// Get a SharedPreferences editor instance. Among other things, SharedPreferences
// ensures that updates are atomic and non-concurrent.
SharedPreferences.Editor prefs = mPrefs.edit();
// Write the Geofence values to SharedPreferences.
prefs.putFloat(getGeofenceFieldKey(id, KEY_LATITUDE), (float) geofence.getLatitude());
prefs.putFloat(getGeofenceFieldKey(id, KEY_LONGITUDE), (float) geofence.getLongitude());
prefs.putFloat(getGeofenceFieldKey(id, KEY_RADIUS), geofence.getRadius());
prefs.putLong(getGeofenceFieldKey(id, KEY_EXPIRATION_DURATION),
geofence.getExpirationDuration());
prefs.putInt(getGeofenceFieldKey(id, KEY_TRANSITION_TYPE),
geofence.getTransitionType());
// Commit the changes.
prefs.commit();
}
/**
* Remove a flattened geofence object from storage by removing all of its keys.
*/publicvoid clearGeofence(String id) {
SharedPreferences.Editor prefs = mPrefs.edit();
prefs.remove(getGeofenceFieldKey(id, KEY_LATITUDE));
prefs.remove(getGeofenceFieldKey(id, KEY_LONGITUDE));
prefs.remove(getGeofenceFieldKey(id, KEY_RADIUS));
prefs.remove(getGeofenceFieldKey(id, KEY_EXPIRATION_DURATION));
prefs.remove(getGeofenceFieldKey(id, KEY_TRANSITION_TYPE));
prefs.commit();
}
/**
* Given a Geofence object's ID and the name of a field (for example, KEY_LATITUDE), return
* the key name of the object's values in SharedPreferences.
* @param id The ID of a Geofence object.
* @param fieldName The field represented by the key.
* @return The full key name of a value in SharedPreferences.
*/private String getGeofenceFieldKey(String id, String fieldName) {
return KEY_PREFIX + "_" + id + "_" + fieldName;
}
}