溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

音頻(4):iPod Library Access Programming Guide:About iPod Library Access

發(fā)布時間:2020-06-14 12:54:57 來源:網(wǎng)絡 閱讀:456 作者:三無青年 欄目:移動開發(fā)

About iPod Library Access

關于iPod庫訪問

iPod library access 是檢索和播放從設備的iPod庫中獲取的項目的iOS界面。iPod庫是設備上媒體項的集合。這些媒體項是用戶從iTunes上同步過來的。

如 圖 1-1 所示, 應用程序有兩種方式取得項目。媒體選擇器,顯示在左側(cè),是一個易于使用的、封裝的視圖控制器。它的行為類似一個iPod應用程序內(nèi)置的音樂選擇接口。 對于很多應用程序來說,這就足夠了。

如果你想要選擇器沒有提供的專業(yè)的訪問控制,則媒體查詢接口(顯示在圖的右下方)將提供。 它提供基于斷言的從設備iPod庫中獲取的項的說明。


圖 1-1  使用iPod庫訪問

如圖中應用程序的右側(cè)所示,你可以用這個API提供的播放器播放取得的媒體項。

如你所見,在這個API中這些類有兩種處理方式,通常的開發(fā)區(qū)域:數(shù)據(jù)庫訪問——找到媒體項用于播放——和音樂播放。然而,你不需要在兩個區(qū)域中利用專門的主題去直接使用這個API。iPod庫訪問為你做了這個“重任”。

舉個例子,你的全部音樂播放代碼只有一行——無論是播放DRM-encrypted AAC文件、來自于CD的蘋果無損格式、用iLBC編碼的博客、或是有聲書。系統(tǒng)自動設置緩存,選擇適當?shù)木帯痢痢?,并直接發(fā)送音頻到設備輸出硬件。

使用音樂播放器和媒體項目選擇器,你能夠?qū)崿F(xiàn)音樂的選擇和播放而無需去編寫任何代碼去訪問iPod庫。當你需要它的時候,數(shù)據(jù)庫訪問類會提供完整的查詢系統(tǒng),而當你不需要的時候,它則不會出現(xiàn)。

Note: iPod庫訪問僅適用于音頻媒體項目。不能播放iPod庫里的視頻博客、電影或是電視。


About Music Players

關于音樂播放器


你的應用程序使用音樂播放器就類似于最終用戶操作內(nèi)置的iPod應用程序。你能通過編程的方式進行播放、暫停、查找等。

音樂播放器的基礎和術(shù)語


音樂播放器 用來播放媒體項目的對象。它有一個播放隊列, 播放隊列是一個需播放媒體項的列表。媒體項可以是歌曲、博客,或者有聲書。

用戶從iTunes同步時獲取媒體項到設備中。在設備中,所有的媒體項被稱為iPod庫。

音樂播放器知道哪個項正在被播放或是被指定播放,并且知道項要被播放的時間軸上的位置。這些屬性的概要描述見 圖 1-2. (這個圖只是用于解釋。音樂播放器不提供用戶界面。)

圖 1-2  音樂播放器對象示意圖

現(xiàn)在播放 項有特別的狀態(tài)。例如,如果用戶在內(nèi)置的iPod應用程序上暫停一首歌, 然后啟動你的應用程序,你的音樂播放器能從相同的點繼續(xù)播放這個項目。

圍繞音樂播放器的附加屬性,使它具有高度的靈活性。如圖所示,音樂播放器具有模式、播放狀態(tài)和音量等屬性。

隨機播放模式重復播放模式 操作和內(nèi)置的iPod應用程序一樣。

播放狀態(tài) 是你從音頻播放系統(tǒng)想要得到的:播放、停止、暫停、快進、或快退。另外,你可以跳到下一個媒體項的開頭或是回到播放隊列的開頭。

音量 默認狀態(tài)下是滿值,并且可以設置任何的的值包括靜音。


你可以設置兩種風格的音樂播放器,這取決于你想讓應用程序達到何種目標。

應用程序音樂播放器 播放應用程序本地的音樂。 它不受、也不影響內(nèi)置的iPod應用程序。具體來說,你的音樂播放器具有不同的正在播放項、播放狀態(tài)和模式。當用戶退出應用程序的時候,音樂隨之停止。

iPod 音樂播放器,事實上,它采用的是內(nèi)置的iPod應用程序。當用戶退出應用程序時,音樂繼續(xù)播放。


最后,記住下面兩個關于使用音樂播放器的重要事項:

同一時間只能有一個音樂播放器運行。

音樂播放器只能在你的應用程序的主線程上使用。


你好,音樂播放器


這是一個極簡單的示例,hello world,這個示例演示了庫訪問和音樂播放。幾分鐘后,你將有一個能工作的音樂播放器。這個代碼排列了整個iPod庫并且在程序啟動后立即播放。

Note: 接下來的步驟你需要一個真機。因為虛擬機不提供iPod庫訪問。


1.創(chuàng)建一個新的Xcode項目,使用應用程序模板窗口創(chuàng)建一個新的項目。在項目窗口,添加 MediaPlayer 框架到框架組。 保存項目。

2.包含Media Player 框架的頭文件,AppDelegate.h 文件添加, #import <MediaPlayer/MediaPlayer.h>。

3.添加代碼創(chuàng)建一個音樂播放器, 分配要播放的音樂并開始播放。打開工程的 AppDelegate.m 實現(xiàn)文件。 在 applicationDidFinishLaunching: 代碼塊結(jié)束前, 添加三行如 代碼清單 1-1 所示的代碼.

代碼清單 1-1  極簡單的音樂播放器

// instantiate a music player

MPMusicPlayerController *myPlayer =

  [MPMusicPlayerController applicationMusicPlayer];

// assign a playback queue containing all media items on the device


[myPlayer setQueueWithQuery: [MPMediaQuery songsQuery]];

// start playing from the beginning of the queue
[myPlayer play];

現(xiàn)在,為你的開發(fā)設備配置恰當?shù)墓こ?,其中包括設置代碼代碼簽名身份(code-signing identity)和束標示符。同時確保設備中至少有一首歌在iPod庫中。構(gòu)建并運行項目。當應用程序在設備上啟動的時候,iPod庫中得第一首歌就開始播放。音樂播放器會一直播放iPod庫里面的個所有項目直到你退出應用程序。

About Music Player Change Notifications

關于音樂播放器改變的通知


想要保持對音樂播放器正在做的事進行跟蹤,你要注冊音樂播放器改變的通知。這對于確保應用程序的狀態(tài)和音樂播放器的狀態(tài)的協(xié)調(diào)至關重要。

舉個例子,下面是正常啟動音樂播放器的事件順序。注意,因為音樂播放器在它自己的線程上操作,所以在接收到相應的通知之前,你不能更新你的用戶界面。

1.用戶點擊播放按鈕。

2.應用程序調(diào)用音樂播放器進行播放。

3.音樂播放器開始播放,且發(fā)送一個回放狀態(tài)改變的通知。

4.應用程序接受這個通知,并且查詢播放器的狀態(tài),確認它是否真的在播放。

5.應用程序更新相應的用戶界面——或許是改變播放按鈕為暫停按鈕。


音樂播放器改變通知支持跟蹤播放狀態(tài)、正在播放的項目、和音樂播放器的播放音量。 “Using Media Playback” 解釋了如何使用它們。

Home Sharing and iPod Music Players

家庭共享和iPod音樂播放器


從iOS 4開始,內(nèi)置iPod和視頻應用程序能夠播放來自使用家庭共享庫中的媒體。然而,第三方應用程序使用Media Player 框架仍然只能訪問設備中的iPod庫。這意味著你的應用程序不能在你的用戶界面顯示家庭分享歌曲的標題。但是,當播放共享媒體時,其他播放信息——例如當前的播放時間和播放狀態(tài)——是顯示的。

About Media Items and the iPod Library

關于媒體項目和iPod庫

媒體項目——在iPod庫中的歌曲、有聲書、和播客——能擁有廣泛的元數(shù)據(jù)。你能使用這些元數(shù)據(jù)構(gòu)建查詢或是在用戶界面上創(chuàng)建有吸引力的媒體項顯示。圖 1-3 給你一個媒體項特性的例子。

圖 1-3  媒體項和它的一些元數(shù)據(jù)

所有媒體項元數(shù)據(jù)都是只讀的。然而,通過媒體項固有的ID值,你能夠聯(lián)合使用你所管理的應用程序的額外元數(shù)據(jù)。

如圖 1-3 所示的,一個項的元數(shù)據(jù)恩能夠包括多個類別的信息。所以被稱作一般屬性是那些能夠適用于所有媒體項的屬性。包括“標題”、“藝術(shù)家”、“插圖”等等。這些屬性的值通常不隨時間改變。

一個媒體項也能有用戶自定義屬性,例如評級和最后播放日期。這些屬性根據(jù)用戶的活動進行更新,就像在桌面上操作一樣。

The Media Item Picker

媒體項選擇器


用戶選擇音樂的最簡單方法是使用media item picker——一個全配制模式視圖控制器。它的用戶界面是類似于內(nèi)置iPod應用程序活躍時的界面,如 圖1-4 所示。

圖 1-4  媒體項選擇器的用戶界面

當用戶點擊完成時,一個你才實現(xiàn)的代理方法接收選擇的媒體項形成的列表,然后將選擇器視圖不顯示。

一定要知道,媒體項選擇器和內(nèi)置iPod應用程序之間的相似只是一種表面現(xiàn)象。使用iPod,用戶能夠構(gòu)建一個活躍的播放列表。這個播放列表的行為就像其他的播放列表。舉個例子,它出現(xiàn)在iPod應用程序播放列表選項卡上,且它在用戶改變或刪除它前它一直存在。

對于選擇器,是用戶指定的一個媒體項集合。這個集合沒有播放列表狀態(tài)。它在用戶退出應用程序后不會存在——除非你保存了它。在任何情況下,在選擇器的播放列表中兩個集合都不會被顯示。

Getting Media Items Programmatically

獲取媒體項的編程方式


如果媒體項選擇器沒有提供你想要的控制,你能夠使用API的數(shù)據(jù)庫訪問類。這些類是為了讓你創(chuàng)建任意復雜的查詢。例如,你能檢索得到所有在特定類型中標題包含有特定單詞或短語的歌曲。

使用編程方式訪問分兩步:

1.配置一個查詢。

2.查詢檢索到的匹配的媒體項。

媒體查詢 是對從設備的iPod庫中檢索到的項目,以及對這些項目進行如何安排的描述。它又兩個屬性需要配置。

過濾器 是對檢索內(nèi)容的描述。過濾器是可選的。當沒有過濾器的時候,查詢匹配整個iPod庫。

分組類型 一個可選的鍵,它指定檢索得到的媒體項的結(jié)合如何安排。


擴大一點說,過濾器能夠根據(jù)應用程序的需求而變得簡單或復雜。它由一個或多個媒體屬性斷言描述組成。 媒體屬性斷言 是一個邏輯條件語句,用來檢測每個媒體項。所得到的媒體項是當你調(diào)用查詢的時候,從iPod庫里檢索的滿足過濾器條件的項。

可選的分組類型指定的安排以及集合的排序是和每個集合中的媒體項排序是一樣的。舉個例子,使用“專輯”分組類型的結(jié)果,返回的是按專輯分組的媒體項,每個專輯的歌曲是按照追蹤的順序排序的。

圖 1-5 顯示了一個媒體查詢的配置和它在應用程序和iPod庫之間的位置。

圖 1-5  使用媒體查詢訪問設備的iPod庫

As the figure shows, a query can fetch items or collections.如圖所示,查詢可以取得項目或者集合。

當你請求項目時,查詢返回一個包括所有匹配過濾器的項目的集合。這些項目按照“自然”順序排列,意思是他們的排序和在iTunes上顯示的排序是一樣的。

當你請求一個集合時,媒體查詢不僅使用過濾器也使用分組類型。




About Collections and Playlists

關于集合和播放列表


媒體項集合 是一個媒體項目的數(shù)組。你通過訪問媒體查詢的collections屬性從設備的iPod庫獲取集合。返回值是一個集合的有序數(shù)組,每個集合都是查詢的分組類型的實例。

例如,你通過指派MPMediaGroupingAlbum 鍵指定一個“專輯”的分組類型到一個媒體查詢——那就是說這個查詢沒有過濾器。這個collections 屬性的值是包含整個iPod庫里所有的音頻按照專輯進行組織,每個集合就是一個專輯。 這個集合(專輯)按照字母進行排序。在每個集合中的這些歌(每個媒體項) 按照跟蹤號碼進行排列。圖 1-6 說明了這一點。

圖 1-6 從設備的iPod庫中獲取集合

在圖的底部你看到的是設備的iPod庫。In this illustrative case,在這個說明例子里,這個庫只有兩個音樂專輯,一個有七個跟蹤項,另一個有八個。這些項目是按照他們的“自然”順排列,就像在iTunes里出現(xiàn)的那樣。

在圖中間位置的上一點箭頭代表的是定義一個通用(無過濾器)查詢、應用程序“專輯”分組類型、和訪問查詢的collections屬性。

圖的頂部代表的是collections調(diào)用的結(jié)果。它是一個數(shù)組,它的元素是媒體項的數(shù)組。集合數(shù)組按照專輯名字排序。每個集合按照跟蹤(track)號碼排序。

你也可以構(gòu)建自己的集合。這是有用的,例如,管理用戶用媒體項選取器取得的選項。不過要注意,這個集合不是可變的。

播放列表 是一個特殊的媒體項排序集合。它又一些常規(guī)集合不具有的屬性,例如名字和持久的ID。播放列表是通過用戶在桌面創(chuàng)建的;在設備中他們是只讀的。

Using iPod Library Change Notifications

使用iPod庫改變通知


MPMediaLibrary 對象代表設備iPod庫的狀態(tài)。你能使用它來確保你的庫的儲存內(nèi)容是最新的。This is useful because a user may sync their device, changing the content of the iPod library, while your application is running.這非常有用,因為用戶可能會在當應用程序運行的時候同步他們的設備,改變iPod庫的內(nèi)容。

Mixing Your Own Sounds with iPod Library Sounds

用iPod庫的聲音混合你的私有聲音


Note: 想要用設備iPod庫中的聲音混合應用程序的聲音,你需要理解音頻會話、音頻會話類別、音頻硬件線路變化、和音頻中斷。學寫這些內(nèi)容,請參考 Audio Session Programming Guide。


你也需要理解你選擇的音頻格式會影響你的聲音在設備上的同時播放。詳見Core Audio Overview中的“Playing Multiple Sounds Simultaneously”。


音樂播放器自動的使用媒體播放音頻會話類別。如果應用程序使用音樂播放器且沒有別的聲音,你應該不必寫音頻會話代碼。具體來說,你不應該初始化、配置或者激活音頻會話。系統(tǒng)自動為音樂播放器處理播放、音頻硬件線路改變、和音頻中斷。

另一方面,用iPod庫的聲音混合應用程序的聲音,你需要配置和使用應用程序的音頻會話。使用環(huán)境類別(Ambient category)來支持混合。處理音頻中斷、音頻硬件線路改變、和音頻會話激活需參照Audio Session Programming Guide。用iPod聲音混合應用程序聲音的例子,詳見AddMusic。





向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI