简单的安卓音乐播放器

安卓基础培训结束了,自己随便做了一个简单的音乐播放器,第一个安卓小项目,先晒晒图片~~~~

界面灵感来自,迅雷看看播放器,在安卓里面播放音频用到时MediaPlayer类

比较复杂点的有音轨的控制,进度和音轨控制用到的是seekBar,自定义样式seekbar_img.xml代码如下:

 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        
android:id="@+android:id/background"
        android:drawable
="@drawable/bbar_bg"/>
    <item
        
android:id="@+android:id/progress"
        android:drawable
="@drawable/bbar"/>

</layer-list>

还有音轨的控制:

 

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        
android:id="@+android:id/background"
        android:drawable
="@drawable/bar_bg"/>
    <item
        
android:id="@+android:id/progress"
        android:drawable
="@drawable/bar"/>

</layer-list>

在实现歌词显示时有点复杂,不过仔细分析歌词文件,就能找到解决办法,歌词文件每句前面都有对应的时间,只要算出当前播放的时间,

然后判断是否匹配,如果匹配就用I/O操作将歌词文件中的对应的歌词读取出来

 

View Code
/**
     * 读取歌词文件
     
*/
    public static String read(File path, String filename)
    {
        StringBuilder sb = new StringBuilder();
        Set<String> lrcs = FileUtil.getLrcs(path);
        //获取歌词文件名
        String lrcfile=filename.substring(0,filename.indexOf("."));        
            try
            {                
                BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path+"/"+lrcfile+".lrc"),"GBK"));
                String con = "";
                while ((con = br.readLine()) != null)
                {
                    sb.append(con + "\n");
                }
                br.close();
            } catch (Exception e)
            {
                e.printStackTrace();
            }    
        return sb.toString();

    }

接下来就是换算时间了,将当前播放时间换算成时分秒,

 

View Code
public static String formatMS(int ms)
    {
        int s = ms / 1000;// 秒
        int m = s / 60;// 分
        int add = s % 60;// 秒    
        String con = "";
        if (add > 10 && m > 10)
            con = m + ":" + add;
        else if (add < 10 && m > 10)
            con = m + ":0" + add;
        else if (m < 10&& add < 10)
            con = "0" + m + ":0" + add;
        else if (m > 10 && add < 10)
            con = "" + m + ":0" + add;    
        else if (m < 10 &&  add > 10)
            con = "0" + m + ":" + add ;    
        return con;
    }

播放时用到一个子线程,用来跟踪播放进度,显示歌词进度,

 

// 子线程监听进度的改变
    private Runnable thread = new Runnable()
    {
        @Override
        public void run()
        {
            //更新视图
            updateTextView();
            //自动播放下一首
            playNext(true);
            //显示歌词
            showLrc();
            handler.postDelayed(thread, 1000);
        }
    };

简单介绍到这里,代码下载点击:

 /Files/Jaylong/安卓音乐播放器.zip

 

posted @ 2012-05-01 11:16  流星剑  阅读(10381)  评论(2编辑  收藏  举报