安卓基礎培訓結束了,自己隨便做了一個簡單的音樂播放器,第一個安卓小項目,先晒晒圖片~~~~
介面靈感來自,迅雷看看播放器,在安卓裡面播放音頻用到時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