Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ActivationService extends Service {
- public static final String STATUS_NEW = "0";
- public static final String STATUS_IDLE = "1";
- public static final String STATUS_SERVICE_DESTROY = "2";
- public static final String STATUS_OK = "3";
- public static final String STATUS_EMERGENCY = "4";
- private DatabaseReference databaseReference;
- private static String loggedUserId;
- private Context context;
- private ValueEventListener valueEventListenerContatos;
- private Preferences preferences;
- public ActivationService() {
- }
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- Log.d("TAG", "onCreate - ActivationService");
- context = getApplicationContext();
- preferences = new Preferences(context);
- loggedUserId = preferences.getLoggedUserId();
- if (TextUtils.isEmpty(loggedUserId)) {
- stopSelf();
- }
- }
- @Override
- public int onStartCommand(final Intent intent, int flags, int startId) {
- Log.d("TAG", "onStartCommand - ActivationService");
- databaseReference = FirebaseConfig.getFirebaseReference();
- databaseReference = databaseReference.child("users");
- valueEventListenerContatos = new ValueEventListener() {
- @Override
- public void onDataChange(DataSnapshot dataSnapshot) {
- if (dataSnapshot.getValue() != null) {
- for (DataSnapshot users : dataSnapshot.getChildren()) {
- User user = users.getValue(User.class);
- if (isActive(user)) {
- pushEmergency(user);
- } else if (isCurrentInEmergency(user)) {
- pushSelfEmergency(user);
- } else if (wasActive(user)) {
- removeEmergency(user);
- }
- }
- }
- }
- private boolean isActive(User user) {
- return !isLoggedUser(user) && isInContats(user) &&
- isInEmergency(user);
- }
- private boolean isCurrentInEmergency(User user) {
- return isLoggedUser(user) && isInEmergency(user);
- }
- private boolean wasActive(User user) {
- String emergencyUserId = preferences.getEmergencyUserId();
- return !TextUtils.isEmpty(emergencyUserId) && isEmergencyUser(emergencyUserId, user)
- && isUserStatusOK(emergencyUserId) && !isLoggedUser(user);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- };
- databaseReference.addValueEventListener(valueEventListenerContatos);
- return super.onStartCommand(intent, flags, startId);
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- Log.d("TAG", "onDestroy - ActivationService");
- if(!TextUtils.isEmpty(loggedUserId)){
- UserHelper.changeStatus(loggedUserId, STATUS_SERVICE_DESTROY);
- }
- if (databaseReference != null && valueEventListenerContatos != null) {
- databaseReference.removeEventListener(valueEventListenerContatos);
- }
- NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_ALARM);
- NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_EMERGENCY);
- NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_SELFEMERGENCY);
- }
- private void pushEmergency(User user) {
- Log.d("TAG", "pushEmergency " + user.getName());
- preferences.setEmergencyUserId(user.getId());
- preferences.setEmergencyUserName(user.getName());
- Intent intentEmergency = new Intent(context, NotificationEmergencyService.class);
- startService(intentEmergency);
- }
- private void removeEmergency(User user) {
- Log.d("TAG", "removeEmergency " + user.getName());
- preferences.setEmergencyUserId("");
- preferences.setEmergencyUserName("");
- Intent intentEmergency = new Intent(context, NotificationEmergencyService.class);
- stopService(intentEmergency);
- NotificationHelper.cancelNotification(context, NotificationHelper.NOTIFICATION_ID_EMERGENCY);
- }
- private void pushSelfEmergency(User user) {
- Log.d("TAG", "pushSelfEmergency " + user.getName());
- Intent intentSelfEmergency = new Intent(context, NotificationSelfEmergencyService.class);
- startService(intentSelfEmergency);
- }
- private boolean isLoggedUser(User user) {
- return !TextUtils.isEmpty(loggedUserId) && user.getId().equals(loggedUserId);
- }
- private boolean isInEmergency(User user) {
- return user.getStatus().equals(STATUS_EMERGENCY);
- }
- private boolean isInContats(User user) {
- ArrayList<Contat> contatsArray = ContatsHelper.getContats(context, user);
- for (Contat contat : contatsArray) {
- if (contat.getId().equals(user.getId())) {
- return true;
- }
- }
- return false;
- }
- private boolean isEmergencyUser(String id, User user) {
- return id.equals(user.getId());
- }
- private boolean isUserStatusOK(String userId) {
- String status = UserHelper.getStatus(userId);
- return status.equals(STATUS_OK)
- || status.equals(STATUS_IDLE)
- || status.equals(STATUS_SERVICE_DESTROY);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement