package me.guillaumin.android.osmtracker.service.gps; import me.guillaumin.android.osmtracker.OSMTracker; import me.guillaumin.android.osmtracker.R; import me.guillaumin.android.osmtracker.activity.TrackLogger; import me.guillaumin.android.osmtracker.db.TrackContentProvider.Schema; import me.guillaumin.android.osmtracker.layout.GpsStatusRecord; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; /** * Handles the bind to the GPS Logger service * * @author Nicolas Guillaumin * */ public class GPSLoggerServiceConnection implements ServiceConnection { /** * Reference to TrackLogger activity */ private TrackLogger activity; public GPSLoggerServiceConnection(TrackLogger tl) { activity = tl; } @Override public void onServiceDisconnected(ComponentName name) { activity.setEnabledActionButtons(false); activity.setGpsLogger(null); } @Override public void onServiceConnected(ComponentName name, IBinder service) { activity.setGpsLogger( ((GPSLogger.GPSLoggerBinder) service).getService()); // Update record status regarding of current tracking state GpsStatusRecord gpsStatusRecord = (GpsStatusRecord) activity.findViewById(R.id.gpsStatus); if (gpsStatusRecord != null) { gpsStatusRecord.manageRecordingIndicator(activity.getGpsLogger().isTracking()); } // If not already tracking, start tracking if (!activity.getGpsLogger().isTracking()) { activity.setEnabledActionButtons(false); Intent intent = new Intent(OSMTracker.INTENT_START_TRACKING); intent.putExtra(Schema.COL_TRACK_ID, activity.getCurrentTrackId()); activity.sendBroadcast(intent); } } }