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();
});
}
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();
});
}
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() {
}
});
}
}
}
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());
}
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);
}
});
}
Aggregations