PositionUpdateService.java :  » App » pocketcampus » org » pocketcampus » gui » unstable » Android Open Source

Android Open Source » App » pocketcampus 
pocketcampus » org » pocketcampus » gui » unstable » PositionUpdateService.java
/*
 ********************* [ P O C K E T C A M P U S ] *****************
 * [    LICENCE    ]     see "licence"-file in the root directory
 * [   MAINTAINER  ]    andreas.kirchner@epfl.ch
 * [     STATUS    ]    not used
 *
 **************************[ C O M M E N T S ]**********************
 *
 * I tried a service. Maybe useful as a code snippet-collection,
 * but is not really in use
 *                      
 *******************************************************************
 */

package org.pocketcampus.gui.unstable;

import java.util.Timer;
import java.util.TimerTask;

import org.pocketcampus.gui.social.PositionUpdater;
import org.pocketcampus.map.Position;
import org.pocketcampus.map.element.MapPerson;
import org.pocketcampus.positioning.Locator;
import org.pocketcampus.serverapi.ServerAPI;
import org.pocketcampus.shared.accounts.AuthToken;
import org.pocketcampus.shared.accounts.SessionId;
import org.pocketcampus.shared.accounts.Username;
import org.pocketcampus.shared.exceptions.ServerException;
import org.pocketcampus.shared.map.MapPersonData;
import org.pocketcampus.shared.map.PositionData;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.Toast;

public class PositionUpdateService extends Service {

  private Timer timer = new Timer();
  private static final long UPDATE_INTERVAL = 60000;

  private static final String TAG = "pocketCampusDaemon";
  AndroidPositionManager posmgr = null;

  @Override
  public IBinder onBind(Intent intent) {
    return null;
  }

  @Override
  public void onCreate() {
    startTimer();
    Log.d(TAG, "onCreate");

  }



  @Override
  public void onDestroy() {
    Log.d(TAG, "onDestroy");
    stopTimer();
  }


  
  private void startTimer() {
    timer.scheduleAtFixedRate(new PositionUpdatingTask(this.getApplicationContext()), 0, UPDATE_INTERVAL);
  }
  
  private void stopTimer() {
    if(timer != null) {
      timer.cancel();
    }
  }


  public class PositionUpdatingTask extends TimerTask {

    private Context context;
    
    public PositionUpdatingTask(Context context) {
      this.context = context;
    }
    
    public void run() {
      Log.d(TAG, "Update UserPosition");
      updatePositionToServer();
    }

    private void updatePositionToServer() {
      ServerAPI serverAPI_ = new ServerAPI();
      SharedPreferences sharedPreferences_ = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
      String username = sharedPreferences_.getString("preferences_keyUsername", "N/a");
      String sessionId = sharedPreferences_.getString("preferences_keySessionId", "N/a");
      
      AuthToken authToken = new AuthToken(new Username(username), new SessionId(sessionId));
      
      try {
        if(serverAPI_.authenticate(authToken)) {
          Locator locator = Locator.getInstance(getApplicationContext());
          MapPerson mp =locator.getUserMapElement();
          if(mp != null) {
            Position pos = mp.position();
            double lat = pos.getLat();
            double lon = pos.getLon();
            int level = pos.getLevel();
            MapPersonData mapPersonData = new MapPersonData(new PositionData(lat, lon, level), username.toString(), username.toString());
            Log.d(TAG, "User: "+username.toString()+" has new Position: "+lat+" / "+lon+" / "+level);
            serverAPI_.updateUserPosition(authToken, mapPersonData);
          }
        }
      } catch(ServerException e) {
        Log.d(TAG, "Cannot send Position to the Server. Details: "+e.getMessage());
      }
//      } catch(Exception e) {
//        Log.d(TAG, "Unkown Exception at PositionUpdating. Details: "+e.getMessage()+e.toString());
//      }
      

    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.