音乐播放器

一.需求:

在这里插入图片描述

二. 权限:

  <?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;
    }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值