一.需求:
二. 权限:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bawei.yuekao">
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".WelComeActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MainActivity">
</activity>
<service android:name=".service.MusicService"></service>
<service android:name=".service.DownloadService"></service>
</application>
</manifest>
三.依赖:
implementation 'com.google.code.gson:gson:2.8.2'
implementation 'com.github.bumptech.glide:glide:4.9.0'
implementation 'com.android.support:design:30.0.0'
四.代码结构
五.全部代码:
1:引导页面功能
- 主页面:WelComeActivity.java
package com.bawei.yuekao;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.RadioGroup;
import com.bawei.yuekao.adapter.WelComeAdapter;
import com.bawei.yuekao.fragment.WelcomeFragmentOne;
import com.bawei.yuekao.fragment.WelcomeFragmentThree;
import com.bawei.yuekao.fragment.WelcomeFragmentTwo;
import com.bawei.yuekao.utils.SPUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
public class WelComeActivity extends AppCompatActivity {
private ViewPager viewPager;
private List<Fragment> list;
private WelComeAdapter welComeAdapter;
private RadioGroup radioGroup;
private Timer timer;
private int position = 0;
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what == 102){
viewPager.setCurrentItem(position++);
if(position == 3){
timer.cancel();
Intent intent = new Intent(WelComeActivity.this,MainActivity.class);
startActivity(intent);
//sp记录
SPUtils.getInstance(WelComeActivity.this).putString("go","1");
}
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wel_come);
//sp获得值
String go = SPUtils.getInstance(this).getString("go");
if(!go.equals("")){
Intent intent = new Intent(WelComeActivity.this,MainActivity.class);
startActivity(intent);
return;//!!!!!!!!结束
}
viewPager = findViewById(R.id.view_pager);
radioGroup = findViewById(R.id.rg);
list = new ArrayList<>();
list.add(new WelcomeFragmentOne());
list.add(new WelcomeFragmentTwo());
list.add(new WelcomeFragmentThree());
welComeAdapter = new WelComeAdapter(getSupportFragmentManager(),list);
viewPager.setAdapter(welComeAdapter);
//滑动viewpager
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
switch (position){
case 0:
radioGroup.check(R.id.rb1);
break;
case 1:
radioGroup.check(R.id.rb2);
break;
case 2:
radioGroup.check(R.id.rb3);
break;
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
//自动滑动
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(102);
}
},0,1000);
}
}
- 引导页第三个fragment:WelComeFragmentThree.java
package com.bawei.yuekao.fragment;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.bawei.yuekao.R;
import java.util.Timer;
import java.util.TimerTask;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
/**
* A simple {@link Fragment} subclass.
*/
public class WelcomeFragmentThree extends Fragment {
private TextView textView;
private Timer timer;
private int position = 5;
private Handler handler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
if(msg.what == 101){
textView.setText("倒计时"+position--);
if(position == 0){
timer.cancel();
}
}
}
};
public WelcomeFragmentThree() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_welcome_fragment_three, container, false);
textView= view.findViewById(R.id.tv);
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
handler.sendEmptyMessage(101);
}
},0,1000);
return view;
}
}
- fragment适配器:WelComeAdapter.java
package com.bawei.yuekao.adapter;
import android.widget.ListView;
import java.util.List;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
public class WelComeAdapter extends FragmentPagerAdapter {
private List<Fragment> list;
public WelComeAdapter(FragmentManager fm, List<Fragment> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
}
- SPUtils工具类:SpUtils.java
package com.bawei.yuekao.utils;
import android.content.Context;
import android.content.SharedPreferences;
public class SPUtils {
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
//单例模式:构造私有化+自行实例化+提供公开方法访问
private SPUtils(Context context){
sharedPreferences = context.getSharedPreferences("music",Context.MODE_PRIVATE);
editor = sharedPreferences.edit();
}
private static SPUtils spUtils;
public synchronized static SPUtils getInstance(Context context){
if(spUtils == null){
spUtils = new SPUtils(context);
}
return spUtils;
}
public void putString(String key,String value){
editor.putString(key,value);
editor.commit();
}
public String getString(String key){
return sharedPreferences.getString(key, "");
}
}
2:主页面实现fragment切换
- Song实体类:Song.java
package com.bawei.yuekao.entity;
public class Song {
private String name;//歌名
private String singer;//歌手
private String data;//音乐地址
private String album;//专辑封面
public Song(String name, String singer, String data, String album) {
this.name = name;
this.singer = singer;
this.data = data;
this.album = album;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSinger() {
return singer;
}
public void setSinger(String singer) {
this.singer = singer;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getAlbum() {
return album;
}
public void setAlbum(String album) {
this.album = album;
}
@Override
public String toString() {
return "SongBean{" +
"name='" + name + '\'' +
", singer='" + singer + '\'' +
", data='" + data + '\'' +
", album='" + album + '\'' +
'}';
}
}
- SongList实体类:SongList.java
package com.bawei.yuekao.entity;
import java.util.List;
public class SongList {
/**
* result : {"songs":[{"id":36024806,"name":"再见","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":206053,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":499045,"fee":8,"rUrl":null,"mark":8192,"transNames":["Bubble"]},{"id":1405283464,"name":"句号","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"alia":["City Zoo"],"mark":0},"duration":235632,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10906470,"fee":8,"rUrl":null,"mark":73728},{"id":449818741,"name":"光年之外","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":35093341,"name":"光年之外","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1483027200007,"size":1,"copyrightId":0,"status":0,"picId":18587244069235040,"alia":["电影《太空旅客》中文主题曲"],"mark":0},"duration":235505,"copyrightId":1415926,"status":0,"alias":["电影《太空旅客》中文主题曲"],"rtype":0,"ftype":0,"mvid":5404646,"fee":8,"rUrl":null,"mark":8192},{"id":233931,"name":"泡沫","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23497,"name":"Xposed","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1341417600000,"size":10,"copyrightId":0,"status":1,"picId":109951163069323980,"alia":["曝光"],"mark":0},"duration":258866,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["Bubble"],"mvid":221004,"fee":8,"rUrl":null,"mark":8192},{"id":1391453675,"name":"我说了算","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":81701817,"name":"我说了算","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1568822400000,"size":1,"copyrightId":1416601,"status":1,"picId":109951164371661840,"alia":["品牌联乘合作单曲"],"mark":0},"duration":189623,"copyrightId":1416601,"status":0,"alias":["品牌联乘合作单曲"],"rtype":0,"ftype":0,"mvid":10892003,"fee":1,"rUrl":null,"mark":8192},{"id":1299550532,"name":"倒数","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":72709830,"name":"另一个童话","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1534348800000,"size":3,"copyrightId":27001,"status":0,"picId":109951163523944500,"mark":0},"duration":229333,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":5965351,"fee":8,"rUrl":null,"mark":8192},{"id":36270426,"name":"来自天堂的魔鬼","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":245493,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":503273,"fee":8,"rUrl":null,"mark":8192},{"id":30612793,"name":"多远都要在一起","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":216880,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":384709,"fee":8,"rUrl":null,"mark":8192},{"id":412911436,"name":"画 (Live Piano Session II)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":34678769,"name":"再见","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1463932800007,"size":3,"copyrightId":0,"status":0,"picId":1410673427960641,"mark":0},"duration":168739,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":5323472,"fee":8,"rUrl":null,"mark":8192},{"id":28949444,"name":"喜欢你","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2956076,"name":"喜欢你","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1408032000007,"size":1,"copyrightId":27001,"status":0,"picId":8896148580676276,"mark":0},"duration":239000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":26117675,"name":"我的秘密","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2391062,"name":"My Secret","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1288281600007,"size":10,"copyrightId":0,"status":1,"picId":109951163069327660,"alia":["我的秘密"],"mark":0},"duration":252120,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["My Secret"],"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1833633769,"name":"超能力","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":125360143,"name":"超能力","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1617206400000,"size":1,"copyrightId":2709453,"status":0,"picId":109951165847509260,"mark":0},"duration":203136,"copyrightId":2709453,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":14277457,"fee":8,"rUrl":null,"mark":0},{"id":28793502,"name":"后会无期","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2894210,"name":"后会无期","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1404921600007,"size":1,"copyrightId":0,"status":0,"picId":5974746185758035,"alia":["电影《后会无期》主题曲"],"mark":0},"duration":223000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["OT: The End of the World"],"mvid":289103,"fee":8,"rUrl":null,"mark":8192},{"id":1484967131,"name":"孤独","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":96426263,"name":"孤独","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1602086400000,"size":1,"copyrightId":2707404,"status":0,"picId":109951165369903140,"mark":0},"duration":230830,"copyrightId":2707404,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":14267398,"fee":8,"rUrl":null,"mark":8192},{"id":26550057,"name":"你把我灌醉","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2389401,"name":"The Best of G.E.M. 2008 - 2012 (Deluxe Version)","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1372867200000,"size":26,"copyrightId":1415926,"status":1,"picId":109951163789160770,"mark":0},"duration":285190,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":113068,"fee":8,"rUrl":null,"mark":8192},{"id":1379444316,"name":"差不多姑娘","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":230042,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10880291,"fee":8,"rUrl":null,"mark":8192},{"id":234064,"name":"Where Did U Go","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23509,"name":"G.E.M","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1224000000000,"size":5,"copyrightId":0,"status":1,"picId":109951163069324880,"mark":0},"duration":234000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":26154890,"name":"A.I.N.Y.","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2400479,"name":"18 Plus","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1256572800007,"size":14,"copyrightId":0,"status":1,"picId":109951163069324000,"mark":0},"duration":224000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":243051,"fee":8,"rUrl":null,"mark":8192},{"id":1409382131,"name":"摩天动物园","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":270676,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10906463,"fee":8,"rUrl":null,"mark":8192},{"id":1412264550,"name":"透明","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":217263,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10908372,"fee":8,"rUrl":null,"mark":8192},{"id":234014,"name":"写不完的温柔","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2400479,"name":"18 Plus","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1256572800007,"size":14,"copyrightId":0,"status":1,"picId":109951163069324000,"mark":0},"duration":238880,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":33190007,"name":"新的心跳","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":216000,"copyrightId":1415926,"status":0,"alias":["真人秀《极速前进》主题曲:《极速前进 第二季》真人秀主题曲"],"rtype":0,"ftype":0,"mvid":451005,"fee":8,"rUrl":null,"mark":8192},{"id":1412266089,"name":"好想好想你","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"alia":["City Zoo"],"mark":0},"duration":204140,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":14287609,"fee":8,"rUrl":null,"mark":8192},{"id":234066,"name":"回忆的沙漏 (国)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23509,"name":"G.E.M","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1224000000000,"size":5,"copyrightId":0,"status":1,"picId":109951163069324880,"mark":0},"duration":234000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":234070,"name":"睡公主","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23509,"name":"G.E.M","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1224000000000,"size":5,"copyrightId":0,"status":1,"picId":109951163069324880,"mark":0},"duration":283000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1332424898,"name":"光年之外 (热爱版)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},{"id":1203045,"name":"艾热 AIR","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":74826488,"name":"光年之外 (热爱版)","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1544371200000,"size":1,"copyrightId":1415926,"status":0,"picId":109951163717782660,"mark":0},"duration":217488,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1429363572,"name":"平凡天使","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":86339613,"name":"平凡天使","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1583769600000,"size":1,"copyrightId":1418115,"status":0,"picId":109951164784376720,"mark":0},"duration":213840,"copyrightId":1418115,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["Angels"],"mvid":10919786,"fee":8,"rUrl":null,"mark":8192},{"id":1412263970,"name":"很久以后","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":290264,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10918382,"fee":8,"rUrl":null,"mark":8192},{"id":26113994,"name":"情人 (Live)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2389401,"name":"The Best of G.E.M. 2008 - 2012 (Deluxe Version)","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1372867200000,"size":25,"copyrightId":1415926,"status":1,"picId":109951163789160770,"mark":0},"duration":332106,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1412264741,"name":"依然睡公主","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":160708,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192}],"hasMore":true,"songCount":600}
* code : 200
*/
private ResultBean result;
private int code;
public ResultBean getResult() {
return result;
}
public void setResult(ResultBean result) {
this.result = result;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public static class ResultBean {
/**
* songs : [{"id":36024806,"name":"再见","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":206053,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":499045,"fee":8,"rUrl":null,"mark":8192},{"id":1405283464,"name":"句号","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"alia":["City Zoo"],"mark":0},"duration":235632,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10906470,"fee":8,"rUrl":null,"mark":73728},{"id":449818741,"name":"光年之外","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":35093341,"name":"光年之外","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1483027200007,"size":1,"copyrightId":0,"status":0,"picId":18587244069235040,"alia":["电影《太空旅客》中文主题曲"],"mark":0},"duration":235505,"copyrightId":1415926,"status":0,"alias":["电影《太空旅客》中文主题曲"],"rtype":0,"ftype":0,"mvid":5404646,"fee":8,"rUrl":null,"mark":8192},{"id":233931,"name":"泡沫","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23497,"name":"Xposed","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1341417600000,"size":10,"copyrightId":0,"status":1,"picId":109951163069323980,"alia":["曝光"],"mark":0},"duration":258866,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["Bubble"],"mvid":221004,"fee":8,"rUrl":null,"mark":8192},{"id":1391453675,"name":"我说了算","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":81701817,"name":"我说了算","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1568822400000,"size":1,"copyrightId":1416601,"status":1,"picId":109951164371661840,"alia":["品牌联乘合作单曲"],"mark":0},"duration":189623,"copyrightId":1416601,"status":0,"alias":["品牌联乘合作单曲"],"rtype":0,"ftype":0,"mvid":10892003,"fee":1,"rUrl":null,"mark":8192},{"id":1299550532,"name":"倒数","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":72709830,"name":"另一个童话","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1534348800000,"size":3,"copyrightId":27001,"status":0,"picId":109951163523944500,"mark":0},"duration":229333,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":5965351,"fee":8,"rUrl":null,"mark":8192},{"id":36270426,"name":"来自天堂的魔鬼","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":245493,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":503273,"fee":8,"rUrl":null,"mark":8192},{"id":30612793,"name":"多远都要在一起","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":216880,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":384709,"fee":8,"rUrl":null,"mark":8192},{"id":412911436,"name":"画 (Live Piano Session II)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":34678769,"name":"再见","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1463932800007,"size":3,"copyrightId":0,"status":0,"picId":1410673427960641,"mark":0},"duration":168739,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":5323472,"fee":8,"rUrl":null,"mark":8192},{"id":28949444,"name":"喜欢你","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2956076,"name":"喜欢你","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1408032000007,"size":1,"copyrightId":27001,"status":0,"picId":8896148580676276,"mark":0},"duration":239000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":26117675,"name":"我的秘密","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2391062,"name":"My Secret","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1288281600007,"size":10,"copyrightId":0,"status":1,"picId":109951163069327660,"alia":["我的秘密"],"mark":0},"duration":252120,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["My Secret"],"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1833633769,"name":"超能力","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":125360143,"name":"超能力","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1617206400000,"size":1,"copyrightId":2709453,"status":0,"picId":109951165847509260,"mark":0},"duration":203136,"copyrightId":2709453,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":14277457,"fee":8,"rUrl":null,"mark":0},{"id":28793502,"name":"后会无期","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2894210,"name":"后会无期","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1404921600007,"size":1,"copyrightId":0,"status":0,"picId":5974746185758035,"alia":["电影《后会无期》主题曲"],"mark":0},"duration":223000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["OT: The End of the World"],"mvid":289103,"fee":8,"rUrl":null,"mark":8192},{"id":1484967131,"name":"孤独","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":96426263,"name":"孤独","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1602086400000,"size":1,"copyrightId":2707404,"status":0,"picId":109951165369903140,"mark":0},"duration":230830,"copyrightId":2707404,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":14267398,"fee":8,"rUrl":null,"mark":8192},{"id":26550057,"name":"你把我灌醉","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2389401,"name":"The Best of G.E.M. 2008 - 2012 (Deluxe Version)","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1372867200000,"size":26,"copyrightId":1415926,"status":1,"picId":109951163789160770,"mark":0},"duration":285190,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":113068,"fee":8,"rUrl":null,"mark":8192},{"id":1379444316,"name":"差不多姑娘","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":230042,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10880291,"fee":8,"rUrl":null,"mark":8192},{"id":234064,"name":"Where Did U Go","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23509,"name":"G.E.M","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1224000000000,"size":5,"copyrightId":0,"status":1,"picId":109951163069324880,"mark":0},"duration":234000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":26154890,"name":"A.I.N.Y.","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2400479,"name":"18 Plus","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1256572800007,"size":14,"copyrightId":0,"status":1,"picId":109951163069324000,"mark":0},"duration":224000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":243051,"fee":8,"rUrl":null,"mark":8192},{"id":1409382131,"name":"摩天动物园","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":270676,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10906463,"fee":8,"rUrl":null,"mark":8192},{"id":1412264550,"name":"透明","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":217263,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10908372,"fee":8,"rUrl":null,"mark":8192},{"id":234014,"name":"写不完的温柔","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2400479,"name":"18 Plus","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1256572800007,"size":14,"copyrightId":0,"status":1,"picId":109951163069324000,"mark":0},"duration":238880,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":33190007,"name":"新的心跳","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0},"duration":216000,"copyrightId":1415926,"status":0,"alias":["真人秀《极速前进》主题曲:《极速前进 第二季》真人秀主题曲"],"rtype":0,"ftype":0,"mvid":451005,"fee":8,"rUrl":null,"mark":8192},{"id":1412266089,"name":"好想好想你","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"alia":["City Zoo"],"mark":0},"duration":204140,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":14287609,"fee":8,"rUrl":null,"mark":8192},{"id":234066,"name":"回忆的沙漏 (国)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23509,"name":"G.E.M","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1224000000000,"size":5,"copyrightId":0,"status":1,"picId":109951163069324880,"mark":0},"duration":234000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":234070,"name":"睡公主","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":23509,"name":"G.E.M","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1224000000000,"size":5,"copyrightId":0,"status":1,"picId":109951163069324880,"mark":0},"duration":283000,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1332424898,"name":"光年之外 (热爱版)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},{"id":1203045,"name":"艾热 AIR","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":74826488,"name":"光年之外 (热爱版)","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1544371200000,"size":1,"copyrightId":1415926,"status":0,"picId":109951163717782660,"mark":0},"duration":217488,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1429363572,"name":"平凡天使","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":86339613,"name":"平凡天使","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1583769600000,"size":1,"copyrightId":1418115,"status":0,"picId":109951164784376720,"mark":0},"duration":213840,"copyrightId":1418115,"status":0,"alias":[],"rtype":0,"ftype":0,"transNames":["Angels"],"mvid":10919786,"fee":8,"rUrl":null,"mark":8192},{"id":1412263970,"name":"很久以后","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":290264,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":10918382,"fee":8,"rUrl":null,"mark":8192},{"id":26113994,"name":"情人 (Live)","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":2389401,"name":"The Best of G.E.M. 2008 - 2012 (Deluxe Version)","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1372867200000,"size":25,"copyrightId":1415926,"status":1,"picId":109951163789160770,"mark":0},"duration":332106,"copyrightId":1415926,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192},{"id":1412264741,"name":"依然睡公主","artists":[{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}],"album":{"id":84391762,"name":"摩天动物园","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p2.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1577376000000,"size":13,"copyrightId":1416601,"status":0,"picId":109951164581432420,"mark":0},"duration":160708,"copyrightId":1416601,"status":0,"alias":[],"rtype":0,"ftype":0,"mvid":0,"fee":8,"rUrl":null,"mark":8192}]
* hasMore : true
* songCount : 600
*/
private boolean hasMore;
private int songCount;
private List<SongsBean> songs;
public boolean isHasMore() {
return hasMore;
}
public void setHasMore(boolean hasMore) {
this.hasMore = hasMore;
}
public int getSongCount() {
return songCount;
}
public void setSongCount(int songCount) {
this.songCount = songCount;
}
public List<SongsBean> getSongs() {
return songs;
}
public void setSongs(List<SongsBean> songs) {
this.songs = songs;
}
public static class SongsBean {
/**
* id : 36024806
* name : 再见
* artists : [{"id":7763,"name":"G.E.M.邓紫棋","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}]
* album : {"id":3189002,"name":"新的心跳","artist":{"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null},"publishTime":1446739200007,"size":10,"copyrightId":27001,"status":0,"picId":1364493930777368,"alia":["Heartbeat"],"mark":0}
* duration : 206053
* copyrightId : 1415926
* status : 0
* alias : []
* rtype : 0
* ftype : 0
* mvid : 499045
* fee : 8
* rUrl : null
* mark : 8192
* transNames : ["Bubble"]
*/
private int id;
private String name;
private AlbumBean album;
private int duration;
private int copyrightId;
private int status;
private int rtype;
private int ftype;
private int mvid;
private int fee;
private Object rUrl;
private int mark;
private List<ArtistsBean> artists;
private List<?> alias;
private List<String> transNames;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public AlbumBean getAlbum() {
return album;
}
public void setAlbum(AlbumBean album) {
this.album = album;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
public int getCopyrightId() {
return copyrightId;
}
public void setCopyrightId(int copyrightId) {
this.copyrightId = copyrightId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public int getRtype() {
return rtype;
}
public void setRtype(int rtype) {
this.rtype = rtype;
}
public int getFtype() {
return ftype;
}
public void setFtype(int ftype) {
this.ftype = ftype;
}
public int getMvid() {
return mvid;
}
public void setMvid(int mvid) {
this.mvid = mvid;
}
public int getFee() {
return fee;
}
public void setFee(int fee) {
this.fee = fee;
}
public Object getRUrl() {
return rUrl;
}
public void setRUrl(Object rUrl) {
this.rUrl = rUrl;
}
public int getMark() {
return mark;
}
public void setMark(int mark) {
this.mark = mark;
}
public List<ArtistsBean> getArtists() {
return artists;
}
public void setArtists(List<ArtistsBean> artists) {
this.artists = artists;
}
public List<?> getAlias() {
return alias;
}
public void setAlias(List<?> alias) {
this.alias = alias;
}
public List<String> getTransNames() {
return transNames;
}
public void setTransNames(List<String> transNames) {
this.transNames = transNames;
}
public static class AlbumBean {
/**
* id : 3189002
* name : 新的心跳
* artist : {"id":0,"name":"","picUrl":null,"alias":[],"albumSize":0,"picId":0,"img1v1Url":"https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg","img1v1":0,"trans":null}
* publishTime : 1446739200007
* size : 10
* copyrightId : 27001
* status : 0
* picId : 1364493930777368
* alia : ["Heartbeat"]
* mark : 0
*/
private int id;
private String name;
private ArtistBean artist;
private long publishTime;
private int size;
private int copyrightId;
private int status;
private long picId;
private int mark;
private List<String> alia;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public ArtistBean getArtist() {
return artist;
}
public void setArtist(ArtistBean artist) {
this.artist = artist;
}
public long getPublishTime() {
return publishTime;
}
public void setPublishTime(long publishTime) {
this.publishTime = publishTime;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public int getCopyrightId() {
return copyrightId;
}
public void setCopyrightId(int copyrightId) {
this.copyrightId = copyrightId;
}
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public long getPicId() {
return picId;
}
public void setPicId(long picId) {
this.picId = picId;
}
public int getMark() {
return mark;
}
public void setMark(int mark) {
this.mark = mark;
}
public List<String> getAlia() {
return alia;
}
public void setAlia(List<String> alia) {
this.alia = alia;
}
public static class ArtistBean {
/**
* id : 0
* name :
* picUrl : null
* alias : []
* albumSize : 0
* picId : 0
* img1v1Url : https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg
* img1v1 : 0
* trans : null
*/
private int id;
private String name;
private Object picUrl;
private int albumSize;
private int picId;
private String img1v1Url;
private int img1v1;
private Object trans;
private List<?> alias;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getPicUrl() {
return picUrl;
}
public void setPicUrl(Object picUrl) {
this.picUrl = picUrl;
}
public int getAlbumSize() {
return albumSize;
}
public void setAlbumSize(int albumSize) {
this.albumSize = albumSize;
}
public int getPicId() {
return picId;
}
public void setPicId(int picId) {
this.picId = picId;
}
public String getImg1v1Url() {
return img1v1Url;
}
public void setImg1v1Url(String img1v1Url) {
this.img1v1Url = img1v1Url;
}
public int getImg1v1() {
return img1v1;
}
public void setImg1v1(int img1v1) {
this.img1v1 = img1v1;
}
public Object getTrans() {
return trans;
}
public void setTrans(Object trans) {
this.trans = trans;
}
public List<?> getAlias() {
return alias;
}
public void setAlias(List<?> alias) {
this.alias = alias;
}
}
}
public static class ArtistsBean {
/**
* id : 7763
* name : G.E.M.邓紫棋
* picUrl : null
* alias : []
* albumSize : 0
* picId : 0
* img1v1Url : https://p1.music.126.net/6y-UleORITEDbvrOLV0Q8A==/5639395138885805.jpg
* img1v1 : 0
* trans : null
*/
private int id;
private String name;
private Object picUrl;
private int albumSize;
private int picId;
private String img1v1Url;
private int img1v1;
private Object trans;
private List<?> alias;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getPicUrl() {
return picUrl;
}
public void setPicUrl(Object picUrl) {
this.picUrl = picUrl;
}
public int getAlbumSize() {
return albumSize;
}
public void setAlbumSize(int albumSize) {
this.albumSize = albumSize;
}
public int getPicId() {
return picId;
}
public void setPicId(int picId) {
this.picId = picId;
}
public String getImg1v1Url() {
return img1v1Url;
}
public void setImg1v1Url(String img1v1Url) {
this.img1v1Url = img1v1Url;
}
public int getImg1v1() {
return img1v1;
}
public void setImg1v1(int img1v1) {
this.img1v1 = img1v1;
}
public Object getTrans() {
return trans;
}
public void setTrans(Object trans) {
this.trans = trans;
}
public List<?> getAlias() {
return alias;
}
public void setAlias(List<?> alias) {
this.alias = alias;
}
}
}
}
}
- NetSong实体类:NetSong.java
package com.bawei.yuekao.entity;
import java.util.List;
public class NetSong {
/**
* data : [{"id":36024806,"url":"http://m8.music.126.net/20210927164229/108c22785dee257cb1d2d9275669d017/ymusic/badc/d410/adf0/93653db64d1f712b4b9167bc78c41ea2.mp3","br":128000,"size":3297741,"md5":"93653db64d1f712b4b9167bc78c41ea2","code":200,"expi":1200,"type":"mp3","gain":0,"fee":8,"uf":null,"payed":0,"flag":4,"canExtend":false,"freeTrialInfo":null,"level":"standard","encodeType":"mp3","freeTrialPrivilege":{"resConsumable":false,"userConsumable":false},"freeTimeTrialPrivilege":{"resConsumable":false,"userConsumable":false,"type":0,"remainTime":0},"urlSource":0}]
* code : 200
*/
private int code;
private List<DataBean> data;
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public List<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* id : 36024806
* url : http://m8.music.126.net/20210927164229/108c22785dee257cb1d2d9275669d017/ymusic/badc/d410/adf0/93653db64d1f712b4b9167bc78c41ea2.mp3
* br : 128000
* size : 3297741
* md5 : 93653db64d1f712b4b9167bc78c41ea2
* code : 200
* expi : 1200
* type : mp3
* gain : 0
* fee : 8
* uf : null
* payed : 0
* flag : 4
* canExtend : false
* freeTrialInfo : null
* level : standard
* encodeType : mp3
* freeTrialPrivilege : {"resConsumable":false,"userConsumable":false}
* freeTimeTrialPrivilege : {"resConsumable":false,"userConsumable":false,"type":0,"remainTime":0}
* urlSource : 0
*/
private int id;
private String url;
private int br;
private int size;
private String md5;
private int code;
private int expi;
private String type;
private int gain;
private int fee;
private Object uf;
private int payed;
private int flag;
private boolean canExtend;
private Object freeTrialInfo;
private String level;
private String encodeType;
private FreeTrialPrivilegeBean freeTrialPrivilege;
private FreeTimeTrialPrivilegeBean freeTimeTrialPrivilege;
private int urlSource;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getBr() {
return br;
}
public void setBr(int br) {
this.br = br;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
public String getMd5() {
return md5;
}
public void setMd5(String md5) {
this.md5 = md5;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public int getExpi() {
return expi;
}
public void setExpi(int expi) {
this.expi = expi;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public int getGain() {
return gain;
}
public void setGain(int gain) {
this.gain = gain;
}
public int getFee() {
return fee;
}
public void setFee(int fee) {
this.fee = fee;
}
public Object getUf() {
return uf;
}
public void setUf(Object uf) {
this.uf = uf;
}
public int getPayed() {
return payed;
}
public void setPayed(int payed) {
this.payed = payed;
}
public int getFlag() {
return flag;
}
public void setFlag(int flag) {
this.flag = flag;
}
public boolean isCanExtend() {
return canExtend;
}
public void setCanExtend(boolean canExtend) {
this.canExtend = canExtend;
}
public Object getFreeTrialInfo() {
return freeTrialInfo;
}
public void setFreeTrialInfo(Object freeTrialInfo) {
this.freeTrialInfo = freeTrialInfo;
}
public String getLevel() {
return level;
}
public void setLevel(String level) {
this.level = level;
}
public String getEncodeType() {
return encodeType;
}
public void setEncodeType(String encodeType) {
this.encodeType = encodeType;
}
public FreeTrialPrivilegeBean getFreeTrialPrivilege() {
return freeTrialPrivilege;
}
public void setFreeTrialPrivilege(FreeTrialPrivilegeBean freeTrialPrivilege) {
this.freeTrialPrivilege = freeTrialPrivilege;
}
public FreeTimeTrialPrivilegeBean getFreeTimeTrialPrivilege() {
return freeTimeTrialPrivilege;
}
public void setFreeTimeTrialPrivilege(FreeTimeTrialPrivilegeBean freeTimeTrialPrivilege) {
this.freeTimeTrialPrivilege = freeTimeTrialPrivilege;
}
public int getUrlSource() {
return urlSource;
}
public void setUrlSource(int urlSource) {
this.urlSource = urlSource;
}
public static class FreeTrialPrivilegeBean {
/**
* resConsumable : false
* userConsumable : false
*/
private boolean resConsumable;
private boolean userConsumable;
public boolean isResConsumable() {
return resConsumable;
}
public void setResConsumable(boolean resConsumable) {
this.resConsumable = resConsumable;
}
public boolean isUserConsumable() {
return userConsumable;
}
public void setUserConsumable(boolean userConsumable) {
this.userConsumable = userConsumable;
}
}
public static class FreeTimeTrialPrivilegeBean {
/**
* resConsumable : false
* userConsumable : false
* type : 0
* remainTime : 0
*/
private boolean resConsumable;
private boolean userConsumable;
private int type;
private int remainTime;
public boolean isResConsumable() {
return resConsumable;
}
public void setResConsumable(boolean resConsumable) {
this.resConsumable = resConsumable;
}
public boolean isUserConsumable() {
return userConsumable;
}
public void setUserConsumable(boolean userConsumable) {
this.userConsumable = userConsumable;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public int getRemainTime() {
return remainTime;
}
public void setRemainTime(int remainTime) {
this.remainTime = remainTime;
}
}
}
}
- 主页面实现fragment切换MainActivity.java
package com.bawei.yuekao;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Bundle;
import android.widget.Toast;
import com.bawei.yuekao.adapter.MainFragmentAdapter;
import com.bawei.yuekao.fragment.LocalMusicFragment;
import com.bawei.yuekao.fragment.LoveMusicFragment;
import com.bawei.yuekao.fragment.NetMusicFragment;
import com.bawei.yuekao.fragment.TuKuFragment;
import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
/**
* 引导页
*/
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
private List<Fragment> list;
private List<String> title;
private MainFragmentAdapter mainFragmentAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{
"android.permission.INTERNET",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.READ_CONTACTS",
"android.permission.READ_SMS",
"android.permission.CALL_PHONE",
"android.permission.READ_CALL_LOG",
"android.permission.WRITE_CALL_LOG",
"android.permission.ACCESS_NETWORK_STATE",
"android.permission.READ_PHONE_STATE"
}, 101);
}
}
//权限授予成功后加载布局
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(requestCode == 101 && grantResults != null){
if(grantResults[0] == PackageManager.PERMISSION_GRANTED ){//授予成功
tabLayout = findViewById(R.id.tab);
viewPager = findViewById(R.id.view_pager);
list = new ArrayList<>();
list.add(new LocalMusicFragment());
list.add(new NetMusicFragment());
list.add(new LoveMusicFragment());
list.add(new TuKuFragment());
title = new ArrayList<>();
title.add("本地");
title.add("网络");
title.add("收藏");
title.add("图库");
mainFragmentAdapter = new MainFragmentAdapter(getSupportFragmentManager(), list, title);
viewPager.setAdapter(mainFragmentAdapter);
tabLayout.setupWithViewPager(viewPager);
}else{
Toast.makeText(this, "授予失败", Toast.LENGTH_SHORT).show();
}
}
}
}
- 本地音乐fragment:LocalMusicFragment.java
package com.bawei.yuekao.fragment;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.bawei.yuekao.R;
import com.bawei.yuekao.adapter.SongAdapter;
import com.bawei.yuekao.entity.Song;
import com.bawei.yuekao.service.MusicService;
import com.bawei.yuekao.sql.MusicHelper;
import com.bawei.yuekao.utils.SongsUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
/**
* A simple {@link Fragment} subclass.
*/
public class LocalMusicFragment extends Fragment {
private TextView tv_curernt,tv_duration,tv_name;
private TextView pop_tv_curernt,pop_tv_duration,pop_tv_name;
private ImageView imageView,iv_pre,iv_play,iv_next,iv_mode;
private ImageView pop_imageView,pop_iv_pre,pop_iv_play,pop_iv_next,pop_iv_mode,pop_iv_love,pop_fanhui;
private SeekBar seekBar,pop_seekbar;
private LinearLayout linearLayout;
private MusicRecevicer musicRecevicer;
private ListView listView;
private SongAdapter songAdapter;
private List<Song> list;
private View view;
private MusicService.MusicBinder musicBinder;
private Timer timer;
private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
musicBinder = (MusicService.MusicBinder) service;
//!!!!!!绑定成功后设置集合
musicBinder.setList(list);
//!!!!!绑定成功后开启定时器
intiTimer();
//!!!!!!!! 绑定成功后
initRecevicer();
//!!! 设置点击
initLitener();
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
public LocalMusicFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_local_music, container, false);
initView();
initbind();
return view;
}
//注册广播
private void initRecevicer() {
musicRecevicer = new MusicRecevicer();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.music.pre");
intentFilter.addAction("com.music.start");
intentFilter.addAction("com.music.pause");
intentFilter.addAction("com.music.next");
intentFilter.addAction("com.music.ui");
intentFilter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED);//来电监听
intentFilter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);//网络状态监听
getActivity().registerReceiver(musicRecevicer,intentFilter);
}
//定时器
private void intiTimer() {
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
final int current = musicBinder.getCurrent();
final int duration = musicBinder.getDuration();
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
seekBar.setMax(duration);
seekBar.setProgress(current);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("mm:ss");
tv_duration.setText(simpleDateFormat.format(duration));
tv_curernt.setText(simpleDateFormat.format(current));
if(pop_imageView != null){
pop_seekbar.setMax(duration);
pop_seekbar.setProgress(current);
pop_tv_duration.setText(simpleDateFormat.format(duration));
pop_tv_curernt.setText(simpleDateFormat.format(current));
}
}
});
}
},0,100);
}
@Override
public void onDestroyView() {
super.onDestroyView();
if(timer != null){
timer.cancel();
}
if(musicRecevicer != null){
getActivity().unregisterReceiver(musicRecevicer);
}
}
//设置监听
private void initLitener() {
iv_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
musicBinder.pauseOrstart();
}
});
iv_pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
musicBinder.pre();
}
});
iv_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
musicBinder.next();
}
});
iv_mode.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//切换模式 自己完成
}
});
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
musicBinder.play(position);
}
});
//拖拽
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(fromUser){
musicBinder.seekTo(progress);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
//弹窗
linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final PopupWindow popupWindow = new PopupWindow(getActivity());
popupWindow.setHeight(RelativeLayout.LayoutParams.MATCH_PARENT);
popupWindow.setWidth(RelativeLayout.LayoutParams.MATCH_PARENT);
View view = LayoutInflater.from(getActivity()).inflate(R.layout.popup_window, null);
pop_imageView = view.findViewById(R.id.pop_iv);
Glide.with(getActivity())
.load(musicBinder.getAlbum())
.transform(new CircleCrop())
.into(pop_imageView);
pop_iv_play = view.findViewById(R.id.pop_iv_pause);
pop_iv_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
musicBinder.pauseOrstart();
}
});
pop_iv_pre = view.findViewById(R.id.pop_iv_pre);
pop_iv_pre.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
musicBinder.pre();
}
});
pop_iv_next = view.findViewById(R.id.pop_iv_next);
pop_iv_next.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
musicBinder.next();
}
});
pop_seekbar = view.findViewById(R.id.pop_sb);
pop_tv_curernt = view.findViewById(R.id.pop_tv_current);
pop_tv_duration = view.findViewById(R.id.pop_tv_duration);
pop_tv_name = view.findViewById(R.id.pop_tv_name);
pop_tv_name.setText(musicBinder.getName()+"");
pop_iv_love = view.findViewById(R.id.pop_love);
pop_iv_love.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//收藏存储数据
MusicHelper musicHelper = new MusicHelper(getActivity());
SQLiteDatabase database = musicHelper.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("name",musicBinder.getName());
contentValues.put("singer",musicBinder.getsinger());
contentValues.put("data",musicBinder.getData());
contentValues.put("album",musicBinder.getAlbum());
database.insert("music",null,contentValues);
Toast.makeText(getActivity(), "收藏成功", Toast.LENGTH_SHORT).show();
}
});
pop_fanhui = view.findViewById(R.id.pop_fanhui);
pop_fanhui.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
popupWindow.dismiss();
}
});
popupWindow.setContentView(view);
popupWindow.showAtLocation(v, Gravity.BOTTOM,0,0);
}
});
}
//绑定服务
private void initbind() {
Intent intent = new Intent(getActivity(), MusicService.class);
getActivity().bindService(intent,serviceConnection,Context.BIND_AUTO_CREATE);
}
//find控件
private void initView() {
linearLayout = view.findViewById(R.id.ll);
seekBar = view.findViewById(R.id.bar);
tv_curernt = view.findViewById(R.id.tv_current);
tv_duration = view.findViewById(R.id.tv_duration);
tv_name = view.findViewById(R.id.tv_name);
iv_mode = view.findViewById(R.id.iv_mode);
iv_pre = view.findViewById(R.id.iv_pre);
iv_next = view.findViewById(R.id.iv_next);
iv_play = view.findViewById(R.id.iv_play);
imageView = view.findViewById(R.id.iv);
listView = view.findViewById(R.id.lv);
list = SongsUtils.getSongs(getContext());
songAdapter = new SongAdapter(list, getContext());
listView.setAdapter(songAdapter);
}
class MusicRecevicer extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if("com.music.pre".equals(intent.getAction())){
musicBinder.pre();
}else if("com.music.start".equals(intent.getAction())){
musicBinder.start();
}else if("com.music.pause".equals(intent.getAction())){
musicBinder.pause();
}else if("com.music.next".equals(intent.getAction())){
musicBinder.next();
}else if("com.music.ui".equals(intent.getAction())){
//更新图片和文字
Glide.with(getActivity())
.load(musicBinder.getAlbum())
.transform(new CircleCrop())
.into(imageView);
tv_name.setText(musicBinder.getName());
if(pop_imageView != null){
Glide.with(getActivity())
.load(musicBinder.getAlbum())
.transform(new CircleCrop())
.into(pop_imageView);
pop_tv_name.setText(musicBinder.getName());
}
}else if(TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(intent.getAction())){//来电
TelephonyManager telephonyManager = (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE);
telephonyManager.listen(new PhoneStateListener(){
@Override
public void onCallStateChanged(int state, String phoneNumber) {
super.onCallStateChanged(state, phoneNumber);
switch (state){
case TelephonyManager.CALL_STATE_RINGING://来电话
musicBinder.pause();
break;
case TelephonyManager.CALL_STATE_IDLE://挂断
musicBinder.start();
break;
case TelephonyManager.CALL_STATE_OFFHOOK://童话
musicBinder.pause();
break;
}
}
},PhoneStateListener.LISTEN_CALL_STATE);
}else if(ConnectivityManager.CONNECTIVITY_ACTION.equals(intent.getAction())){//网络
ConnectivityManager connectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if(activeNetworkInfo != null && activeNetworkInfo.isConnected()){//有网
musicBinder.start();
}else{//无网
musicBinder.pause();
}
}
}
}
}
- 网络音乐fragment:NetMusicFragment.java
package com.bawei.yuekao.fragment;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;
import com.bawei.yuekao.R;
import com.bawei.yuekao.adapter.SongAdapter;
import com.bawei.yuekao.entity.NetSong;
import com.bawei.yuekao.entity.Song;
import com.bawei.yuekao.entity.SongList;
import com.bawei.yuekao.service.DownloadService;
import com.google.gson.Gson;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
/**
*/
public class NetMusicFragment extends Fragment {
// 根据歌手搜索歌曲名称
// https://autumnfish.cn/search?keywords=邓紫棋
//
// 根据歌曲id获得歌曲地址
// https://autumnfish.cn/song/url?id=36024806
private String url_list = "https://autumnfish.cn/search?keywords=法老";
private String url_song = "https://autumnfish.cn/song/url?id=";
private ListView listView;
private List<Song> list = new ArrayList<>();
private SongAdapter songAdapter;
private DownloadRecevier downloadRecevier;
public NetMusicFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_net_music, container, false);
listView = view.findViewById(R.id.lv);
new MyTask().execute();
//点击下载服务
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
initService(position);
}
});
initRecevicer();
return view;
}
//注册广播
private void initRecevicer() {
downloadRecevier = new DownloadRecevier();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.music.download");
getActivity().registerReceiver(downloadRecevier,intentFilter);
}
//解除注册
@Override
public void onDestroyView() {
super.onDestroyView();
getActivity().unregisterReceiver(downloadRecevier);
}
//启动服务
private void initService(int position) {
Intent intent = new Intent(getActivity(), DownloadService.class);
Bundle bundle = new Bundle();
bundle.putString("url",list.get(position).getData());
bundle.putString("name",list.get(position).getName());
intent.putExtras(bundle);
getActivity().startService(intent);//不需要手动停止
}
class DownloadRecevier extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if("com.music.download".equals(intent.getAction())){
Toast.makeText(context, "下载完成", Toast.LENGTH_SHORT).show();
}
}
}
class MyTask extends AsyncTask<String,String,String>{
@Override
protected String doInBackground(String... strings) {
StringBuffer stringBuffer = new StringBuffer();
try {
{
URL url = new URL(url_list);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
byte[] bytes = new byte[1024];
int len = 0;
while ((len = inputStream.read(bytes)) != -1) {
stringBuffer.append(new String(bytes, 0, len));
}
}
SongList songList = new Gson().fromJson(stringBuffer.toString(), SongList.class);
List<SongList.ResultBean.SongsBean> songs = songList.getResult().getSongs();
for (SongList.ResultBean.SongsBean song : songs) {
String name = song.getName();
String album = song.getArtists().get(0).getImg1v1Url();
int id = song.getId();
{
URL url = new URL(url_song+id);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.connect();
StringBuffer stringBuffer2 = new StringBuffer();
InputStream inputStream = httpURLConnection.getInputStream();
byte[] bytes = new byte[1024];
int len = 0;
while ((len = inputStream.read(bytes)) != -1) {
stringBuffer2.append(new String(bytes, 0, len));
}
NetSong netSong = new Gson().fromJson(stringBuffer2.toString(), NetSong.class);
String url1 = netSong.getData().get(0).getUrl();
list.add(new Song(name,"邓紫棋",url1,album));
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
songAdapter = new SongAdapter(list,getActivity());
listView.setAdapter(songAdapter);
}
}
}
- 收藏音乐fragment:LoveMusicFragment.java
package com.bawei.yuekao.fragment;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import com.bawei.yuekao.R;
import com.bawei.yuekao.adapter.SongAdapter;
import com.bawei.yuekao.entity.Song;
import com.bawei.yuekao.sql.MusicHelper;
import java.util.ArrayList;
import java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public class LoveMusicFragment extends Fragment {
private ListView listView;
private List<Song> list = new ArrayList<>();
private SongAdapter songAdapter;
private MusicHelper musicHelper ;//!!!!!千万不要着么写 空指针
private SQLiteDatabase sqLiteDatabase;
public LoveMusicFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_love_music, container, false);
listView = view.findViewById(R.id.lv);
musicHelper = new MusicHelper(getContext());
sqLiteDatabase = musicHelper.getWritableDatabase();
Cursor cursor = sqLiteDatabase.query("music", null, null, null, null, null, null);
if(cursor != null){
while (cursor.moveToNext()) {
String name = cursor.getString(cursor.getColumnIndex("name"));
String singer = cursor.getString(cursor.getColumnIndex("singer"));
String data = cursor.getString(cursor.getColumnIndex("data"));
String album = cursor.getString(cursor.getColumnIndex("album"));
list.add(new Song(name,singer,data,album));
}
}
songAdapter = new SongAdapter(list,getContext());
listView.setAdapter(songAdapter);
return view;
}
}
- 音乐服务:MusicService.java
package com.bawei.yuekao.service;
import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.widget.RemoteViews;
import com.bawei.yuekao.R;
import com.bawei.yuekao.entity.Song;
import java.io.IOException;
import java.util.List;
import androidx.annotation.Nullable;
public class MusicService extends Service {
@Nullable
@Override
public IBinder onBind(Intent intent) {
return new MusicBinder();
}
public class MusicBinder extends Binder {
public static final int MODE_ORDER = 0;//顺序
public static final int MODE_RANDOM = 1;//随机
public static final int MODE_DANQU = 2;//单曲
private MediaPlayer mediaPlayer = new MediaPlayer();
private List<Song> list;
private int position;
private int mode = MODE_ORDER;//播放模式
//切歌
public void play(int position){
this.position = position;//更换下标
if(mediaPlayer != null){
mediaPlayer.reset();//!!!!!!!!重置资源
try {
mediaPlayer.setDataSource(list.get(position).getData());
mediaPlayer.prepareAsync();
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {//!!!!!一定要准备完成
@Override
public void onPrepared(MediaPlayer mp) {
mediaPlayer.start();
}
});
} catch (IOException e) {
e.printStackTrace();
}
//!!!!发送通知 更新通知文字和图片
showNotification();
//更新播放栏+弹出窗体 发送广播
Intent intent = new Intent();
intent.setAction("com.music.ui");
sendBroadcast(intent);
}
}
public void setList(List<Song> list){
this.list = list;
}
//播放
public void start(){
if(mediaPlayer != null){
mediaPlayer.start();
}
}
//暂停
public void pause(){
if(mediaPlayer != null){
mediaPlayer.pause();
}
}
//播放和暂停
public void pauseOrstart(){
if(mediaPlayer != null){
if(mediaPlayer.isPlaying()){
mediaPlayer.pause();
}else{
mediaPlayer.start();
}
}
}
//返回音乐总时长
public int getDuration(){
if(mediaPlayer != null){
return mediaPlayer.getDuration();
}
return 0;
}
//返回音乐当前进度
public int getCurrent(){
if(mediaPlayer != null){
return mediaPlayer.getCurrentPosition();
}
return 0;
}
//拖拽进度条
public void seekTo(int time){
if(mediaPlayer != null){
mediaPlayer.seekTo(time);
}
}
//下一首
public void next(){
if(mode == MODE_ORDER){//顺序
if(position == list.size()-1){
position = 0;
}else{
position++;
}
}else if(mode == MODE_RANDOM){//随机
position = (int) (Math.random()*list.size());
}
play(position);
}
//上一首
public void pre(){
if(mode == MODE_ORDER){//顺序
if(position == 0){
position = list.size()-1;
}else{
position--;
}
}else if(mode == MODE_RANDOM){//随机
position = (int) (Math.random()*list.size());
}
play(position);
}
//返回当前歌曲名称
public String getName(){
if(mediaPlayer != null){
return list.get(position).getName();
}
return "";
}
//返回当前歌曲图片
public String getAlbum(){
if(mediaPlayer != null){
return list.get(position).getAlbum();
}
return "";
}
//返回当前歌手
public String getsinger(){
if(mediaPlayer != null){
return list.get(position).getSinger();
}
return "";
}
//返回当前歌曲低至
public String getData(){
if(mediaPlayer != null){
return list.get(position).getData();
}
return "";
}
//切换播放模式
public void changemode(int mode){
this.mode = mode;
}
//显示通知
public void showNotification(){
Notification.Builder builder = new Notification.Builder(getApplicationContext());
builder.setSmallIcon(R.mipmap.ic_launcher_round);
//自定义布局
RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.no);
Bitmap bitmap = BitmapFactory.decodeFile(getAlbum());
remoteViews.setImageViewBitmap(R.id.no_iv,bitmap);
remoteViews.setTextViewText(R.id.no_tv_name,getName());
//监听+广播
{
Intent intent = new Intent();
intent.setAction("com.music.pre");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.no_iv_pre, pendingIntent);
}
{
Intent intent = new Intent();
intent.setAction("com.music.start");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.no_iv_start, pendingIntent);
}
{
Intent intent = new Intent();
intent.setAction("com.music.pause");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.no_iv_pause, pendingIntent);
}
{
Intent intent = new Intent();
intent.setAction("com.music.next");
PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 101, intent, PendingIntent.FLAG_UPDATE_CURRENT);
remoteViews.setOnClickPendingIntent(R.id.no_iv_next, pendingIntent);
}
builder.setCustomContentView(remoteViews);
Notification notification = builder.build();
startForeground(1,notification);
}
}
}
- 下载服务:DownloadService.java
package com.bawei.yuekao.service;
import android.app.IntentService;
import android.content.Intent;
import android.os.Bundle;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import androidx.annotation.Nullable;
public class DownloadService extends IntentService {
public DownloadService() {
super("DownloadService");
}
@Override
protected void onHandleIntent(@Nullable Intent intent) {
//获得值
Bundle bundle = intent.getExtras();
String url1 = bundle.getString("url");
String name = bundle.getString("name");
try {
URL url = new URL(url1);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
httpURLConnection.connect();
InputStream inputStream = httpURLConnection.getInputStream();
byte[] bytes = new byte[1024];
int len = 0;
FileOutputStream fileOutputStream = new FileOutputStream("/sdcard/Music/" + name + ".mp3");
while ((len = inputStream.read(bytes)) != -1) {
fileOutputStream.write(bytes,0,len);
}
} catch (IOException e) {
e.printStackTrace();
}
//下载完成发送广播
Intent intent1 = new Intent();
intent1.setAction("com.music.download");
sendBroadcast(intent1);
}
}
- 收藏:数据库表创建:MusicHelper.java
package com.bawei.yuekao.sql;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class MusicHelper extends SQLiteOpenHelper {
public MusicHelper(@Nullable Context context) {
super(context, "music.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table music(id integer primary key autoincrement,name varcha(30),singer varchar(30),data varchar(100),album varchar(100))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
- SongUtils:
package com.bawei.yuekao.utils;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import com.bawei.yuekao.entity.Song;
import java.util.ArrayList;
import java.util.List;
public class SongsUtils {
//返回本地歌曲全部名称
public static List<Song> getSongs(Context context){
ArrayList<Song> songBeans = new ArrayList<>();
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);
if(cursor != null ){
while (cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
String album_id = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID));
//根据专辑id获得专辑封面
Cursor query = contentResolver.query(Uri.parse("content://media/external/audio/albums/" + album_id), null, null, null, null);
if(query != null){
while (query.moveToNext()){
String album = query.getString(query.getColumnIndex("album_art"));
songBeans.add(new Song(name,singer,data,album));
}
query.close();//关闭游标
}
}
cursor.close();//关闭游标
}
return songBeans;
}
}