【正文】
undation框架和用于圖形化界面開發(fā)的 AppKit 框架。 (int) numerator。 ObjectiveC 和 C++的對象模型和層次結(jié)構(gòu)是截然不同相互獨立的。 ObjectiveC 和 C++不同,它 不包括命名空間機(jī)制 ( namespace mechanism) 。 首先 總體介紹蘋果的開發(fā)平臺Objective C 和 Cocoa 框架,然后詳細(xì)說明了系統(tǒng)實現(xiàn)的技術(shù)關(guān)鍵 ,最后說明了8 設(shè)計本系統(tǒng)需要的硬件和軟件支持。命令行構(gòu)建 工具也一應(yīng)俱全,包括 makefile、 gdb debugger、分析工具、性能調(diào)試工具、源代碼管理工具和其他許多編程工具。蘋果的核心技術(shù) core technology 包括了 Core Image、Core Video、 Core Audio 和 Core Animation 都為不同類型的媒體提供先進(jìn)的操作支持。 表 1 Mac OS X 和 Windows 比較 項目 Windows Mac 操作系統(tǒng)最新版本 Windows 7 Mac OS X 操作系統(tǒng)核心 NT Kernel XNU CLI shell環(huán)境 UNIX shell GUI(shell環(huán)境 ) Windows Explorer Aqua(Finder) 用來辨認(rèn)軟件組織的方式 GUID Bundle identify 廠商提供的開發(fā)環(huán)境 Visual Studo Xcode 可視化的 GUI 制作工具 Visual Sudio 內(nèi)建的WinForm designer Interface Builder C 編譯工具 Microsoft C Compiler GCC 操作系統(tǒng)服務(wù) WIN 32 API 從 POSIX layer用 std c/c++取用 6 續(xù)表 1 項目 Windows Mac 系統(tǒng)核心服務(wù) WIN 32 API CoreFoundation/CoreServices 面向?qū)ο蟮?API .NET Framework/MFC Cocoa 桌面 應(yīng)用程序的數(shù)據(jù)庫方案 ODBC/ AppKit 和 Cocoa Graphics 基本繪圖系統(tǒng)使用的單位 Pixel( GDI) Point(Quartz) 主要開發(fā) 語言 C/C++/C Objective –C/C++, C/C++ 系統(tǒng)內(nèi)部編碼 Unicode (UTF16) Unicode(文件系統(tǒng)使用UTF8,系統(tǒng) API 使用CFString/NSString,內(nèi)部使用UTF16) 應(yīng)用程序的設(shè)定管理方式 Windows registry Property list files 腳本語言支持 VBScript/JScript/CScript/DOS Batch script AppleScript/perl/Ruby/shell script/Python 數(shù)據(jù)結(jié)構(gòu)與容器 NSArray/NSDictonary/etc 背景 和意義 近幾年蘋果公司再度崛起,強(qiáng)勢回歸。而在 UNIX層之下的微核心也和其他 UNIX不同。而 在 Windows 上,必須加裝 Cygwin之類的環(huán)境才能辦到。 iMac 和 iPod 現(xiàn)在早已成為蘋果公司的傳奇產(chǎn)品。 現(xiàn)在最新一代的 Mac OS X Lion 4 雄獅的系統(tǒng)也正在測試階段,預(yù)計今夏將推出正式版本。 1999 年 10月 23 日蘋果發(fā)布了 Mac OS 9 是 Mac OS 的改進(jìn)版本 。 從 1984 年 System 開始,到 1987 年的 system ,是蘋果早期的系統(tǒng)。 霍夫曼編碼是一種常見的無失真壓縮方案。通過位儲存槽,將 CBR編碼的 MP3 音頻,在波形簡單時用較少的容量記錄,把多余的空間用于記錄復(fù)雜的波形,維持流量的大小,以達(dá)到近似于 VBR 編碼的效果。因為 MP3 的編碼方式是開放的,你可以在這個標(biāo)準(zhǔn)框架的基礎(chǔ)上自己選擇不同的聲學(xué)原理進(jìn)行壓縮處理,所以,很快由 Xing公司推出可變編碼率的壓縮方式( VBR)。 1990 年,一家成功開發(fā)了 MPEG1 的音頻研究機(jī)構(gòu),為他提供了一個研究小組。s Cocoa framework technology, the use of the development language is ObjectiveC. Cocoa is Apple provides a set of API, we pass one of the interfaces。 力求讓使用者得到舒心的體驗。 本系統(tǒng)就是在 Mac 平臺下開發(fā)的音樂播放系統(tǒng),能夠?qū)崿F(xiàn) MP3 ( MPEG Audio Layer 3 ) 播放器的日常需求。歌曲列表管理模塊主要實現(xiàn):顯示選中的歌曲、顯示正在播放的歌曲、歌曲列表的排序、歌曲隊列的添加、刪除、用鼠標(biāo)拖放歌曲到列表、移除播放列表。 color should not be too rich. It allows users to get fortable experience. The system has five modules, which control and play list management are the two core modules. Play control is mainly achieved: the music player, music pause, play mode control, on the one, next control, and music volume adjustment. Song list management module to achieve: Display the selected songs to show the currently playing song, song list is sorted, the song queues, add, delete, drag and drop songs to the list with the mouse, remove the playlist. For this system development, design is the basis, function is the key. Mainly to introduce the Mac platform and its associated development tools and technologies used. Function of the system description is also very detailed. Key words: Apple platform, MP3 Player, Cocoa 1 第 1 章 緒論 MP3技術(shù) 現(xiàn)狀 研究 隨著計算機(jī)和多媒體技術(shù)的不斷發(fā)展以及個人計算機(jī)的普及,各種各樣的媒體文件、媒體播放器層出不窮,而 MP3 格式以其體積小、音質(zhì)好的特點成為使用最為廣泛的音頻格式,得到了絕大多數(shù)軟件和硬件媒體播放器的支持。布蘭登堡敏銳意識到這是一個巨大市場,于圣誕節(jié)向德國政府申請專利。 最小聽覺門限判定是一種減少信息量的手段,可以將大部分記錄信息集中在人耳最敏感的 2~ 5kHz范圍,其余頻率則分配較少的容量記錄。 IS 在流量比較低時使用,利用人類聽覺系統(tǒng)對高頻信號相位分辨能力不強(qiáng)的特點,將音頻信號中的低頻分離出來合成單聲道信息,其余的高頻信息合成另一個單聲道信 息,并通過另外記錄高頻信號的位置信息來重建立體聲效果。 Mac OS 是首個在商用領(lǐng)域成功的圖形用戶界面。全體系統(tǒng)文件夾僅 216K。Mac OS X 使用基于 BSD Unix 的內(nèi)核,并帶來 Unix風(fēng)格的內(nèi)存管理和搶占式多任務(wù)處理 (preemptive multitasking)。當(dāng)現(xiàn)在它又回到我們大家的視線中來 的時候,它改變了世界 IT 行業(yè)的格局, 蘋果的三大產(chǎn)品分別深刻的改變了三類內(nèi)容市場 ——iPod 之于音樂市場、 iPhone 之于應(yīng)用市場、 iPad之于電子書市場。 蘋果系統(tǒng)與 WINDOWS系統(tǒng)的區(qū)別 Mac OS X 與 Windows 在架構(gòu)與開發(fā)環(huán)境上最大的不同點在于: Mac OS X基于 UNIX; Mac OS X 主要開發(fā)工具 Xcode 使用 GCC 作為編譯程序,與其他種類的 UNIX 相同;不過 Mac OS X 也有獨樹一格的 ―bundle‖軟件包裝格式這樣的東西,成為它與其他操作系統(tǒng)不同之處。舉例來說, Apple 不像微軟,沒有自己的 C 語言編譯工具, Apple用的是 UNIX 業(yè)界的標(biāo)準(zhǔn) ─ open source 的 GCC(其中當(dāng)然有不少 OS X 的擴(kuò)展功能就是)。簡單來說,就是由操作系統(tǒng)提供一種類似對象封裝的文件包裹。尤其在歐洲和北美,蘋果的市場需求量之大讓人感到不可思議。各種環(huán)境的設(shè)計是為了讓熟悉某一種環(huán)境的開發(fā)人員能夠有施展的平臺。 系統(tǒng)包括本地音樂管理、播放控制、歌曲列表管理、歌曲信息管理和底層支持五大模塊。 9 第 2 章 關(guān)鍵技術(shù) Objective – C 特點 ObjectiveC,是 C 的衍生體,繼承了所有 C 語言的特性 , 但是它們不是繼承于 C 的語言特性本身。 和 C++不同, ObjectiveC 不支援運(yùn)算子多載(它不支持 adhoc 多型)。 10 下面是一個 ObjectiveC 程序的典型結(jié)構(gòu) : import Foundation/ interface Fraction: NSObject { int numerator。 synthesize denominator。 是Foundation的頭文件,一旦引入了這個頭文件,我們就可以在自己的程序里使用任何在 Foundation里聲明的類。 Cocoa框架在 Mac OS 層次結(jié)構(gòu)中所處的位置如圖 21: 圖 21 Mac OS 層次模型 圖 Cocoa常用的設(shè)計模式 MVC 模式是進(jìn)行 Cocoa 開發(fā)時用的最多最廣泛的設(shè)計模式, M是 持有數(shù)據(jù)并定義數(shù)據(jù)的邏輯操作, V是 為用戶可視化的呈現(xiàn)對象, C 是 在模型和視圖之間起到中間人的角色。 通告是在對象執(zhí)行完成動作之后產(chǎn)生,而不是像 delegate 是在之前產(chǎn)生。委托對象只能有一個。和一般接口不同的是,不必事先分類中所有的方法 。 與 ID3V1 比較,ID3V2 包含了作者 、 作曲 、 專輯等信息,長度不固定,擴(kuò)展了 ID3V1 的信息量。 本地音樂管理需求 ,如圖 31: 圖 31 本地音樂管理用例圖 播放控制需求,如圖 32: 圖 32 播放控制用例圖 16 歌曲列表管理需求,如圖 33: 圖 33 歌曲列表管理用例圖 MP3播放器實現(xiàn)的主要功能 本系統(tǒng)主要有 5 大功能模塊, MP3 播放器的總體功能模塊圖如圖 34 所示: 圖 34 系統(tǒng)模塊 圖 本地音樂管理模塊實現(xiàn)的主要功能是:瀏覽本地文件夾,添加本地音樂 。 outlineView 不存儲自 己的數(shù)據(jù),所以它所顯示的數(shù)據(jù)都需要向它的dataSource 索取,它只負(fù)責(zé)檢索它的數(shù)據(jù)源然后顯示編輯其中的數(shù)據(jù)。 ( 4) – outlineView:objectValueForTableColumn:byItem: 這個方法實現(xiàn)的的是在 outlineView 特點的列顯示內(nèi)容。 開發(fā) 硬件支持 本系統(tǒng)的開發(fā)是 基于 一臺 裝有 Intel Core i3 主頻 GHz處理器 的 iMac。其它的選項還包括開發(fā)圖形圖像的 Quartz 應(yīng)用程序,基于控制臺的 Command Line Tool 程序。 如果要添加單個音樂文件 , 可以 直接 在 ―music‖文件夾下選中你所要添加 到播放列表 的音樂 。 點擊 ―播放 ‖圖標(biāo)按鈕可以實現(xiàn)音樂的播放,然后按鈕變成 ―暫停 ‖圖標(biāo),此時若點擊 ―暫停 ‖,歌曲的播放就會暫停。 } (IBAction)volumeUp:(id)sender { double newVolume。 并且還實現(xiàn)了從文件夾直接拖放音樂到播放列表的功能。 如果我們想從播放列表里移去一首歌,我們可以選中歌曲,然后選擇―Remove‖按鈕。 26 圖 4 6 列表管理 圖 4 7 列表右鍵菜單 在這里涉及到一個非常有難度的問題就是 ImageCell 按鈕的重繪,如圖 47,當(dāng)我們播放某一首歌曲時 ,在歌曲的前面有一個播放的標(biāo)志按鈕, 在我們把歌曲添加到隊列時會顯示一個 ―+‖, 這 兩 個按鈕 圖標(biāo) 是我們用代碼畫上去的,具體的實現(xiàn)在 ImageTextCell 文件里。cellFrame,3 + , NSMinXEdge)。 } [super drawWithFrame:cellFrame inView:controlView]。 else 使用默認(rèn)空白背景作為專輯圖片 。今后的工作主要體現(xiàn)在以下幾個方面: (1) 在播放音樂時,播放列表里會顯示一個播放的三角圖標(biāo),但是當(dāng)我按下 ―暫停 ‖的按鈕之后,播放的圖標(biāo)沒有動態(tài)變成暫停的圖標(biāo)