private void fetchRecentStations() { LastFmServer server = AndroidLastFmServerFactory.getServer(); Session session = LastFMApplication.getInstance().session; // Is it worth it? if (session != null) { try { // Let me work it Station stations[] = server.getUserRecentStations(session.getName(), session.getKey()); if (stations != null && stations.length > 0) { // I put my thing down, flip it, and reverse it List<Station> list = Arrays.asList(stations); Collections.reverse(list); stations = (Station[]) list.toArray(); RecentStationsDao.getInstance().clearTable(); for (Station station : stations) { RecentStationsDao.getInstance() .appendRecentStation(station.getUrl(), station.getName()); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
protected void onListItemClick(ListView l, View v, int position, long id) { ListAdapter a = (ListAdapter) getListAdapter(); if (a != null) { LastFMApplication.getInstance().mCtx = this; String URI = (String) a.getItem(position); Intent i = new Intent(this, ProfileActivity.class); i.setData(Uri.parse(URI)); startActivity(i); } }
@Override public void onPostExecute(Boolean result) { Session session = LastFMApplication.getInstance().session; if (session != null) { SetupRecentStations(); if (!isAuthenticatedUser && Profile_RadioTab.this.mUser != null) { SetupCommonArtists(tasteometer); } mMainAdapter.notifyDataSetChanged(); } }
@Override public void onListItemClick(ListView l, View v, int p, long id) { final int position = p; if (!mMainAdapter.isEnabled(position)) return; LastFMApplication.getInstance() .bindService( new Intent( LastFMApplication.getInstance(), fm.last.android.player.RadioPlayerService.class), new ServiceConnection() { public void onServiceConnected(ComponentName comp, IBinder binder) { IRadioPlayer player = IRadioPlayer.Stub.asInterface(binder); try { String adapter_station = mMainAdapter.getStation(position); String current_station = player.getStationUrl(); if ((player.isPlaying() || player.getState() == RadioPlayerService.STATE_PAUSED) && adapter_station.equals(current_station)) { if (player.getState() == RadioPlayerService.STATE_PAUSED) LastFMApplication.getInstance() .playRadioStation(Profile_RadioTab.this, player.getStationUrl(), false); Intent intent = new Intent(Profile_RadioTab.this, Player.class); startActivity(intent); } else { mMainAdapter.enableLoadBar(position); LastFMApplication.getInstance() .playRadioStation(Profile_RadioTab.this, adapter_station, true); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } LastFMApplication.getInstance().unbindService(this); } public void onServiceDisconnected(ComponentName comp) {} }, Context.BIND_AUTO_CREATE); }
@Override public Boolean doInBackground(Void... params) { boolean success = false; Session session = LastFMApplication.getInstance().session; // Check our subscriber status LastFmServer server = AndroidLastFmServerFactory.getServer(); try { fetchRecentStations(); User user = server.getUserInfo(null, session.getKey()); if (user != null) { String subscriber = user.getSubscriber(); SharedPreferences settings = getSharedPreferences(LastFm.PREFS, 0); SharedPreferences.Editor editor = settings.edit(); editor.putString("lastfm_subscriber", subscriber); editor.commit(); session = new Session(session.getName(), session.getKey(), subscriber); LastFMApplication.getInstance().session = session; } } catch (WSError e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } try { if (mUsername == null) { mUser = mServer.getUserInfo(null, session.getKey()); } else { mUser = mServer.getUserInfo(mUsername, null); tasteometer = mServer.tasteometerCompare(mUsername, session.getName(), 8); } success = true; } catch (Exception e) { e.printStackTrace(); } return success; }
/** Binds to the player service, refreshes our list, then unbinds the player service */ public void updateNowPlaying() { LastFMApplication.getInstance() .bindService( new Intent( LastFMApplication.getInstance(), fm.last.android.player.RadioPlayerService.class), new ServiceConnection() { public void onServiceConnected(ComponentName comp, IBinder binder) { player = IRadioPlayer.Stub.asInterface(binder); notifyDataSetChanged(); if (container != null) { container.notifyDataSetChanged(); } try { LastFMApplication.getInstance().unbindService(this); } catch (IllegalArgumentException e) { } } public void onServiceDisconnected(ComponentName comp) { player = null; } }, Context.BIND_AUTO_CREATE); }
private void SetupMyStations() { SharedPreferences settings = getSharedPreferences(LastFm.PREFS, 0); Session session = LastFMApplication.getInstance().session; mMyStationsAdapter = new LastFMStreamAdapter(this); if (isAuthenticatedUser) { mMyStationsAdapter.putStation( getString(R.string.profile_mylibrary), "lastfm://user/" + Uri.encode(mUsername) + "/personal"); if (!settings.getBoolean("remove_loved", false) && session.getSubscriber().equals("1")) mMyStationsAdapter.putStation( getString(R.string.profile_myloved), "lastfm://user/" + Uri.encode(mUsername) + "/loved"); mMyStationsAdapter.putStation( getString(R.string.profile_myrecs), "lastfm://user/" + Uri.encode(mUsername) + "/recommended"); mMyStationsAdapter.putStation( getString(R.string.profile_mymix), "lastfm://user/" + Uri.encode(mUsername) + "/mix"); mMyStationsAdapter.putStation( getString(R.string.profile_myneighborhood), "lastfm://user/" + Uri.encode(mUsername) + "/neighbours"); mMyStationsAdapter.putStation( getString(R.string.profile_myfriends), "lastfm://user/" + Uri.encode(mUsername) + "/friends"); } else { mMyStationsAdapter.putStation( getString(R.string.profile_userlibrary, mUsername), "lastfm://user/" + Uri.encode(mUsername) + "/personal"); if (!settings.getBoolean("remove_loved", false) && session.getSubscriber().equals("1")) mMyStationsAdapter.putStation( getString(R.string.profile_userloved, mUsername), "lastfm://user/" + Uri.encode(mUsername) + "/loved"); mMyStationsAdapter.putStation( getString(R.string.profile_myrecs), "lastfm://user/" + Uri.encode(mUsername) + "/recommended"); mMyStationsAdapter.putStation( getString(R.string.profile_usermix, mUsername), "lastfm://user/" + Uri.encode(mUsername) + "/mix"); mMyStationsAdapter.putStation( getString(R.string.profile_userneighborhood, mUsername), "lastfm://user/" + Uri.encode(mUsername) + "/neighbours"); mMyStationsAdapter.putStation( getString(R.string.profile_userfriends, mUsername), "lastfm://user/" + Uri.encode(mUsername) + "/friends"); } mMyStationsAdapter.updateModel(); }
@Override protected void onListItemClick(ListView l, View v, int position, long id) { Intent intent = null; Integer i = (Integer) getListAdapter().getItem(position); switch (i) { case R.drawable.info_dark: intent = new Intent(this, Metadata.class); intent.putExtra("artist", mArtistName); intent.putExtra("track", mTrackName); startActivity(intent); break; case R.drawable.list_radio_icon_rest: ((ListAdapter) getListAdapter()).enableLoadBar(position); LastFMApplication.getInstance() .playRadioStation( this, "lastfm://artist/" + Uri.encode(mArtistName) + "/similarartists", true); return; case R.drawable.share_dark: intent = new Intent(this, ShareResolverActivity.class); intent.putExtra("lastfm.artist", mArtistName); if (mTrackName != null) intent.putExtra("lastfm.track", mTrackName); if (mAlbumName != null) intent.putExtra("lastfm.album", mAlbumName); startActivity(intent); break; case R.drawable.tag_dark: intent = new Intent(this, Tag.class); intent.putExtra("lastfm.artist", mArtistName); intent.putExtra("lastfm.track", mTrackName); startActivity(intent); break; case R.drawable.love: try { LastFmServer server = AndroidLastFmServerFactory.getServer(); server.loveTrack( mArtistName, mTrackName, LastFMApplication.getInstance().session.getKey()); Toast.makeText( LastFMApplication.getInstance(), getString(R.string.scrobbler_trackloved), Toast.LENGTH_SHORT) .show(); } catch (Exception e) { } break; case R.drawable.ban: try { LastFmServer server = AndroidLastFmServerFactory.getServer(); server.banTrack( mArtistName, mTrackName, LastFMApplication.getInstance().session.getKey()); Toast.makeText( LastFMApplication.getInstance(), getString(R.string.scrobbler_trackbanned), Toast.LENGTH_SHORT) .show(); } catch (Exception e) { } break; case R.drawable.shopping_cart_dark: if (getIntent().getBooleanExtra("lastfm.nowplaying", false)) { try { LastFMApplication.getInstance() .tracker .trackEvent( "Clicks", // Category "widget-buy", // Action "", // Label 0); // Value } catch (Exception e) { // Google Analytics doesn't appear to be thread safe } } else { try { LastFMApplication.getInstance() .tracker .trackEvent( "Clicks", // Category "charts-buy", // Action "", // Label 0); // Value } catch (Exception e) { // Google Analytics doesn't appear to be thread safe } } if (mTrackName != null) Amazon.searchForTrack(this, mArtistName, mTrackName); if (mAlbumName != null) Amazon.searchForAlbum(this, mArtistName, mAlbumName); break; default: break; } finish(); }
@Override public void onReceive(Context context, Intent intent) { if (!PreferenceManager.getDefaultSharedPreferences(LastFMApplication.getInstance()) .getBoolean("scrobble_sdroid", true)) return; else super.onReceive(context, intent); }
private static void performSync( Context context, Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) throws OperationCanceledException { HashMap<Long, SyncEntry> localEvents = new HashMap<Long, SyncEntry>(); ArrayList<Long> lastfmEvents = new ArrayList<Long>(); mContentResolver = context.getContentResolver(); // If our app has requested a full sync, we're going to delete all our local contacts and start // over boolean is_full_sync = PreferenceManager.getDefaultSharedPreferences(LastFMApplication.getInstance()) .getBoolean("do_full_sync", false); // If our schema is out-of-date, do a fresh sync if (PreferenceManager.getDefaultSharedPreferences(LastFMApplication.getInstance()) .getInt("sync_schema", 0) < syncSchema) is_full_sync = true; long calendar_id = getCalendar(account); if (calendar_id == -1) { Log.e("CalendarSyncAdapter", "Unable to create Last.fm event calendar"); return; } Log.i("CalendarSyncAdapter", "Last.fm events calendar: " + calendar_id); // Load the local Last.fm events Uri eventsUri = Events.CONTENT_URI .buildUpon() .appendQueryParameter(Events.CALENDAR_ID, String.valueOf(calendar_id)) .build(); Cursor c1 = mContentResolver.query( eventsUri, new String[] {Events._ID, Events._SYNC_ID}, null, null, null); while (c1 != null && c1.moveToNext()) { if (is_full_sync) { deleteEvent(context, account, c1.getLong(0)); } else { SyncEntry entry = new SyncEntry(); entry.raw_id = c1.getLong(0); localEvents.put(c1.getLong(1), entry); } } c1.close(); Editor editor = PreferenceManager.getDefaultSharedPreferences(LastFMApplication.getInstance()).edit(); editor.remove("do_full_sync"); editor.putInt("sync_schema", syncSchema); editor.commit(); LastFmServer server = AndroidLastFmServerFactory.getServer(); try { Event[] events = server.getUserEvents(account.name); ArrayList<ContentProviderOperation> operationList = new ArrayList<ContentProviderOperation>(); for (Event event : events) { lastfmEvents.add(Long.valueOf(event.getId())); if (localEvents.containsKey(Long.valueOf(event.getId()))) { SyncEntry entry = localEvents.get(Long.valueOf(event.getId())); operationList.add(updateEvent(calendar_id, account, event, entry.raw_id)); } else { operationList.add(updateEvent(calendar_id, account, event, -1)); } if (operationList.size() >= 50) { try { mContentResolver.applyBatch(CalendarContract.AUTHORITY, operationList); } catch (Exception e) { e.printStackTrace(); } operationList.clear(); } } events = server.getPastUserEvents(account.name); for (Event event : events) { lastfmEvents.add(Long.valueOf(event.getId())); if (localEvents.containsKey(Long.valueOf(event.getId()))) { SyncEntry entry = localEvents.get(Long.valueOf(event.getId())); operationList.add(updateEvent(calendar_id, account, event, entry.raw_id)); } else { operationList.add(updateEvent(calendar_id, account, event, -1)); } if (operationList.size() >= 50) { try { mContentResolver.applyBatch(CalendarContract.AUTHORITY, operationList); } catch (Exception e) { e.printStackTrace(); } operationList.clear(); } } if (operationList.size() > 0) { try { mContentResolver.applyBatch(CalendarContract.AUTHORITY, operationList); } catch (Exception e) { e.printStackTrace(); } } } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (WSError e1) { // TODO Auto-generated catch block e1.printStackTrace(); } Iterator<Long> i = localEvents.keySet().iterator(); while (i.hasNext()) { Long event = i.next(); if (!lastfmEvents.contains(event)) deleteEvent(context, account, localEvents.get(event).raw_id); } }