Search in sources :

Example 26 with Music

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

the class XiamiServiceImpl method getMusicInfo.

@SuppressWarnings({ "unchecked", "varargs" })
public static Observable<Music> getMusicInfo(Music musicInfo) {
    Map<String, String> params = new HashMap<>();
    // page
    params.put("v", "2.0");
    // page
    params.put("page", "1");
    // limit
    params.put("limit", "1");
    // key
    params.put("key", musicInfo.getTitle() + "-" + musicInfo.getArtist());
    params.put("r", "search/songs");
    params.put("app_key", "1");
    params.put("format", "json");
    return getApiService().searchByXiaMi(params).flatMap(xiaMiModel -> {
        List<Music> musicList = new ArrayList<>();
        List<XiamiModel.DataBean.SongsBean> songs = xiaMiModel.getData().getSongs();
        for (int i = 0; i < songs.size(); i++) {
            XiamiModel.DataBean.SongsBean song = songs.get(i);
            Music music = new Music();
            music.setType(Music.Type.XIAMI);
            music.setOnline(true);
            music.setId(String.valueOf(song.getSong_id()));
            music.setTitle(song.getSong_name());
            music.setArtist(song.getArtist_name());
            music.setArtistId(String.valueOf(song.getArtist_id()));
            music.setAlbum(song.getAlbum_name());
            music.setAlbumId(song.getAlbum_id());
            music.setUri(song.getListen_file());
            String cover = song.getAlbum_logo() + "@1e_1c_0i_1o_100Q_250w_250h";
            String coverBig = song.getAlbum_logo() + "@1e_1c_0i_1o_100Q_400w_400h";
            String coverSmall = song.getAlbum_logo() + "@1e_1c_0i_1o_100Q_150w_150h";
            music.setCoverUri(cover);
            music.setCoverBig(coverBig);
            music.setCoverSmall(coverSmall);
            music.setLrcPath(song.getLyric());
            musicList.add(music);
        }
        LogUtil.e("search", "xiami :" + musicList.size());
        return Observable.fromArray(musicList.get(0));
    });
}
Also used : HashMap(java.util.HashMap) Music(com.cyl.musiclake.bean.Music) ArrayList(java.util.ArrayList)

Example 27 with Music

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

the class BaiduApiServiceImpl method getTingSongInfo.

// {"errorCode":22232,"data":{"xcode":"","songList":""}}
public static Observable<Music> getTingSongInfo(String mid) {
    Map<String, String> params = new HashMap<>();
    String Url = "http://music.baidu.com/data/music/links?songIds=" + mid;
    return getApiService().getTingSongInfo(Url, params).flatMap(baiduSongInfo -> {
        Music music = new Music();
        BaiduSongInfo.DataBean.SongListBean songInfo = baiduSongInfo.getData().getSongList().get(0);
        music.setType(Music.Type.BAIDU);
        music.setOnline(true);
        music.setId(songInfo.getSongId());
        music.setAlbum(songInfo.getAlbumName());
        music.setAlbumId(songInfo.getAlbumId());
        music.setArtistId(songInfo.getArtistId());
        music.setArtist(songInfo.getArtistName());
        music.setTitle(songInfo.getSongName());
        music.setUri(songInfo.getSongLink());
        music.setFileSize(songInfo.getSize());
        music.setLrcPath(songInfo.getLrcLink());
        music.setCoverSmall(songInfo.getSongPicSmall());
        music.setCoverUri(songInfo.getSongPicBig());
        music.setCoverBig(songInfo.getSongPicRadio());
        return Observable.create((ObservableOnSubscribe<Music>) e -> {
            if (music.getUri() != null) {
                e.onNext(music);
                e.onComplete();
            } else {
                e.onError(new Throwable());
            }
        });
    });
}
Also used : List(java.util.List) Music(com.cyl.musiclake.bean.Music) LogUtil(com.cyl.musiclake.utils.LogUtil) FileUtils(com.cyl.musiclake.utils.FileUtils) ObservableOnSubscribe(io.reactivex.ObservableOnSubscribe) Map(java.util.Map) HashMap(java.util.HashMap) Observable(io.reactivex.Observable) Constants(com.cyl.musiclake.common.Constants) ApiManager(com.cyl.musiclake.net.ApiManager) ArrayList(java.util.ArrayList) HashMap(java.util.HashMap) Music(com.cyl.musiclake.bean.Music)

Example 28 with Music

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

the class NeteaseApiServiceImpl method search.

public static Observable<List<Music>> search(String key, int limit, int page) {
    Map<String, String> params = new HashMap<>();
    // page
    params.put("offset", String.valueOf(page));
    // limit
    params.put("limit", String.valueOf(limit));
    // key
    params.put("keywords", key);
    return getApiService().searchByNetease(params).flatMap(netease -> {
        List<Music> musicList = new ArrayList<>();
        List<NeteaseMusic> songList = netease.getResult().getSongs();
        for (int i = 0; i < songList.size(); i++) {
            NeteaseMusic song = songList.get(i);
            Music music = new Music(song);
            musicList.add(music);
        }
        LogUtil.e("search", page + "--" + limit + "qq :" + musicList.size());
        return Observable.fromArray(musicList);
    });
}
Also used : HashMap(java.util.HashMap) Music(com.cyl.musiclake.bean.Music) ArrayList(java.util.ArrayList)

Example 29 with Music

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

the class PlayFragment method download.

@OnClick(R.id.skip_download)
void download() {
    Music music = PlayManager.getPlayingMusic();
    MusicApiUtils.checkDownload((AppCompatActivity) getActivity(), music);
}
Also used : Music(com.cyl.musiclake.bean.Music) OnClick(butterknife.OnClick)

Example 30 with Music

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

the class PlaylistDetailFragment method onOptionsItemSelected.

@SuppressLint("ResourceAsColor")
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();
    switch(id) {
        case R.id.action_delete_playlist:
            new MaterialDialog.Builder(getContext()).title("提示").content("是否删除这个歌单?").onPositive((dialog, which) -> {
                mPresenter.deletePlaylist(mPlaylist);
            // PlaylistLoader.deletePlaylist(getActivity(), mPlaylist.getId());
            // RxBus.getInstance().post(new Playlist());
            // onBackPress();
            }).positiveText("确定").negativeText("取消").show();
            break;
        case R.id.action_rename_playlist:
            new MaterialDialog.Builder(getActivity()).title("重命名歌单").positiveText("确定").negativeText("取消").inputRangeRes(2, 10, R.color.red).inputType(InputType.TYPE_CLASS_TEXT).input("输入歌单名", mPlaylist.getName(), false, (dialog, input) -> Log.e("=====", input.toString())).onPositive((dialog, which) -> {
                String title = dialog.getInputEditText().getText().toString();
                mPresenter.renamePlaylist(mPlaylist, title);
            }).positiveText("确定").negativeText("取消").show();
            break;
        case R.id.action_share:
            Intent intent3 = new Intent(getActivity(), EditActivity.class);
            StringBuilder content = new StringBuilder();
            if (musicList.size() > 0) {
                content = new StringBuilder("分享歌单\n");
            }
            for (int i = 0; i < musicList.size(); i++) {
                content.append(musicList.get(i).getTitle()).append("---").append(musicList.get(i).getArtist());
                content.append("\n");
            }
            intent3.putExtra("content", content.toString());
            startActivity(intent3);
            break;
        case R.id.action_add:
            List<String> titles = new ArrayList<>();
            List<Music> addMusicList = SongLoader.getSongsForDB(getContext());
            for (Music music : addMusicList) {
                titles.add(music.getTitle() + "-" + music.getArtist());
            }
            new MaterialDialog.Builder(getActivity()).title("新增歌曲").iconRes(R.drawable.ic_playlist_add).content("快速添加歌曲,更加方便地添加所需要的歌曲到当前目录").positiveText("确定").items(titles).itemsCallbackMultiChoice(null, (dialog, which, text) -> false).onPositive((dialog, which) -> {
                dialog.dismiss();
                int sum = dialog.getSelectedIndices().length, num = 0;
                for (int i = 0; i < sum; i++) {
                    int index = dialog.getSelectedIndices()[i];
                    boolean success = PlaylistLoader.addToPlaylist(getContext(), mPlaylist.getId(), addMusicList.get(index).getId());
                    if (success) {
                        num++;
                    }
                }
                mPresenter.loadPlaylistSongs(mPlaylist.getId());
                mPresenter.loadPlaylistArt(mPlaylist.getId());
                ToastUtils.show(getContext(), num + "首添加成功," + (sum - num) + "首已存在此歌单添加失败");
                RxBus.getInstance().post(new Playlist());
            }).show();
            break;
    }
    return super.onOptionsItemSelected(item);
}
Also used : Bundle(android.os.Bundle) R(com.cyl.musiclake.R) EditActivity(com.cyl.musiclake.ui.zone.EditActivity) Playlist(com.cyl.musiclake.bean.Playlist) ImageView(android.widget.ImageView) Intent(android.content.Intent) Drawable(android.graphics.drawable.Drawable) OnClick(butterknife.OnClick) MenuItem(android.view.MenuItem) SongLoader(com.cyl.musiclake.data.source.SongLoader) ArrayList(java.util.ArrayList) BindView(butterknife.BindView) SuppressLint(android.annotation.SuppressLint) BaseFragment(com.cyl.musiclake.base.BaseFragment) ToastUtils(com.cyl.musiclake.utils.ToastUtils) MenuInflater(android.view.MenuInflater) PopupMenu(android.widget.PopupMenu) PlaylistLoader(com.cyl.musiclake.data.source.PlaylistLoader) Menu(android.view.Menu) SongAdapter(com.cyl.musiclake.ui.music.local.adapter.SongAdapter) Build(android.os.Build) Log(android.util.Log) PlayManager(com.cyl.musiclake.service.PlayManager) Extras(com.cyl.musiclake.common.Extras) Music(com.cyl.musiclake.bean.Music) FloatingActionButton(android.support.design.widget.FloatingActionButton) PlaylistDetailContract(com.cyl.musiclake.ui.music.local.contract.PlaylistDetailContract) AddPlaylistDialog(com.cyl.musiclake.ui.music.local.dialog.AddPlaylistDialog) InputType(android.text.InputType) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) AppCompatActivity(android.support.v7.app.AppCompatActivity) RecyclerView(android.support.v7.widget.RecyclerView) List(java.util.List) Toolbar(android.support.v7.widget.Toolbar) Bitmap(android.graphics.Bitmap) ShowDetailDialog(com.cyl.musiclake.ui.music.local.dialog.ShowDetailDialog) PlaylistDetailPresenter(com.cyl.musiclake.ui.music.local.presenter.PlaylistDetailPresenter) RxBus(com.cyl.musiclake.RxBus) MaterialDialog(com.afollestad.materialdialogs.MaterialDialog) Playlist(com.cyl.musiclake.bean.Playlist) Music(com.cyl.musiclake.bean.Music) ArrayList(java.util.ArrayList) Intent(android.content.Intent) SuppressLint(android.annotation.SuppressLint) SuppressLint(android.annotation.SuppressLint)

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