• 简单的安卓音乐播放器


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

    界面灵感来自,迅雷看看播放器,在安卓里面播放音频用到时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

     

  • 相关阅读:
    ubuntu十年
    国内开源镜像站
    vi 配置文件
    如何查看Linux命令源代码
    gedit乱码问题的解决
    Linux启动项修复
    我写新年愿望
    SEGGER J-Link 弹窗 在altium designer中禁用USBJATG
    线缆测试,手机端程序说明
    养兔场 网站上的个人介绍
  • 原文地址:https://www.cnblogs.com/Jaylong/p/android.html
Copyright © 2020-2023  润新知