Search in sources :

Example 36 with Music

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());
        }
    });
}
Also used : Music(com.cyl.musiclake.bean.Music)

Example 37 with Music

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);
        }
    }
}
Also used : Disposable(io.reactivex.disposables.Disposable) Music(com.cyl.musiclake.bean.Music) PendingIntent(android.app.PendingIntent) Intent(android.content.Intent)

Example 38 with Music

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();
    });
}
Also used : DBDaoImpl(com.cyl.musiclake.data.source.db.DBDaoImpl) Music(com.cyl.musiclake.bean.Music) Cursor(android.database.Cursor)

Example 39 with Music

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);
}
Also used : DBDaoImpl(com.cyl.musiclake.data.source.db.DBDaoImpl) Music(com.cyl.musiclake.bean.Music) Cursor(android.database.Cursor)

Example 40 with Music

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;
}
Also used : Music(com.cyl.musiclake.bean.Music) ArrayList(java.util.ArrayList)

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