1,不能获取在线,这些都是音乐厂家规定,声必可没有版权去通过SDK外放
2,声必可自己的桌面音乐的在线也需要是QQ音乐会员
MusicOpenSdk可以提供本地音乐的播放操作,需要装在中控屏幕上。如果需要远程,可以通过http接口和mqtt通信来实现。
### 歌曲信息
可以获取歌曲名字,歌手名字
```
public class JdSong {
public String song_name;
public int source;
public int islocal;
public String pic_url;
public String song_id;
public String singers;
public String uri;
public JdSong() {
}
```
### 本地音乐列表
```
mJdMusicPresenter = new JdLocalMusicPresenter(context, new ILocalMusicCallBack() {
@Override
public void onGetSdSongsSuccess(List<EglSong> list) {
Logger.d("onGetSdSongsSuccess");
}
@Override
public void onQueryLocalSceneMusic(List<LocalSceneMusic> list) {
}
});
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//获取Sd卡下歌曲
mJdMusicPresenter.querySdCardSongs();
}
}, 1000);
```
### 音乐播放控制
播放上一首
播放暂停切换
播放下一首
切换播放模式
```
@OnClick({R.id.prev, R.id.play_pause, R.id.next, R.id.play_list, R.id.list_mode})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.prev:
mJdPlayPresenter.prev();//播放上一首
break;
case R.id.play_pause:
playPause.setImageResource(mMediaState != JdMusicConstant.MEDIA_STATE_PLAYING ? android.R.drawable.ic_media_pause : android.R.drawable.ic_media_play);
//播放暂停切换
mJdPlayPresenter.togglePlay();
break;
case R.id.next:
//播放下一首
mJdPlayPresenter.next();
break;
case R.id.play_list:
showWaitDialog("提示", "正在获取播放列表,请稍后...");
//查询播放列表 查询成功后会 回调onPlaylist
mJdPlayPresenter.queryPlayList(new JdCallBack() {
@Override
public void onSuccess() {
hideWaitDialog();
mPlaylistPopupWindow.showAtLocation(mContainView, Gravity.BOTTOM
| Gravity.CENTER_HORIZONTAL, 0, 0);
}
@Override
public void onFail(String msg) {
hideWaitDialog();
showToast(msg);
}
});
break;
case R.id.list_mode:
mJdPlayPresenter.switchListMode();//按顺序依次切换播放模式
//mJdPlayPresenter.switchListMode(PlayMode.LOOP_LIST.getKey());//切换到指定的播放模式
//mJdPlayPresenter.setAudioEffect(4); //切换到第4个音效, 音效详细顺序见,“桌面-》系统设置-》音效设置”
break;
}
}
```
1,播放进度回调 进度变化会主动回调
```
@Override
public void onProgress(final int progress, final int duration) {
Logger.d( "progress:" + progress + " duration:" + duration);
}
```
2,歌曲改变回调
```
@Override
public void onSongChange(EglSong eglSong) {
Logger.d("播放状态回调");
// songName.setText(eglSong.getName());
// ImageLoader.getInstance().displayImage(eglSong.getImgPath(), songImg);
}
```
3,播放状态回调
```
@Override
public void onPlayStatus(final int status) {
Logger.d("播放状态回调"+status);
mMediaState = status;
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// switch (status) {
// case JdMusicConstant.MEDIA_STATE_IDLE:
// playPause.setImageResource(android.R.drawable.ic_media_play);
// break;
// case JdMusicConstant.MEDIA_STATE_PREPARED:
// playPause.setImageResource(android.R.drawable.ic_media_pause);
// break;
// case JdMusicConstant.MEDIA_STATE_PLAYING:
// playPause.setImageResource(android.R.drawable.ic_media_pause);
// break;
// case JdMusicConstant.MEDIA_STATE_PAUSE:
// playPause.setImageResource(android.R.drawable.ic_media_play);
// break;
// }
// }
// });
}
```
4,播放模式改变回调
```
@Override
public void onListModeChange(String listMode) {
refreshListModeIcon(listMode);
Logger.d("播放模式改变回调"+listMode);
}
```
5,播放列表发生改变回调
```
@Override
public void onPlaylist(List<JdSong> list) {
Logger.d("播放列表发生改变回调");
}
```
6,播放列表播放位置发生该变回调,当前在播放第几个
```
@Override
public void onPlaylistPosition(int position) {
Logger.d("播放列表播放位置发生该变回调,当前在播放第几个"+position);
}
```