WAP手機(jī)網(wǎng)站 手機(jī)下載 手機(jī)軟件 手機(jī)游戲 手機(jī)網(wǎng)游 手機(jī)主題 手機(jī)圖片 手機(jī)鈴聲 手機(jī)世界微博
手機(jī)游戲攻略

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

ad209 3533手機(jī)世界 2008-3-1

    i966電話可以支持播放MP3和WMA兩種格式的聲音文件,并且可以連接藍(lán)牙立體聲耳機(jī)?墒,不知產(chǎn)品設(shè)計的時候出于什么考慮,在音樂播放方面出了紕漏。

    我喜歡在鍛煉身體的時候,聽評書或者小說的音頻文件。你知道,運(yùn)動的時候,最好就是帶著藍(lán)牙立體聲耳機(jī)——因?yàn)闆]有線的束縛很方便。但是i966的播放器跟了我很大的打擊:

    1、音頻播放器,不支持播放單個子目錄的音樂文件!這使得每次要在幾百個都放在music目錄下的音頻文件中尋找自己想要的那一個非常費(fèi)力。

    2、那好,你不是支持播放列表嗎?咱不怕麻煩建立播放列表!小說的音頻文件一般都會壓縮成比較小的WMA格式,可是發(fā)現(xiàn)建立播放列表的功能里面竟然無法增加wma文件!MP3文件也有見不到的。(明顯是BUG)。

    3、咱不用播放器,在文件夾里面不是可以直接播放音頻文件嗎?咱不怕費(fèi)力,每次都找唄?墒怯职l(fā)現(xiàn)了致命的毛。涸谖募䦅A中直接播放音頻文件竟然不支持藍(lán)牙耳機(jī)!每次聲音都是從揚(yáng)聲器中傳出來的(不知道設(shè)計的時候出于什么考慮?),最要命的是,文件夾中直接播放音頻使用的簡易播放器不能實(shí)現(xiàn)快進(jìn),在聽一集半小時的評書一半的時候,突然來個短信,整個就停了!你還要從頭開始再聽一次嘛?我完全瘋了!
真的就這么難嗎?

    我想了幾種方案解決這個問題,首先可以肯定的是,我必須使用多媒體功能里面的音樂播放器,因?yàn)槲募䦅A里面的簡易播放器實(shí)在沒法弄。于是就要想辦法讓前者支持wma的播放列表。否則,全都轉(zhuǎn)換為MP3文件,占用空間太大,而且選擇歌曲也忒不方便了!(再鄙視一下不支持播放文件夾的設(shè)計。。所以我決定還是看看能不能自己生成播放列表,讓播放器支持我的需求!

    一、首先要分析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è)計師在設(shè)計播放列表的時候不支持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 = "\x00\x01";
  }
  else
  {
   $mem = "\x00\x02";
  }
  $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 ("\x00\x3E");
 close(OUT);
我這個程序具體用法是這樣的:用記事本編寫一個文本文件:每一行代表一個曲目,前面是1或者2,表示存儲位置,1是手機(jī)內(nèi)存,2是存儲卡。隔一個逗號,接下來是音頻文件名?雌饋硐襁@樣子:
2,邪兵譜 (01).wma
2,邪兵譜 (02).wma
2,邪兵譜 (03).wma
2,邪兵譜 (04).wma
2,邪兵譜 (05).wma
2,邪兵譜 (06).wma
2,邪兵譜 (07).wma
2,邪兵譜 (08).wma
。。。
存成“邪兵譜”文本文件,最好不要擴(kuò)展名。
然后運(yùn)行程序:
開始-》運(yùn)行-》cmd進(jìn)入DOS窗口
C:\Documents and Settings\My Documents\>perl playlist.pl 邪兵譜
Create a playlist for lenovo i966 phone
(c)200802 by XXX
2,邪兵譜 (01).wma
2,邪兵譜 (02).wma
2,邪兵譜 (03).wma
2,邪兵譜 (04).wma
2,邪兵譜 (05).wma
2,邪兵譜 (06).wma
2,邪兵譜 (07).wma
2,邪兵譜 (08).wma
Output to : 邪兵譜.lst
C:\C:\Documents and Settings\My Documents\>

    然后把生成的邪兵譜.lst文件傳到手機(jī)內(nèi)存的music文件夾下面即可。進(jìn)入播放器,按選項選擇播放列表,哈哈!全都有呢!這下子再也不怕聽著聽著半截來短信了!因?yàn)檫@個播放器支持后臺播放和自動恢復(fù)功能!

    我們可以在電腦上準(zhǔn)備好大量音樂文件,使用"dir > XXX.txt"管道命令可以很方便的生成播放列表輸入文件,經(jīng)過簡單編輯就可以轉(zhuǎn)換了,但是要注意,文件名要跟實(shí)際手機(jī)上的一樣啊。


 

手機(jī)資訊


手機(jī)資訊
低端手機(jī)哪個好 1000元左右智能手機(jī)推薦
720P視頻連播14小時 摩托羅拉XT910 MAXX評測
4.3英寸已成主流 超人氣大屏手機(jī)推薦
經(jīng)典游戲重現(xiàn)江湖 一周Android游戲推薦
電信定制售價1999元 HTC新渴望VC上市
三星五一全國促銷 熱門手機(jī)選購?fù)扑]
不搶風(fēng)頭不算好手機(jī)?HTC Titan II解析
1.4GHz四核+2050mAh 三星GALAXY SIII現(xiàn)身
拍出新花樣 800萬智能手機(jī)+拍照軟件推薦
雙核智能+投影 三星Galaxy Beam預(yù)售4350



手機(jī)資訊
專業(yè)拍照音樂手機(jī) 聯(lián)想i966僅售1099元
320萬像素僅980 聯(lián)想I966超低價促銷
對聯(lián)想i966手機(jī)的個人評價
來款牛機(jī)拍圣火 聯(lián)想I966僅1250元
給打算買i966、i968手機(jī)的人的忠告
寫給想買聯(lián)想i966的朋友們
對比聯(lián)想i966與諾基亞6120c
聯(lián)想i966草根版使用報
聯(lián)想966我最贊賞的功能
聯(lián)想 i966 使用一周年報告
手機(jī)論壇


  諾基亞手機(jī) 蘋果手機(jī) HTC手機(jī) 三星手機(jī) 摩托羅拉手機(jī) 索愛手機(jī)