Sealyu

          --- 博客已遷移至: http://www.sealyu.com/blog

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

          The iPhone SDK’s AVFoundation framework includes AVAudioPlayer, an easy, feature rich, Objective-C based way of playing audio files.

          This tutorial demonstrates how to use AVAudioPlayer. When you’ve finished the tutorial you’ll have created a simple app that plays an MP3 audio file in a loop when the app starts.

          Source/Github

          The code for this tutorial is available on GitHub. You can either clone the repository or download this zip.

          Creating The Project

          Launch Xcode and create a new View-Based iPhone application called AudioPlayer:

          1. Create a new project using File > New Project… from Xcode’s menu
          2. Select View-based Application from the iPhone OS > Application section, click Choose…
          3. Name the project as AudioPlayer and click Save

          Adding The AVFoundation Framework

          In order to use the SDK’s AVAudioPlayer class, we’ll need to add the AVFoundation framework to the project:

          1. Expand the Targets branch in the Groups & Files panel of the project
          2. Control-click or right-click the AudioPlayer item
          3. Choose Add > Existing Frameworks…
          4. Click the + button at the bottom left beneath Linked Libraries
          5. Choose AVFoundation.framework and click Add
          6. AVFoundation.framework will now be listed under Linked Libraries. Close the window

          Next, we’ll import the AVFoundation headers in our view controller’s interface file and set up an AVAudioPlayer instance variable:

          1. Expand the AudioPlayer project branch in the Groups & Files panel of the project
          2. Expand the Classes folder
          3. Edit AudioPlayerViewController.h by selecting it
          4. Update the file. Changes are bold:

          #import <UIKit/UIKit.h>
          #import <AVFoundation/AVFoundation.h>
          @interface AudioPlayerViewController : UIViewController {
          AVAudioPlayer *audioPlayer;
          }
          @end
          

          Adding An Audio File

          We’ll need an audio file for playback. We’ll, unimaginatively, call the fille audiofile.mp3. Add it to the project:

          1. Control-click or right click on the Resources folder in the Groups & Files panel of the project
          2. Select Add > Existing Files… from the context menu
          3. Locate and select the file for import and click Add
          4. Check the Copy items into destination group’s folder (if needed) box and click Add

          Starting Audio Playback

          We’ll start the audio playback in ViewDidLoad:

          1. Uncomment the boilerplate ViewDidLoad method
          2. Update it as follows. Changes are bold:

          - (void)viewDidLoad {
          [super viewDidLoad];
          NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/audiofile.mp3", [[NSBundle mainBundle] resourcePath]]];
          NSError *error;
          audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
          audioPlayer.numberOfLoops = -1;
          if (audioPlayer == nil)
          NSLog([error description]);
          else
          [audioPlayer play];
          }
          

          AVAudioPlayer is initialized with a URL, so we create one whose path points to the audio file in our on-the-phone resources directory. Setting the audio player’s numberOfLoops property to a negative number causes it to loop indefinitely. After configuring the player, we start the playback by sending the play message to the object.

          Remember to release the audioPlayer in dealloc. Changes are bold:

          - (void)dealloc {
          [audioPlayer release];
          [super dealloc];
          }
          

          More Capabilities

          You can adjust the volume of the player, check/set the time played so far and pause or stop playback:

          audioPlayer.volume = 0.5; // 0.0 - no volume; 1.0 full volume
          NSLog(@"%f seconds played so far", audioPlayer.currentTime);
          audioPlayer.currentTime = 10; // jump to the 10 second mark
          [audioPlayer pause];
          [audioPlayer stop]; // Does not reset currentTime; sending play resumes
          

          Finally, you can implement the AVAudioPlayerDelegate protocol to, among other things, be notified when audio finishes playing — perhaps to move onto the next song in a playlist.

          posted on 2010-10-01 21:29 seal 閱讀(381) 評論(0)  編輯  收藏 所屬分類: iPhone
          主站蜘蛛池模板: 白河县| 阿克陶县| 水城县| 江华| 宁武县| 石渠县| 嘉荫县| 健康| 双桥区| 浮山县| 纳雍县| 隆林| 巴楚县| 灵武市| 锡林郭勒盟| 新邵县| 钟祥市| 富顺县| 汝阳县| 汉寿县| 尤溪县| 达拉特旗| 望奎县| 黄骅市| 香格里拉县| 延川县| 郑州市| 镇江市| 蒙山县| 明溪县| 广南县| 石楼县| 监利县| 福泉市| 徐水县| 调兵山市| 德保县| 仁化县| 申扎县| 南澳县| 全南县|