use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class ApiManagerServiceTest method testsearch.
public void testsearch() {
String key = "薛之谦";
int limit = 8;
int page = 1;
Observable.merge(QQApiServiceImpl.search(key, limit, page), XiamiServiceImpl.search(key, limit, page)).subscribe(musicList -> {
System.out.println(musicList.size());
for (Music mus : musicList) {
System.out.println(mus.toString());
}
});
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class MusicPlayerService method playCurrentAndNext.
/**
* 播放当前歌曲
*/
private void playCurrentAndNext() {
synchronized (this) {
if (mPlayingPos > mPlaylist.size() && mPlayingPos == -1) {
return;
}
mPlayingMusic = mPlaylist.get(mPlayingPos);
Observable<Music> observable = null;
LogUtil.e(TAG, "-----" + mPlayingMusic.toString());
if (mPlayingMusic.getUri() == null || mPlayingMusic.getUri().equals("")) {
observable = MusicApi.getMusicInfo(mPlayingMusic);
}
if (observable != null) {
observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<Music>() {
@Override
public void onSubscribe(Disposable disposable) {
}
@Override
public void onNext(Music music) {
LogUtil.e(TAG, "-----" + music.toString());
mPlayingMusic = music;
saveHistory();
isMusicPlaying = true;
mPlayer.setDataSource(mPlayingMusic.getUri());
}
@Override
public void onError(Throwable throwable) {
}
@Override
public void onComplete() {
}
});
}
saveHistory();
mHistoryPos.add(mPlayingPos);
isMusicPlaying = true;
mPlayer.setDataSource(mPlayingMusic.getUri());
updateNotification();
mediaSessionManager.updateMetaData(mPlayingMusic.getUri());
final Intent intent = new Intent(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION);
intent.putExtra(AudioEffect.EXTRA_AUDIO_SESSION, getAudioSessionId());
intent.putExtra(AudioEffect.EXTRA_PACKAGE_NAME, getPackageName());
sendBroadcast(intent);
if (mPlayer.isInitialized()) {
mHandler.removeMessages(VOLUME_FADE_DOWN);
// 组件调到正常音量
mHandler.sendEmptyMessage(VOLUME_FADE_UP);
isMusicPlaying = true;
notifyChange(PLAY_STATE_CHANGED);
}
}
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class PlaylistLoader method getMusicForPlaylist.
/**
* 扫描歌单歌曲
*/
public static Observable<List<Music>> getMusicForPlaylist(Context context, String playlist_id) {
return Observable.create(subscriber -> {
String sql = "select * from " + DBData.MUSIC_TABLE + " , " + DBData.MTP_TABLE + " where " + DBData.MUSIC_TABLE + ".mid = " + DBData.MTP_TABLE + ".mid " + "and " + DBData.MTP_TABLE + ".pid=" + playlist_id + " ORDER BY music_playlist.date_added DESC";
DBDaoImpl dbDaoImpl = new DBDaoImpl(context);
if (playlist_id.equals("1")) {
sql = "SELECT DISTINCT music.mid, music.name, music.filename, music.path, music.lrc_path, music.duration, music.size, music.artist_id, music.artist, music.album, music.album_id, music.cover, music.coverBig, music.coverSmall, music.type, music.is_love, music.is_online, music.prefix, music.years, ( SELECT music_playlist.date_added FROM music_playlist WHERE music_playlist.pid = 0 AND music_playlist.mid = music.mid ORDER BY music_playlist.date_added DESC ) AS time, ( SELECT Count(music_playlist.mid) FROM music_playlist WHERE music_playlist.pid = 0 AND music_playlist.mid = music.mid ) AS num FROM music_playlist, music WHERE music_playlist.mid = music.mid AND music_playlist.pid = 1 ORDER BY time DESC";
} else if (playlist_id.equals("0")) {
sql = "SELECT DISTINCT music.mid, music.name, music.filename, music.path, music.lrc_path, music.duration, music.size, music.artist_id, music.artist, music.album, music.album_id, music.cover, music.coverBig, music.coverSmall, music.type, music.is_love, music.is_online, music.prefix, music.years, ( SELECT music_playlist.date_added FROM music_playlist WHERE music_playlist.pid = 0 AND music_playlist.mid = music.mid ORDER BY music_playlist.date_added DESC ) AS time, ( SELECT Count(music_playlist.mid) FROM music_playlist WHERE music_playlist.pid = 0 AND music_playlist.mid = music.mid ) AS num FROM music_playlist, music WHERE music_playlist.mid = music.mid AND music_playlist.pid = 0 ORDER BY time DESC";
}
Cursor cursor = dbDaoImpl.makeCursor(sql);
List<Music> results = dbDaoImpl.getSongsForCursor(cursor);
dbDaoImpl.closeDB();
subscriber.onNext(results);
subscriber.onComplete();
});
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class SongLoader method getSongsForDB.
/**
* Android 扫描获取到的数据
*
* @param context
* @param cursor
* @return
*/
public static Observable<List<Music>> getSongsForDB(Context context, final Cursor cursor) {
DBDaoImpl dbDao = new DBDaoImpl(context);
if ((cursor != null) && (cursor.moveToFirst())) {
do {
long id = cursor.getLong(0);
String title = cursor.getString(1);
String artist = cursor.getString(2);
String album = cursor.getString(3);
int duration = cursor.getInt(4);
int trackNumber = cursor.getInt(5);
String artistId = cursor.getString(6);
long albumId = cursor.getLong(7);
String path = cursor.getString(8);
String coverUri = CoverLoader.getInstance().getCoverUri(context, albumId);
Music music = dbDao.getMusicInfo(id + "");
if (music != null) {
if (coverUri != null) {
music.setCoverUri(coverUri);
updateMusic(dbDao, music);
}
} else {
music = new Music(id, albumId, artistId, title, artist, album, duration, trackNumber, path);
dbDao.insertSong(music);
}
} while (cursor.moveToNext());
}
if (cursor != null) {
cursor.close();
}
String sql = "select * from " + DBData.MUSIC_TABLE + " where " + DBData.IS_ONLINE + "=0";
Cursor mCursor = dbDao.makeCursor(sql);
return getSongsForCursor(context, mCursor);
}
use of com.cyl.musiclake.bean.Music in project MusicLake by caiyonglong.
the class DBDaoImpl method getSongsForCursor.
/**
* 获取音乐集合
*
* @param cursor
* @return
*/
@Override
public List<Music> getSongsForCursor(Cursor cursor) {
List<Music> results = new ArrayList<>();
if (cursor != null && cursor.getCount() > 0) {
while (cursor.moveToNext()) {
Music music = new MusicCursorWrapper(cursor).getMusic();
LogUtil.d(TAG, "getSongsForCursor:" + music.toString());
results.add(music);
}
}
// 记得关闭游标
if (cursor != null) {
cursor.close();
}
return results;
}
Aggregations