Search in sources :

Example 6 with MusicService

use of org.moire.ultrasonic.service.MusicService in project ultrasonic by ultrasonic.

the class ShufflePlayBuffer method refill.

private void refill() {
    // Check if active server has changed.
    clearBufferIfNecessary();
    if (buffer.size() > REFILL_THRESHOLD || (!Util.isNetworkConnected(context) && !Util.isOffline(context))) {
        return;
    }
    try {
        MusicService service = MusicServiceFactory.getMusicService(context);
        int n = CAPACITY - buffer.size();
        MusicDirectory songs = service.getRandomSongs(n, context, null);
        synchronized (buffer) {
            buffer.addAll(songs.getChildren());
            Log.i(TAG, String.format("Refilled shuffle play buffer with %d songs.", songs.getChildren().size()));
        }
    } catch (Exception x) {
        Log.w(TAG, "Failed to refill shuffle play buffer.", x);
    }
}
Also used : MusicDirectory(org.moire.ultrasonic.domain.MusicDirectory) MusicService(org.moire.ultrasonic.service.MusicService)

Example 7 with MusicService

use of org.moire.ultrasonic.service.MusicService in project ultrasonic by ultrasonic.

the class DownloadActivity method menuItemSelected.

private boolean menuItemSelected(final int menuItemId, final DownloadFile song) {
    Entry entry = null;
    if (song != null) {
        entry = song.getSong();
    }
    switch(menuItemId) {
        case R.id.menu_show_artist:
            if (entry == null) {
                return false;
            }
            if (Util.getShouldUseId3Tags(DownloadActivity.this)) {
                Intent intent = new Intent(DownloadActivity.this, SelectAlbumActivity.class);
                intent.putExtra(Constants.INTENT_EXTRA_NAME_ID, entry.getArtistId());
                intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, entry.getArtist());
                intent.putExtra(Constants.INTENT_EXTRA_NAME_PARENT_ID, entry.getArtistId());
                intent.putExtra(Constants.INTENT_EXTRA_NAME_ARTIST, true);
                startActivityForResultWithoutTransition(DownloadActivity.this, intent);
            }
            return true;
        case R.id.menu_show_album:
            if (entry == null) {
                return false;
            }
            Intent intent = new Intent(this, SelectAlbumActivity.class);
            intent.putExtra(Constants.INTENT_EXTRA_NAME_ID, entry.getParent());
            intent.putExtra(Constants.INTENT_EXTRA_NAME_NAME, entry.getAlbum());
            startActivityForResultWithoutTransition(this, intent);
            return true;
        case R.id.menu_lyrics:
            if (entry == null) {
                return false;
            }
            intent = new Intent(this, LyricsActivity.class);
            intent.putExtra(Constants.INTENT_EXTRA_NAME_ARTIST, entry.getArtist());
            intent.putExtra(Constants.INTENT_EXTRA_NAME_TITLE, entry.getTitle());
            startActivityForResultWithoutTransition(this, intent);
            return true;
        case R.id.menu_remove:
            getDownloadService().remove(song);
            onDownloadListChanged();
            return true;
        case R.id.menu_item_screen_on_off:
            if (getDownloadService().getKeepScreenOn()) {
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                getDownloadService().setKeepScreenOn(false);
            } else {
                getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
                getDownloadService().setKeepScreenOn(true);
            }
            return true;
        case R.id.menu_shuffle:
            getDownloadService().shuffle();
            Util.toast(this, R.string.download_menu_shuffle_notification);
            return true;
        case R.id.menu_item_equalizer:
            startActivity(new Intent(DownloadActivity.this, EqualizerActivity.class));
            return true;
        case R.id.menu_item_visualizer:
            final boolean active = !visualizerView.isActive();
            visualizerView.setActive(active);
            if (!visualizerView.isActive()) {
                visualizerViewLayout.setVisibility(View.GONE);
            } else {
                visualizerViewLayout.setVisibility(View.VISIBLE);
            }
            getDownloadService().setShowVisualization(visualizerView.isActive());
            Util.toast(DownloadActivity.this, active ? R.string.download_visualizer_on : R.string.download_visualizer_off);
            return true;
        case R.id.menu_item_jukebox:
            final boolean jukeboxEnabled = !getDownloadService().isJukeboxEnabled();
            getDownloadService().setJukeboxEnabled(jukeboxEnabled);
            Util.toast(DownloadActivity.this, jukeboxEnabled ? R.string.download_jukebox_on : R.string.download_jukebox_off, false);
            return true;
        case R.id.menu_item_toggle_list:
            toggleFullScreenAlbumArt();
            return true;
        case R.id.menu_item_clear_playlist:
            getDownloadService().setShufflePlayEnabled(false);
            getDownloadService().clear();
            onDownloadListChanged();
            return true;
        case R.id.menu_item_save_playlist:
            if (!getDownloadService().getSongs().isEmpty()) {
                showDialog(DIALOG_SAVE_PLAYLIST);
            }
            return true;
        case R.id.menu_item_star:
            if (currentSong == null) {
                return true;
            }
            final boolean isStarred = currentSong.getStarred();
            final String id = currentSong.getId();
            if (isStarred) {
                starMenuItem.setIcon(Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_hollow));
                currentSong.setStarred(false);
            } else {
                starMenuItem.setIcon(Util.getDrawableFromAttribute(SubsonicTabActivity.getInstance(), R.attr.star_full));
                currentSong.setStarred(true);
            }
            new Thread(new Runnable() {

                @Override
                public void run() {
                    final MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this);
                    try {
                        if (isStarred) {
                            musicService.unstar(id, null, null, DownloadActivity.this, null);
                        } else {
                            musicService.star(id, null, null, DownloadActivity.this, null);
                        }
                    } catch (Exception e) {
                        Log.e(TAG, e.getMessage(), e);
                    }
                }
            }).start();
            return true;
        case R.id.menu_item_bookmark_set:
            if (currentSong == null) {
                return true;
            }
            final String songId = currentSong.getId();
            final int playerPosition = getDownloadService().getPlayerPosition();
            currentSong.setBookmarkPosition(playerPosition);
            String bookmarkTime = Util.formatTotalDuration(playerPosition, true);
            new Thread(new Runnable() {

                @Override
                public void run() {
                    final MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this);
                    try {
                        musicService.createBookmark(songId, playerPosition, DownloadActivity.this, null);
                    } catch (Exception e) {
                        Log.e(TAG, e.getMessage(), e);
                    }
                }
            }).start();
            String msg = getResources().getString(R.string.download_bookmark_set_at_position, bookmarkTime);
            Util.toast(DownloadActivity.this, msg);
            return true;
        case R.id.menu_item_bookmark_delete:
            if (currentSong == null) {
                return true;
            }
            final String bookmarkSongId = currentSong.getId();
            currentSong.setBookmarkPosition(0);
            new Thread(new Runnable() {

                @Override
                public void run() {
                    final MusicService musicService = MusicServiceFactory.getMusicService(DownloadActivity.this);
                    try {
                        musicService.deleteBookmark(bookmarkSongId, DownloadActivity.this, null);
                    } catch (Exception e) {
                        Log.e(TAG, e.getMessage(), e);
                    }
                }
            }).start();
            Util.toast(DownloadActivity.this, R.string.download_bookmark_removed);
            return true;
        case R.id.menu_item_share:
            DownloadService downloadService = getDownloadService();
            List<Entry> entries = new ArrayList<Entry>();
            if (downloadService != null) {
                List<DownloadFile> downloadServiceSongs = downloadService.getSongs();
                if (downloadServiceSongs != null) {
                    for (DownloadFile downloadFile : downloadServiceSongs) {
                        if (downloadFile != null) {
                            Entry playlistEntry = downloadFile.getSong();
                            if (playlistEntry != null) {
                                entries.add(playlistEntry);
                            }
                        }
                    }
                }
            }
            createShare(entries);
            return true;
        default:
            return false;
    }
}
Also used : MusicService(org.moire.ultrasonic.service.MusicService) DownloadFile(org.moire.ultrasonic.service.DownloadFile) ArrayList(java.util.ArrayList) Intent(android.content.Intent) Point(android.graphics.Point) DownloadService(org.moire.ultrasonic.service.DownloadService) Entry(org.moire.ultrasonic.domain.MusicDirectory.Entry)

Example 8 with MusicService

use of org.moire.ultrasonic.service.MusicService in project ultrasonic by ultrasonic.

the class LyricsActivity method load.

private void load() {
    BackgroundTask<Lyrics> task = new TabActivityBackgroundTask<Lyrics>(this, true) {

        @Override
        protected Lyrics doInBackground() throws Throwable {
            String artist = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_ARTIST);
            String title = getIntent().getStringExtra(Constants.INTENT_EXTRA_NAME_TITLE);
            MusicService musicService = MusicServiceFactory.getMusicService(LyricsActivity.this);
            return musicService.getLyrics(artist, title, LyricsActivity.this, this);
        }

        @Override
        protected void done(Lyrics result) {
            TextView artistView = (TextView) findViewById(R.id.lyrics_artist);
            TextView titleView = (TextView) findViewById(R.id.lyrics_title);
            TextView textView = (TextView) findViewById(R.id.lyrics_text);
            if (result != null && result.getArtist() != null) {
                artistView.setText(result.getArtist());
                titleView.setText(result.getTitle());
                textView.setText(result.getText());
            } else {
                artistView.setText(R.string.lyrics_nomatch);
            }
        }
    };
    task.execute();
}
Also used : TabActivityBackgroundTask(org.moire.ultrasonic.util.TabActivityBackgroundTask) MusicService(org.moire.ultrasonic.service.MusicService) Lyrics(org.moire.ultrasonic.domain.Lyrics) TextView(android.widget.TextView)

Example 9 with MusicService

use of org.moire.ultrasonic.service.MusicService in project ultrasonic by ultrasonic.

the class PodcastsActivity method load.

private void load() {
    BackgroundTask<List<PodcastsChannel>> task = new TabActivityBackgroundTask<List<PodcastsChannel>>(this, true) {

        @Override
        protected List<PodcastsChannel> doInBackground() throws Throwable {
            MusicService musicService = MusicServiceFactory.getMusicService(PodcastsActivity.this);
            List<PodcastsChannel> channels = musicService.getPodcastsChannels(false, PodcastsActivity.this, this);
            /*	 TODO c'est quoi ce nettoyage de cache ?
				if (!Util.isOffline(PodcastsActivity.this))
					new CacheCleaner(PodcastsActivity.this, getDownloadService()).cleanPlaylists(playlists);
            */
            return channels;
        }

        @Override
        protected void done(List<PodcastsChannel> result) {
            channelItemsListView.setAdapter(new PodcastsChannelsAdapter(currentActivity, result));
            emptyTextView.setVisibility(result.isEmpty() ? View.VISIBLE : View.GONE);
        }
    };
    task.execute();
}
Also used : TabActivityBackgroundTask(org.moire.ultrasonic.util.TabActivityBackgroundTask) PodcastsChannelsAdapter(org.moire.ultrasonic.view.PodcastsChannelsAdapter) PodcastsChannel(org.moire.ultrasonic.domain.PodcastsChannel) MusicService(org.moire.ultrasonic.service.MusicService) List(java.util.List)

Example 10 with MusicService

use of org.moire.ultrasonic.service.MusicService in project ultrasonic by ultrasonic.

the class SearchActivity method search.

private void search(final String query, final boolean autoplay) {
    final int maxArtists = Util.getMaxArtists(this);
    final int maxAlbums = Util.getMaxAlbums(this);
    final int maxSongs = Util.getMaxSongs(this);
    BackgroundTask<SearchResult> task = new TabActivityBackgroundTask<SearchResult>(this, true) {

        @Override
        protected SearchResult doInBackground() throws Throwable {
            SearchCriteria criteria = new SearchCriteria(query, maxArtists, maxAlbums, maxSongs);
            MusicService service = MusicServiceFactory.getMusicService(SearchActivity.this);
            licenseValid = service.isLicenseValid(SearchActivity.this, this);
            return service.search(criteria, SearchActivity.this, this);
        }

        @Override
        protected void done(SearchResult result) {
            searchResult = result;
            populateList();
            if (autoplay) {
                autoplay();
            }
        }
    };
    task.execute();
}
Also used : TabActivityBackgroundTask(org.moire.ultrasonic.util.TabActivityBackgroundTask) MusicService(org.moire.ultrasonic.service.MusicService) SearchResult(org.moire.ultrasonic.domain.SearchResult) SearchCriteria(org.moire.ultrasonic.domain.SearchCriteria)

Aggregations

MusicService (org.moire.ultrasonic.service.MusicService)24 TabActivityBackgroundTask (org.moire.ultrasonic.util.TabActivityBackgroundTask)10 ArrayList (java.util.ArrayList)9 List (java.util.List)9 MusicDirectory (org.moire.ultrasonic.domain.MusicDirectory)8 TextView (android.widget.TextView)5 DialogInterface (android.content.DialogInterface)4 Intent (android.content.Intent)4 SpannableString (android.text.SpannableString)4 View (android.view.View)4 AdapterView (android.widget.AdapterView)4 ListView (android.widget.ListView)4 PullToRefreshListView (com.handmark.pulltorefresh.library.PullToRefreshListView)4 LinkedList (java.util.LinkedList)4 ApiNotSupportedException (org.moire.ultrasonic.api.subsonic.ApiNotSupportedException)4 Share (org.moire.ultrasonic.domain.Share)4 OfflineException (org.moire.ultrasonic.service.OfflineException)4 LoadingTask (org.moire.ultrasonic.util.LoadingTask)4 Editable (android.text.Editable)3 Entry (org.moire.ultrasonic.domain.MusicDirectory.Entry)3