1- 音頻
[1] 音樂往往是存儲在iPod曲庫(注意位置)中的,可以通過媒體選擇器(media picker)或者媒體查詢(media query)讀取,然後用音樂播放器MPMusicPlayerController播放。
1. MPMusicPlayerController *musicPlayer = [MPMusicPlayerController applicationMusicPlayer];
2. [musicPlayer setShufleMode: MPMusicShuffleModeSongs];
3. [musicPlayer setRepeatMode: MPMusicRepeatModeAll];
4. [musicPlayer setQueueWithQuery: [MPMediaQuery songsQuery];
5. [musicPlayer play];
applicationMusicPlayer返回的播放器,在你的應用中播放音樂。它不會影響到iPod播放器,也不能從iPod播放器重獲取信息。
iPodMusicPlayer返回的是iPod播放器,在你推出應用後,所有的設置都會影響到之後設備上的iPod播放器。
獲得音樂播放器後,需要爲它設置一個播放隊列。可以用setQueueWithQuery:放方法,通過媒體查詢MPMediaQuery來設置 播放隊列,也可以用setQueueWithItemCollection:方法,通過MPMdiaItemCollection來設置播放隊列。
重複模式repeatMode可以設置爲不重複、重複當前曲目、或整個播放列表;亂序播放shuffleMode可以設置爲不亂序、亂序播放曲目或亂序播放專輯;音量volume的設置與音頻播放器一樣。
skipToNextItem跳到下一首,skipToPreviousItem跳到上一首,skipToBegin跳到第一首。
對應的宏都是以MPMusic開頭。
[2] 利用系統聲音服務來播放短暫音效(時長30秒以內),並震動:
1. AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
播放指定音效:
1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO];
2. // 創建音效ID
3. SystemSoundID soundID;
4. AudioServiceCreateSystemSoundID((CFURLRef) fileURL, &soundID);
5. // 播放聲音
6. AudioServicesPlaySystemSound(soundID);
[3] 音頻播放器
沒有時長限制
1. NSURL *fileURL = [NSURL fileURLWithPath: path isDirectory: NO];
2. // 用URL來初始化音頻播放器-播放的不是iPod曲庫中的音樂
3. AVAudioPlayer* player = [AVAudioPlayer alloc] initWithContentsOfURL: fileURL error: NO];
4. // 準備播放
5. [player prepareToPlay];
6. // 設置代理
7. [player setDelegate: self];
方法:play、pause、stop。可以通過playing屬性查詢播放器是否正在播放當中,可以通過volume屬性來修改和查詢播放器的播放增益(從0.0到1.0),可通過setting屬性查詢播放器其他設置。
duration表示音頻的時間長度, currentTime表示當前播放到的時間。播放結束後可以通過代理方法audioPlayerDidFinishPlaying:來處理播放後設置。
2- 視頻
視頻播放可以採用網頁視圖(UIWebView)進行嵌入式播放(能播放YouTube視頻),或者採用電影播放器(MPMoviePlayerController)進行播放。
[1] 電影播放器
1. MPMoviePlayerController *player = [MPMoviePlayerController alloc]initWithContentURL: url];
2. // 設置播放器的大小,並將其加入視圖中
3. [player.view setFrame: rectFrame];
4. [self.view addSubView: player.view];
5. 播放器的背景視圖backgroundView。
6. 全屏[player setFullscreen: YES animated: YES];
7. 播放另一個影片[player setContentURL: newURL];
8. [player requestThumbnailImagesAtTimes:arrayTimes timeOption:MPMovieTimeOptionNearestKeyFrame]; // 表示播放器不會在你所指定的時間去截取預覽,而是在絕對時間的附近幾幀中尋找效果最好的幀做爲預覽。
scalingMode規定了影片的縮放模式。
initialPlaybackTime用來控制視頻開始播放的時間,單位是秒。
如果視頻源在網絡上,那麼需要正確設置服務器端的mimeType。