package com.nightscout; import com.nightscout.data.TimeMatechedRecord; import android.app.Service; import android.content.Intent; import android.media.MediaPlayer; import android.os.AsyncTask; import android.os.IBinder; import android.util.Log; import com.nightscout.events.RefreshData; import com.nightscout.events.RefreshError; import com.nightscout.events.RefreshingData; import com.nightscout.events.RequestRefreshData; import com.squareup.otto.Subscribe; public class CGMDataRetreiverService extends Service { private static final String TAG = CGMDataRetreiverService.class.getSimpleName(); @Override public void onCreate() { super.onCreate(); Log.i(TAG, "onCreate"); } @Override public void onDestroy() { super.onDestroy(); Log.i(TAG, "onDestroy"); while(mediaPlayer.isPlaying()) { try { Thread.sleep(100); } catch (InterruptedException e) {} } mediaPlayer.reset(); mediaPlayer.release(); mediaPlayer = null; } MediaPlayer mediaPlayer ; @Override public int onStartCommand(Intent intentX, int flags, int startId) { Log.i(TAG, "onStartCommand"); mediaPlayer = MediaPlayer.create(getBaseContext(), R.raw.little_bell); refreshData(); Log.i(TAG, "onStartCommand end"); return START_NOT_STICKY; } @Override public IBinder onBind(Intent intent) { return null; } @Subscribe private void onRequestRefreshData(RequestRefreshData event) { Log.d(TAG," onRequestRefreshData "); refreshData(); } private void refreshData() { GetData getData = new GetData(getApplicationContext()); MainApp.bus().post(new RefreshingData()); AsyncTask<String, Void, TimeMatechedRecord[]> ret = getData.execute(""); try { TimeMatechedRecord[] glucoseReadRecords = ret.get(); MainApp.bus().post(new RefreshData()); } catch (Throwable e) { RefreshError refreshError = new RefreshError(); refreshError.mMessage = e.getMessage(); MainApp.bus().post(refreshError); Log.d(TAG,"getDataFromMLW error ",e); } stopSelf(); } }