Search in sources :

Example 11 with Music

use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.

the class AlbumDetailFragment method listener.

@Override
protected void listener() {
    mAdapter.setOnItemClickListener((adapter, view, position) -> {
        if (view.getId() != R.id.iv_more) {
            PlayManager.setPlayList(musicInfos);
            PlayManager.play(position);
        }
    });
    mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
        PopupMenu popupMenu = new PopupMenu(getContext(), view);
        popupMenu.setOnMenuItemClickListener(item -> {
            switch(item.getItemId()) {
                case R.id.popup_song_play:
                    PlayManager.setPlayList(musicInfos);
                    PlayManager.play(position);
                    break;
                case R.id.popup_song_detail:
                    ShowDetailDialog.newInstance((Music) adapter.getItem(position)).show(getChildFragmentManager(), getTag());
                    break;
                case R.id.popup_song_addto_queue:
                    AddPlaylistDialog.newInstance(musicInfos.get(position)).show(getChildFragmentManager(), "ADD_PLAYLIST");
                    break;
            }
            return false;
        });
        popupMenu.inflate(R.menu.popup_album);
        popupMenu.show();
    });
}
Also used : Music(com.cyl.musiclake.bean.Music) PopupMenu(android.widget.PopupMenu)

Example 12 with Music

use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.

the class FolderSongsFragment method listener.

@Override
protected void listener() {
    mAdapter.setOnItemClickListener((adapter, view, position) -> {
        if (view.getId() != R.id.iv_more) {
            PlayManager.setPlayList(musicList);
            PlayManager.play(position);
        }
    });
    mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
        Music music = (Music) adapter.getItem(position);
        PopupMenu popupMenu = new PopupMenu(getContext(), view);
        popupMenu.setOnMenuItemClickListener(item -> {
            switch(item.getItemId()) {
                case R.id.popup_song_play:
                    PlayManager.setPlayList(musicList);
                    PlayManager.play(position);
                    break;
                case R.id.popup_song_detail:
                    ShowDetailDialog.newInstance(musicList.get(position)).show(getChildFragmentManager(), getTag());
                    break;
                case R.id.popup_song_goto_album:
                    Log.e("album", music.toString() + "");
                    NavigateUtil.navigateToAlbum(getActivity(), music.getAlbumId(), music.getAlbum(), null);
                    break;
                case R.id.popup_song_goto_artist:
                    NavigateUtil.navigateToArtist(getActivity(), music.getArtistId(), music.getArtist(), null);
                    break;
                case R.id.popup_song_addto_queue:
                    AddPlaylistDialog.newInstance(music).show(getChildFragmentManager(), "ADD_PLAYLIST");
                    break;
                case R.id.popup_song_delete:
                    new MaterialDialog.Builder(getContext()).title("提示").content("是否移除这首歌曲?").onPositive((dialog, which) -> {
                    }).positiveText("确定").negativeText("取消").show();
                    break;
            }
            return false;
        });
        popupMenu.inflate(R.menu.popup_song);
        popupMenu.show();
    });
}
Also used : LinearLayout(android.widget.LinearLayout) Bundle(android.os.Bundle) R(com.cyl.musiclake.R) FolderSongPresenter(com.cyl.musiclake.ui.music.local.presenter.FolderSongPresenter) ArrayList(java.util.ArrayList) BindView(butterknife.BindView) BaseFragment(com.cyl.musiclake.base.BaseFragment) PopupMenu(android.widget.PopupMenu) View(android.view.View) SongAdapter(com.cyl.musiclake.ui.music.local.adapter.SongAdapter) Log(android.util.Log) PlayManager(com.cyl.musiclake.service.PlayManager) Extras(com.cyl.musiclake.common.Extras) NavigateUtil(com.cyl.musiclake.common.NavigateUtil) Music(com.cyl.musiclake.bean.Music) AddPlaylistDialog(com.cyl.musiclake.ui.music.local.dialog.AddPlaylistDialog) FolderSongsContract(com.cyl.musiclake.ui.music.local.contract.FolderSongsContract) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) AppCompatActivity(android.support.v7.app.AppCompatActivity) RecyclerView(android.support.v7.widget.RecyclerView) List(java.util.List) TextView(android.widget.TextView) Toolbar(android.support.v7.widget.Toolbar) ShowDetailDialog(com.cyl.musiclake.ui.music.local.dialog.ShowDetailDialog) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) Music(com.cyl.musiclake.bean.Music) PopupMenu(android.widget.PopupMenu)

Example 13 with Music

use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.

the class FloatLyricViewManager method loadLyric.

public void loadLyric() {
    Music music = PlayManager.getPlayingMusic();
    if (music == null) {
        return;
    }
    // 先判断本地是否存在歌词
    String lrcPath = FileUtils.getLrcDir() + music.getTitle() + "-" + music.getArtist() + ".lrc";
    if (FileUtils.exists(lrcPath)) {
        LogUtil.e("lrcPath");
        setLyric(LyricParseUtils.setLyricResource(new File(lrcPath)));
    } else {
        Observable<String> observable = MusicApi.getLyricInfo(music);
        if (observable == null) {
            setLyric(null);
        } else {
            observable.subscribe(new Observer<String>() {

                @Override
                public void onSubscribe(Disposable d) {
                }

                @Override
                public void onNext(String lyricInfo) {
                    Log.e(TAG, lyricInfo);
                    setLyric(LyricParseUtils.setLyricResource(lyricInfo));
                }

                @Override
                public void onError(Throwable e) {
                    setLyric(null);
                }

                @Override
                public void onComplete() {
                }
            });
        }
    }
}
Also used : Disposable(io.reactivex.disposables.Disposable) Music(com.cyl.musiclake.bean.Music) File(java.io.File)

Example 14 with Music

use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.

the class MediaSessionManager method updateMetaData.

/**
 * 更新正在播放的音乐信息,切换歌曲时调用
 */
public void updateMetaData(String path) {
    // if (!StringUtils.isReal(path)) {
    // mMediaSession.setMetadata(null);
    // return;
    // }
    Music songInfo = PlayManager.getPlayingMusic();
    MediaMetadataCompat.Builder metaDta = new MediaMetadataCompat.Builder().putString(MediaMetadataCompat.METADATA_KEY_TITLE, songInfo.getTitle()).putString(MediaMetadataCompat.METADATA_KEY_ARTIST, songInfo.getArtist()).putString(MediaMetadataCompat.METADATA_KEY_ALBUM, songInfo.getAlbum()).putString(MediaMetadataCompat.METADATA_KEY_ALBUM_ARTIST, songInfo.getArtist()).putLong(MediaMetadataCompat.METADATA_KEY_DURATION, songInfo.getDuration());
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        metaDta.putLong(MediaMetadataCompat.METADATA_KEY_NUM_TRACKS, getCount());
    }
    mMediaSession.setMetadata(metaDta.build());
}
Also used : MediaMetadataCompat(android.support.v4.media.MediaMetadataCompat) Music(com.cyl.musiclake.bean.Music)

Example 15 with Music

use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.

the class PlayHistoryLoader method getPlayHistory.

// /**
// * 添加歌曲到歌单
// */
// private static void resetQueue(Context context, List<Music> musics) {
// DBDaoImpl dbDaoImpl = new DBDaoImpl(context);
// dbDaoImpl.insertSongs(musics);
// for (int i = 0; i < musics.size(); i++) {
// dbDaoImpl.insertSongToPlaylist(DBData.PLAY_QUEUE, musics.get(i).getId());
// }
// dbDaoImpl.closeDB();
// }
/**
 * 获取播放队列
 */
public static Observable<List<Music>> getPlayHistory(Context context) {
    return Observable.create(subscriber -> {
        String sql = "select *,count(name) as num,max(music_playlist.date_added) as time " + "from music inner join music_playlist where music.mid = music_playlist.mid  and music_playlist.pid=1 " + "GROUP BY music.name ORDER BY time DESC";
        try {
            DBDaoImpl dbDaoImpl = new DBDaoImpl(context);
            Cursor cursor = dbDaoImpl.makeCursor(sql);
            List<Music> results = dbDaoImpl.getSongsForCursor(cursor);
            dbDaoImpl.closeDB();
            subscriber.onNext(results);
            subscriber.onComplete();
        } catch (Exception e) {
            subscriber.onError(e);
        }
    });
}
Also used : DBDaoImpl(com.cyl.musiclake.data.source.db.DBDaoImpl) Music(com.cyl.musiclake.bean.Music) Cursor(android.database.Cursor)

Aggregations

Music (com.cyl.musiclake.bean.Music)45 ArrayList (java.util.ArrayList)15 PopupMenu (android.widget.PopupMenu)10 DBDaoImpl (com.cyl.musiclake.data.source.db.DBDaoImpl)9 List (java.util.List)9 Log (android.util.Log)7 MaterialDialog (com.afollestad.materialdialogs.MaterialDialog)7 HashMap (java.util.HashMap)7 Intent (android.content.Intent)6 Cursor (android.database.Cursor)6 Bundle (android.os.Bundle)6 R (com.cyl.musiclake.R)6 PlayManager (com.cyl.musiclake.service.PlayManager)5 FileUtils (com.cyl.musiclake.utils.FileUtils)5 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)4 RecyclerView (android.support.v7.widget.RecyclerView)4 BindView (butterknife.BindView)4 BaseFragment (com.cyl.musiclake.base.BaseFragment)4 SongAdapter (com.cyl.musiclake.ui.music.local.adapter.SongAdapter)4 AddPlaylistDialog (com.cyl.musiclake.ui.music.local.dialog.AddPlaylistDialog)4