日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

自制聯(lián)想i966手機(jī)音樂播放列表

i966電話可以支持播放MP3和WMA兩種格式的聲音文件,并且可以連接藍(lán)牙立體聲耳機(jī) ??墒牵恢a(chǎn)品設(shè)計(jì)的時候出于什么考慮,在音樂播放方面出了紕漏 。
我喜歡在鍛煉身體的時候,聽評書或者小說的音頻文件 。你知道,運(yùn)動的時候,最好就是帶著藍(lán)牙立體聲耳機(jī)——因?yàn)闆]有線的束縛很方便 。但是i966的播放器跟了我很大的打擊:
1、音頻播放器,不支持播放單個子目錄的音樂文件!這使得每次要在幾百個都放在music目錄下的音頻文件中尋找自己想要的那一個非常費(fèi)力 。
2、那好,你不是支持播放列表嗎?咱不怕麻煩建立播放列表!小說的音頻文件一般都會壓縮成比較小的WMA格式,可是發(fā)現(xiàn)建立播放列表的功能里面竟然無法增加wma文件!MP3文件也有見不到的 。(明顯是BUG) 。
【自制聯(lián)想i966手機(jī)音樂播放列表】3、咱不用播放器,在文件夾里面不是可以直接播放音頻文件嗎?咱不怕費(fèi)力,每次都找唄 。可是又發(fā)現(xiàn)了致命的毛?。涸谖募A中直接播放音頻文件竟然不支持藍(lán)牙耳機(jī)!每次聲音都是從揚(yáng)聲器中傳出來的(不知道設(shè)計(jì)的時候出于什么考慮?),最要命的是,文件夾中直接播放音頻使用的簡易播放器不能實(shí)現(xiàn)快進(jìn),在聽一集半小時的評書一半的時候,突然來個短信,整個就停了!你還要從頭開始再聽一次嘛?我完全瘋了!
真的就這么難嗎?
我想了幾種方案解決這個問題,首先可以肯定的是,我必須使用多媒體功能里面的音樂播放器,因?yàn)槲募A里面的簡易播放器實(shí)在沒法弄 。于是就要想辦法讓前者支持wma的播放列表 。否則,全都轉(zhuǎn)換為MP3文件,占用空間太大,而且選擇歌曲也忒不方便了?。ㄔ俦梢曇幌虏恢С植シ盼募A的設(shè)計(jì)?。?。所以我決定還是看看能不能自己生成播放列表,讓播放器支持我的需求!
一、首先要分析i966的播放列表 。
我建立了一個小的播放列表,發(fā)現(xiàn)是在手機(jī)內(nèi)存的音樂目錄下,產(chǎn)生一個叫做XXX.lst的文件 。于是傳到電腦上分析,一看,并非我想象的文本文件,是一個二進(jìn)制文件 。而且還是編碼過的 。通過列表中的幾個英文歌曲名,我經(jīng)過試驗(yàn),終于搞清楚的它的結(jié)構(gòu):每條歌曲名占152個字節(jié)固定長度,最前面2個字節(jié)是表示音樂存放的位置,01表示在手機(jī)內(nèi)存,02表示在存儲卡上面,在后面跟隨著是utf-8(ucs-2)編碼的歌曲名稱(一看就是高級語言用序列化寫的文件) 。文件結(jié)尾,跟一個文件結(jié)束符3E 。
二、實(shí)驗(yàn)
我必須驗(yàn)證一下設(shè)計(jì)師在設(shè)計(jì)播放列表的時候不支持WMA是忘了,還是真的另有原因!于是我在UltraEdit手工編輯了一個播放列表,帶有WMA文件的,傳到手機(jī)上實(shí)驗(yàn),支持得非常好!這下就放心了
三、寫程序!
知道了文件格式,寫程序就簡單了,我本來想寫一個Windows程序給大家共享,可后來想,這些明顯的問題,也許廠家下個版本的升級就會解決了 。就不費(fèi)勁了 。還是用perl寫命令行腳本好了 。好在perl語言對unicode支持得相當(dāng)好!我寫的源代碼就不全列出來了,其實(shí)就是讀一個編輯好的文件,然后轉(zhuǎn)成一條條的unicode二進(jìn)制文件保存起來 。其中轉(zhuǎn)換部分的代碼如下:
foreach $inline (@in_file)
{
chomp($inline);
@line = split(/,/ , $inline);
if($line[0] eq "1")
{
$mem = "x00x01";
}
else
{
$mem = "x00x02";
}
$songname = $line[1];
$songname = decode("gb2312",$songname);
$songname = encode("ucs-2",$songname);
$namelen = length($songname);
$zeronum = 152 - 2 - $namelen;
print OUT ($mem.$songname);
for($i=0;$i<$zeronum;$i)
{
print OUT ("x00");
}
print $inline."n";
}
print OUT ("x00x3E");

推薦閱讀