首先使用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 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 {
private Context context;
private List myMusicDatas;
public myrecyclerview_yy(Context context, List 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);
}
}