Android 如何获取系统音乐进行播放

首先使用ContentResolver拿到系统音乐的信息:

 ContentResolver contentResolver = getActivity().getContentResolver();
        Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);

        while (cursor.moveToNext()){
            //拿到系统音乐的歌名,歌手名,路径
            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.TITLE));
            String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));
            String path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
            MyMusicData myMusicData=new MyMusicData(title,singer,path);
            myMusicDatas.add(myMusicData);
        }

使用MediaPlayer来进行播放音乐:

mediaPlayer.reset();//mediaPlayer重置
        try {
            //使用MediaPlayer进行播放音乐 参数1:上下文 参数2:音乐路径
            mediaPlayer.setDataSource(getActivity(), Uri.parse(myMusicDatas.get(id).getPath()));
            mediaPlayer.prepare();//预准备
            mediaPlayer.start();//开始播放
        } catch (IOException e) {
            e.printStackTrace();
        }

全部代码展示:

package com.example.week3.fragment;


import android.content.ContentResolver;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;

import com.example.week3.R;
import com.example.week3.mybean.MyMusicData;
import com.example.week3.recyclerview.myrecyclerview_yy;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * A simple {@link Fragment} subclass.
 */
public class sanFragment extends Fragment implements View.OnClickListener {

    private List<MyMusicData> myMusicDatas = new ArrayList<>();
    private Button yinyue_id;
    private RecyclerView recyclerview_id;
    private Button start_yy;
    private Button last_yy;
    private Button pause_yy;
    private Button next_yy;
    private MediaPlayer mediaPlayer;
    private int id =0;

    public sanFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_san, container, false);
        initView(view);
        mediaPlayer=new MediaPlayer();

        return view;
    }

    private void initView(View view) {
        yinyue_id = (Button) view.findViewById(R.id.yinyue_id);
        recyclerview_id = (RecyclerView) view.findViewById(R.id.recyclerview_id);
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity());
        recyclerview_id.setLayoutManager(linearLayoutManager);

        start_yy = (Button) view.findViewById(R.id.start_yy);
        last_yy = (Button) view.findViewById(R.id.last_yy);
        pause_yy = (Button) view.findViewById(R.id.pause_yy);
        next_yy = (Button) view.findViewById(R.id.next_yy);

        yinyue_id.setOnClickListener(this);
        start_yy.setOnClickListener(this);
        last_yy.setOnClickListener(this);
        pause_yy.setOnClickListener(this);
        next_yy.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            
            case R.id.yinyue_id://获取到音乐信息,进行适配
                ds();
                try {
                    Thread.sleep(2000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                myrecyclerview_yy myrecyclerview_yy=new myrecyclerview_yy(getActivity(),myMusicDatas);
                recyclerview_id.setAdapter(myrecyclerview_yy);
                break;
                
            case R.id.start_yy://开始播放
                    playing();
                    break;
                    
            case R.id.last_yy://上一首
                if(id==0){
                    id=myMusicDatas.size()-1;
                }else{
                    id--;
                }
                playing();
                break;
                
            case R.id.pause_yy://暂停
                if (mediaPlayer != null && mediaPlayer.isPlaying()){
                    mediaPlayer.pause();
                }else {
                    mediaPlayer.start();
                }
                break;
                
            case R.id.next_yy://下一首
                if(id==myMusicDatas.size()-1){
                    id=0;
                }else{
                    id++;
                }
                playing();
                break;
        }
    }


    public  void playing(){

        mediaPlayer.reset();//mediaPlayer重置
        try {
            //使用MediaPlayer进行播放音乐 参数1:上下文 参数2:音乐路径
            mediaPlayer.setDataSource(getActivity(), Uri.parse(myMusicDatas.get(id).getPath()));
            mediaPlayer.prepare();//预准备
            mediaPlayer.start();//开始播放
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void ds() {

        ContentResolver contentResolver = getActivity().getContentResolver();
        Cursor cursor = contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, null);

        while (cursor.moveToNext()){
            //拿到系统音乐的歌名,歌手名,路径
            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.TITLE));
            String singer = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME));
            String path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA));
            MyMusicData myMusicData=new MyMusicData(title,singer,path);
            myMusicDatas.add(myMusicData);
        }
    }
}

(这个只是我放在Fragment的一个分支)

适配器:

myrecyclerview_yy类:
package com.example.week3.recyclerview;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.app.FragmentActivity;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.example.week3.R;
import com.example.week3.mybean.MyMusicData;

import java.util.List;

public class myrecyclerview_yy extends RecyclerView.Adapter<MyHolder_yy> {
    private Context context;
    private List<MyMusicData> myMusicDatas;

    public myrecyclerview_yy(Context context, List<MyMusicData> myMusicDatas) {
        this.context = context;
        this.myMusicDatas = myMusicDatas;
    }

    @NonNull
    @Override
    public MyHolder_yy onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {

        View view= LayoutInflater.from(context).inflate(R.layout.item_layout_yy,null);
        MyHolder_yy myHolder_yy=new MyHolder_yy(view);
        return myHolder_yy;
    }

    @Override
    public void onBindViewHolder(@NonNull MyHolder_yy holder, int position) {

        holder.title_yy.setText(myMusicDatas.get(position).getTitle());
        holder.singer_yy.setText(myMusicDatas.get(position).getSinger());

    }

    @Override
    public int getItemCount() {
        return myMusicDatas.size();
    }
}

MyHolder——yy类:

package com.example.week3.recyclerview;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;

import com.example.week3.R;

class MyHolder_yy extends RecyclerView.ViewHolder {

    public TextView title_yy;
    public TextView singer_yy;

    public MyHolder_yy(View itemView) {
        super(itemView);

        title_yy=itemView.findViewById(R.id.title_yy);
        singer_yy=itemView.findViewById(R.id.singer_yy);

    }
}

猜你喜欢

转载自blog.csdn.net/LIXIAONA_1101/article/details/82666939