簡單的安卓音樂播放器


安卓基礎培訓結束了,自己隨便做了一個簡單的音樂播放器,第一個安卓小項目,先曬曬圖片~~~~

界面靈感來自,迅雷看看播放器,在安卓里面播放音頻用到時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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM