音乐播放器应用代码实现

这篇博客详细介绍了如何实现一个音乐播放器应用,包括从手机内存读取音乐并显示,点击播放、暂停、切换歌曲,以及进度条与音乐播放同步等功能。涉及的技术点涵盖读取手机内存工具类、音乐服务、常量类和UI活动。
摘要由CSDN通过智能技术生成

一、技术点

  1、从手机内存中读取出来并显示

   1.   从数据库中查询所有音乐数据,保存到List集合当中,List当中存放的是Mp3Info对象
   2.   定义一个List集合,把对象添加到工具类返回的对象List集合当中
   3.   通过定义一个musicAdapter,调用setAdpter方法,将list集合里面的数据数据显示到列表当中


  2、点击音乐列表的每一项,播放一个音乐。

      1.给每一个条目添加一个点击事件setOnItemClickListener

  3、音乐播放过程中,进度条随着音乐的进度动

          1.设置SeekBar 的监听事件 ,音乐播放时,seekBar跟着改变-
  

  4、点击播放,暂停,音乐停止播放,上一首,下一首,切换歌曲,第一首和最后一首给出提示

      1 ,当我们点击时播放音乐,然后一直播放直到我们点击了暂停的按钮,所以我们想到使用服务定义一个MusicSeriver


二,读取手机内存的工具类

            

package com.testopensourceapplication.Utils;




import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;


import com.testopensourceapplication.model.Mp3Info;


import java.util.ArrayList;
import java.util.List;


public class MediaUtil {
/**
* 用于从数据库中查询歌曲的信息,保存在List当中
*
* @return
*/
public static List<Mp3Info> getMp3Infos(Context context) {
Cursor cursor = context.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,
MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
List<Mp3Info> mp3Infos = new ArrayList<Mp3Info>();




for (int i = 0; i < cursor.getCount(); i++) {
cursor.moveToNext();
Mp3Info mp3Info = new Mp3Info();
long id = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media._ID));//音乐id
String title = cursor.getString((cursor
.getColumnIndex(MediaStore.Audio.Media.TITLE)));//音乐标题
String artist = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.ARTIST));//艺术家
long duration = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.DURATION));//时长
long size = cursor.getLong(cursor
.getColumnIndex(MediaStore.Audio.Media.SIZE));//文件大小
String url = cursor.getString(cursor
.getColumnIndex(MediaStore.Audio.Media.DATA));//文件路径
int isMusic = cursor.getInt(cursor
.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));//是否为音乐
if (isMusic != 0) { //只把音乐添加到集合当中


mp3Info.setId(id);
mp3Info.setTitle(title);
mp3Info.setArtist(artist);
mp3Info.setDuration(duration);
mp3Info.setSize(size);
mp3Info.setUrl(url);


mp3Infos.add(mp3Info);
}
}
return mp3Infos;
}




/**
* 格式化时间,将毫秒转换为分:秒格式
* @param time
* @return
*/
public static String formatTime(long time) {
String min = time / (1000 * 60) + "";
String sec = time % (1000 * 60) + "";
if (min.length() < 2) {
min = "0" + time / (1000 * 60) + "";
} else {
min = time / (1000 * 60) + "";
}
if (sec.length() == 4) {
sec = "0" + (time % (1000 * 60)) + "";
} else if (sec.length() == 3) {
sec = "00" + (time % (1000 * 60)) + "";
} else if (sec.length() == 2) {
sec = "000" + (time % (1000 * 60)) + "";
} else if (sec.length() == 1) {
sec = "0000" + (time % (1000 * 60)) + "";
}
return min + ":" + sec.trim().substring(0, 2);
}
}

      

3,Map3info.class

package com.testopensourceapplication.model;


public class Mp3Info {
public long id;//音乐id
public String title;//音乐标题
public String artist;//艺术家
public long duration; //时长
public long size ;//文件大小
public String url;//文件路径
public int  isMusic;//是否为音乐
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getArtist() {
return artist;
}
public void setArtist(String artist) {
this.artist = artist;
}


public long getDuration() {
return duration;
}
public void setDuration(long duration) {
this.duration = duration;
}
public long getSize() {
return size;
}
public void setSize(long size) {
this.size = size;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public int getIsMusic() {
return isMusic;
}
public void setIsMusic(int isMusic) {
this.isMusic = isMusic;
}


}



4 MusicService.class

package com.testopensourceapplication.Service;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.IBinder;

import com.testopensourceapplication.Utils.MusicConstant;
import com.testopensourceapplication.activity.MusicActivity;

import java.io.IOException;

public class MusicSeriver extends Service implements InmusicSeriver {

   MediaPlayer mediaplay;  //媒体播放器
   boolean isplaying = false; //是否在播放音乐的标志


   @Override
   public IBinder onBind(Intent intent) {
      // TODO Auto-generated method stub
      return null;
   }


   @Override
   public void onCreate() {
      // TODO Auto-generated method stub
      mediaplay =new MediaPlayer();

      super.onCreate();
   }



   
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值