package com.pntanasis.android.metronome; import android.os.AsyncTask; import android.os.Handler; import android.os.Message; import android.util.Log; import com.PP.LunarTabsAndroid.APIs.MetronomeAPI; public class MetronomeAsyncTask extends AsyncTask<Void,Void,String> { protected Metronome metronome; protected Handler mHandler; public MetronomeAsyncTask() { mHandler = getHandler(); metronome = new Metronome(mHandler); } @Override protected String doInBackground(Void... params) { MetronomeAPI m = MetronomeAPI.getInstance(); metronome.setBeat(m.getBeats()); metronome.setNoteValue(m.getNoteValue()); metronome.setBpm(m.getBpm()); metronome.setBeatSound(m.getBeatSound()); metronome.setSound(m.getSound()); metronome.play(); return null; } public void stop() { metronome.stop(); metronome = null; } public void setBpm(short bpm) { metronome.setBpm(bpm); metronome.calcSilence(); } public void setBeat(short beat) { if(metronome != null) metronome.setBeat(beat); } // have in mind that: http://stackoverflow.com/questions/11407943/this-handler-class-should-be-static-or-leaks-might-occur-incominghandler // in this case we should be fine as no delayed messages are queued public Handler getHandler() { return new Handler() { @Override public void handleMessage(Message msg) { String message = (String)msg.obj; Log.d("M",message); } }; } }