@Override public void onPause() { unregisterReceiver(compassBroadcastReceiver); unregisterReceiver(locationBroadcastReceiver); AppService appService = serviceConnection.getService(); if (appService != null) { // stop location updates when not recording track if (!appService.getTrackRecorder().isRecording()) { appService.stopLocationUpdates(); } // stop compass updates in any case appService.stopSensorUpdates(); } serviceConnection.unbindAppService(); super.onPause(); }
/** onResume event handler */ @Override protected void onResume() { // registering receiver for compass updates registerReceiver(compassBroadcastReceiver, new IntentFilter(Constants.ACTION_COMPASS_UPDATES)); // registering receiver for location updates registerReceiver( locationBroadcastReceiver, new IntentFilter(Constants.ACTION_LOCATION_UPDATES)); // bind to GPS service // once bound appServiceConnectionCallback will be called serviceConnection.bindAppService(); super.onResume(); }
@Override public void run() { if (serviceConnection == null) { return; } AppService appService = serviceConnection.getService(); if (appService == null) { Toast.makeText( TrackpointsListActivity.this, R.string.gps_service_not_connected, Toast.LENGTH_SHORT) .show(); return; } if (!appService.isListening()) { // location updates stopped at this time, so let's start them appService.startLocationUpdates(); } else { // gpsInUse = false means we are in process of stopping // listening appService.setGpsInUse(true); // if both isListening and isGpsInUse are true - do nothing // most likely we are in the process of recording track } // this activity requires compass data appService.startSensorUpdates(); // let's not wait for LocationListener to receive updates and get last known location currentLocation = appService.getCurrentLocation(); waypointsArrayAdapter.notifyDataSetChanged(); }