Search in sources :

Example 31 with Music

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

the class ArtistSongsFragment method listener.

@SuppressWarnings({ "unchecked", "varargs" })
@Override
protected void listener() {
    mAdapter.setOnItemClickListener((adapter, view, position) -> {
        if (view.getId() != R.id.iv_more) {
            List<Music> musicList = adapter.getData();
            PlayManager.setPlayList(musicList);
            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((List<Music>) adapter.getData());
                    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 32 with Music

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

the class ArtistInfoActivity method initData.

@Override
protected void initData() {
    Music music = getIntent().getParcelableExtra(Extras.TING_UID);
    mPresenter = new ArtistInfoPresenter();
    mPresenter.attachView(this);
    mPresenter.loadArtistInfo(music);
}
Also used : DoubanMusic(com.cyl.musiclake.api.doupan.DoubanMusic) Music(com.cyl.musiclake.bean.Music) ArtistInfoPresenter(com.cyl.musiclake.ui.music.online.presenter.ArtistInfoPresenter)

Example 33 with Music

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

the class SearchActivity method listener.

@SuppressWarnings({ "unchecked", "varargs" })
@Override
protected void listener() {
    mAdapter.setOnItemClickListener((adapter, view, position) -> {
        Music music = searchResults.get(position);
        Log.e(TAG, music.toString());
        mPresenter.getMusicInfo(0, music);
    });
    mAdapter.setOnItemChildClickListener((adapter, view, position) -> {
        Music music = searchResults.get(position);
        PopupMenu popupMenu = new PopupMenu(this, view);
        popupMenu.setOnMenuItemClickListener(item -> {
            switch(item.getItemId()) {
                case R.id.popup_song_detail:
                    ShowDetailDialog.newInstance(music).show(getSupportFragmentManager(), TAG);
                    break;
                case R.id.popup_song_goto_artist:
                    Log.e(TAG, music.toString());
                    Intent intent = new Intent(this, ArtistInfoActivity.class);
                    intent.putExtra(Extras.TING_UID, music);
                    startActivity(intent);
                    break;
                case R.id.popup_add_playlist:
                    mPresenter.addPlaylist(music);
                    break;
                case R.id.popup_song_download:
                    mPresenter.getMusicInfo(1, music);
                    break;
            }
            return true;
        });
        popupMenu.inflate(R.menu.popup_song_online);
        popupMenu.show();
    });
    mAdapter.setOnLoadMoreListener(() -> mRecyclerView.postDelayed(() -> {
        TOTAL_COUNTER = limit * mOffset * 2;
        if (mCurrentCounter < TOTAL_COUNTER) {
            // 数据全部加载完毕
            mAdapter.loadMoreEnd();
        } else {
            mOffset++;
            // 成功获取更多数据
            mPresenter.search(queryString, limit, mOffset);
        }
    }, 1000), mRecyclerView);
}
Also used : Music(com.cyl.musiclake.bean.Music) Intent(android.content.Intent) PopupMenu(android.widget.PopupMenu)

Example 34 with Music

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

the class PlayControlsPresenter method updateNowPlayingCard.

@Override
public void updateNowPlayingCard() {
    Log.d(TAG, "updateNowPlayingCard" + mProgress);
    Music music = PlayManager.getPlayingMusic();
    if (music == null || PlayManager.getPlayList().size() == 0) {
        Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.default_cover);
        mView.setAlbumArt(bitmap);
        mView.setTitle(mContext.getResources().getString(R.string.app_name));
        mView.setArtist("");
        mView.updatePanelLayout(false);
        return;
    } else {
        mView.updatePanelLayout(true);
    }
    final String title = PlayManager.getSongName();
    final String artist = PlayManager.getSongArtist();
    if (TextUtils.isEmpty(title) && TextUtils.isEmpty(artist)) {
        mView.setTitle(mContext.getResources().getString(R.string.app_name));
        mView.setArtist("");
    } else {
        mView.setTitle(title);
        mView.setArtist(artist);
    }
    String picUrl = CoverLoader.getInstance().getCoverUriByMusic(music);
    // 设置音乐来源
    mView.setOtherInfo(music.getTypeName(false));
    // 获取当前歌曲状态
    AppRepository.getMusicInfo(mContext, music).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(music1 -> mView.updateFavorite(music1.isLove()));
    if (!isPlayPauseClick && !activity.isFinishing()) {
        loadLyric();
        GlideApp.with(mContext).asBitmap().load(picUrl != null ? picUrl : CoverLoader.getInstance().getCoverUriByRandom()).error(CoverLoader.getInstance().getCoverUriByRandom()).diskCacheStrategy(DiskCacheStrategy.ALL).into(new SimpleTarget<Bitmap>() {

            @Override
            public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
                mView.setAlbumArt(resource);
                mView.setAlbumArt(ImageUtils.createBlurredImageFromBitmap(resource, mContext, 12));
                new Palette.Builder(resource).generate(palette -> mView.setPalette(palette));
            }
        });
    }
    isPlayPauseClick = false;
    mHandler.post(updateProgress);
}
Also used : GlideApp(com.cyl.musiclake.api.GlideApp) Context(android.content.Context) Palette(android.support.v7.graphics.Palette) LogUtil(com.cyl.musiclake.utils.LogUtil) FileUtils(com.cyl.musiclake.utils.FileUtils) R(com.cyl.musiclake.R) BitmapFactory(android.graphics.BitmapFactory) MusicApi(com.cyl.musiclake.api.MusicApi) AndroidSchedulers(io.reactivex.android.schedulers.AndroidSchedulers) SuppressLint(android.annotation.SuppressLint) CoverLoader(com.cyl.musiclake.utils.CoverLoader) Handler(android.os.Handler) DiskCacheStrategy(com.bumptech.glide.load.engine.DiskCacheStrategy) Observable(io.reactivex.Observable) Schedulers(io.reactivex.schedulers.Schedulers) PlayControlsContract(com.cyl.musiclake.ui.music.local.contract.PlayControlsContract) MetaChangedEvent(com.cyl.musiclake.event.MetaChangedEvent) Log(android.util.Log) PlayManager(com.cyl.musiclake.service.PlayManager) SimpleTarget(com.bumptech.glide.request.target.SimpleTarget) Music(com.cyl.musiclake.bean.Music) TextUtils(android.text.TextUtils) AppRepository(com.cyl.musiclake.data.source.AppRepository) ImageUtils(com.cyl.musiclake.utils.ImageUtils) StatusChangedEvent(com.cyl.musiclake.event.StatusChangedEvent) Disposable(io.reactivex.disposables.Disposable) Bitmap(android.graphics.Bitmap) Transition(com.bumptech.glide.request.transition.Transition) Observer(io.reactivex.Observer) RxBus(com.cyl.musiclake.RxBus) Activity(android.app.Activity) Bitmap(android.graphics.Bitmap) Music(com.cyl.musiclake.bean.Music)

Example 35 with Music

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

the class PlayControlsPresenter method loadLyric.

@Override
public void loadLyric() {
    Music music = PlayManager.getPlayingMusic();
    if (music == null) {
        return;
    }
    if (isPlayPauseClick)
        return;
    String lrcPath = FileUtils.getLrcDir() + music.getTitle() + "-" + music.getArtist() + ".lrc";
    if (FileUtils.exists(lrcPath)) {
        mView.showLyric(lrcPath, true);
    } else {
        Observable<String> observable = MusicApi.getLyricInfo(music);
        if (observable == null) {
            LogUtil.e(TAG, "本地文件为空");
            mView.showLyric(null, false);
        } else {
            observable.subscribe(new Observer<String>() {

                @Override
                public void onSubscribe(Disposable d) {
                }

                @Override
                public void onNext(String lyricInfo) {
                    Log.e(TAG, lyricInfo);
                    mView.showLyric(lyricInfo, false);
                }

                @Override
                public void onError(Throwable e) {
                    mView.showLyric(null, false);
                }

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

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