package github.madmarty.madsonic.service; import android.content.Context; import github.madmarty.madsonic.util.Logger; import github.madmarty.madsonic.util.Util; /** * Scrobbles played songs to Last.fm. * * @author Sindre Mehus * @version $Id$ */ public class Scrobbler { private static final Logger LOG = new Logger(Scrobbler.class); private String lastSubmission; private String lastNowPlaying; public void scrobble(final Context context, final DownloadFile song, final boolean submission) { if (song == null || !Util.isScrobblingEnabled(context)) { return; } final String id = song.getSong().getId(); // Avoid duplicate registrations. if (submission && id.equals(lastSubmission)) { return; } if (!submission && id.equals(lastNowPlaying)) { return; } if (submission) { lastSubmission = id; } else { lastNowPlaying = id; } new Thread("Scrobble " + song) { @Override public void run() { MusicService service = MusicServiceFactory.getMusicService(context); try { service.scrobble(id, submission, context, null); LOG.info("Scrobbled '" + (submission ? "submission" : "now playing") + "' for " + song); } catch (Exception x) { LOG.info("Failed to scrobble'" + (submission ? "submission" : "now playing") + "' for " + song, x); } } }.start(); } }