androdi Studio 51 mp3
发布日期:2021-06-24 15:21:33 浏览次数:4 分类:技术文章

本文共 11018 字,大约阅读时间需要 36 分钟。

第一步activity—main.xml
第二步item-local-music.xml
第三步 权限
第四步 package com.example.mymusic02;import androidx.appcompat.app.AppCompatActivity;import androidx.recyclerview.widget.LinearLayoutManager;import androidx.recyclerview.widget.RecyclerView;import android.content.ContentResolver;import android.database.Cursor;import android.media.MediaParser;import android.media.MediaPlayer;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;public class MainActivity extends AppCompatActivity implements OnClickListener {
ImageView nextIv,playIv,lastIv; TextView singerTv,songTv; RecyclerView musicRv; List
mDatas; private LocalMusicAdater adapter; private int position; int currnetPalyPosition=-1; int currentPausePositionInSong=0; MediaPlayer mediaPlayer; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); mediaPlayer=new MediaPlayer(); mDatas=new ArrayList<>();//z这里有两个选择 //创建适配器 adapter=new LocalMusicAdater(this,mDatas); musicRv.setAdapter(adapter); //s设置布局管理器 LinearLayoutManager layoutManager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); musicRv.setLayoutManager(layoutManager); //加载本地数据源 loadLocalMusicData(); //设置点击监听事件 setEventListener(); } private void setEventListener() {
adapter.setOnItemClickListener(new LocalMusicAdater.OnItemClickListener() {
@Override public void OnItemClick(View view, int position) {
currnetPalyPosition=position; LocalMusicBean musicBean=mDatas.get(position); playMusicInMusicBean(musicBean); } }); } public void playMusicInMusicBean(LocalMusicBean musicBean) {
//she设置歌曲名 歌手名字 singerTv.setText(musicBean.getSinger()); songTv.setText(musicBean.getSong()); stopMusic(); //chongz重置多媒体播放器 mediaPlayer.reset(); try {
mediaPlayer.setDataSource(musicBean.getPath()); palyMusic(); } catch (IOException e) {
e.printStackTrace(); } } private void palyMusic() {
if(mediaPlayer!=null&&!mediaPlayer.isPlaying()){
if(currentPausePositionInSong==0){
try {
mediaPlayer.prepare(); mediaPlayer.start(); } catch (IOException e) {
e.printStackTrace(); } }else {
//zha站厅到 mediaPlayer.seekTo(currentPausePositionInSong); mediaPlayer.start(); } playIv.setImageResource(R.mipmap.icon_pause); } } private void pauseMusic() {
if(mediaPlayer!=null&&mediaPlayer.isPlaying()){
currentPausePositionInSong=mediaPlayer.getCurrentPosition(); mediaPlayer.pause(); playIv.setImageResource(R.mipmap.icon_play); } } private void stopMusic() {
if(mediaPlayer!=null){
currentPausePositionInSong=0; mediaPlayer.pause(); mediaPlayer.seekTo(0); mediaPlayer.stop(); playIv.setImageResource(R.mipmap.icon_play); } } @Override protected void onDestroy() {
super.onDestroy(); stopMusic(); } private void loadLocalMusicData() {
//加载本地Mp3 文件 // 获取contentResolver对象 ContentResolver resolver=getContentResolver(); //获取本地音乐存储urid Uri uri= MediaStore.Audio.Media.EXTERNAL_CONTENT_URI; Cursor cursor=resolver.query(uri,null,null,null,null); int id=0; while(cursor.moveToNext()){
String song = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)); String singer=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST)); String album=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM)); id++; String sid=String.valueOf(id); String path=cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA)); long duration=cursor.getLong(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION)); SimpleDateFormat sdf=new SimpleDateFormat("mm:ss"); String time = sdf.format(new Date(duration)); LocalMusicBean bean=new LocalMusicBean(sid,song,singer,album,time,path); mDatas.add(bean); } adapter.notifyDataSetChanged(); } private void initView() {
nextIv=findViewById(R.id.local_music_bottom_iv_next); playIv=findViewById(R.id.local_music_bottom_iv_play); lastIv=findViewById(R.id.local_music_bottom_iv_last); singerTv=findViewById(R.id.local_music_bottom_tv_singer); songTv=findViewById(R.id.local_music_bottom_tv_song); musicRv=findViewById(R.id.local_music_rv); nextIv.setOnClickListener(this); lastIv.setOnClickListener(this); playIv.setOnClickListener(this); } @Override public void onClick(View view) {
switch (view.getId()){
case R.id.local_music_bottom_iv_last: if(currnetPalyPosition==0){
Toast.makeText(this,"已经是第一首歌曲。",Toast.LENGTH_SHORT).show(); } currnetPalyPosition=currnetPalyPosition-1; LocalMusicBean lastBean=mDatas.get(currnetPalyPosition); playMusicInMusicBean(lastBean); break; case R.id.local_music_bottom_iv_next: if(currnetPalyPosition==mDatas.size()-1){
Toast.makeText(this,"next Music...",Toast.LENGTH_SHORT).show(); } currnetPalyPosition=currnetPalyPosition+1; LocalMusicBean nextBean=mDatas.get(currnetPalyPosition); playMusicInMusicBean(nextBean); break; case R.id.local_music_bottom_iv_play: if(currnetPalyPosition==-1){
Toast.makeText(this, "last Music...", Toast.LENGTH_SHORT).show(); return; } if(mediaPlayer.isPlaying()){
pauseMusic(); }else {
palyMusic(); } break; } }}第五步LocalMusicAdater.javapackage com.example.mymusic02;import androidx.annotation.NonNull;import androidx.recyclerview.widget.RecyclerView;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;class LocalMusicAdater extends RecyclerView.Adapter
{
Context context; List
mDatas; OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener){
this.onItemClickListener=onItemClickListener; } public interface OnItemClickListener{
public void OnItemClick(View view,int position); } public LocalMusicAdater(Context context, List
mDatas) {
this.context = context; this.mDatas = mDatas; } @NonNull @Override public LocalMusicViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view= LayoutInflater.from(context).inflate(R.layout.item_local_music,parent,false); LocalMusicViewHolder holder=new LocalMusicViewHolder(view); return holder; } @Override public void onBindViewHolder(@NonNull LocalMusicViewHolder holder, final int position) {
LocalMusicBean musicBean=mDatas.get(position); holder.idTv.setText(musicBean.getId()); holder.songTv.setText(musicBean.getSong()); holder.singerTv.setText(musicBean.getSinger()); holder.albumTv.setText(musicBean.getAlbum()); holder.timeTv.setText(musicBean.getDuration()); holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View view) {
onItemClickListener.OnItemClick(view,position); } }); } @Override public int getItemCount() {
return mDatas.size(); } class LocalMusicViewHolder extends RecyclerView.ViewHolder{
TextView idTv,songTv,singerTv,albumTv,timeTv; public LocalMusicViewHolder(@NonNull View itemView) {
super(itemView); idTv=itemView.findViewById(R.id.item_local_music_num); songTv=itemView.findViewById(R.id.item_local_music_song); singerTv=itemView.findViewById(R.id.item_local_music_singer); albumTv=itemView.findViewById(R.id.item_local_music_album); timeTv=itemView.findViewById(R.id.item_local_music_durtion); } }}第六步 LocalMusicBean.javapackage com.example.mymusic02;public class LocalMusicBean {
private String id; private String song; private String singer; private String album; private String duration; private String path; public LocalMusicBean() {
} public LocalMusicBean(String id, String song, String singer, String album, String duration, String path) {
this.id = id; this.song = song; this.singer = singer; this.album = album; this.duration = duration; this.path = path; } public String getId() {
return id; } public void setId(String id) {
this.id = id; } public String getSong() {
return song; } public void setSong(String song) {
this.song = song; } public String getSinger() {
return singer; } public void setSinger(String singer) {
this.singer = singer; } public String getAlbum() {
return album; } public void setAlbum(String album) {
this.album = album; } public String getDuration() {
return duration; } public void setDuration(String duration) {
this.duration = duration; } public String getPath() {
return path; } public void setPath(String path) {
this.path = path; } ![请添加图片描述](https://img-blog.csdnimg.cn/20200807023411442.png)

4444请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

转载地址:https://blog.csdn.net/weixin_33595571/article/details/107852230 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android studio 52 mp3下载客户端001
下一篇:android studio 50

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月08日 05时32分33秒