溫馨提示×

溫馨提示×

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

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

AVAudioPlayer播放音樂文件及讀取ipod庫中的音樂文件

發(fā)布時間:2020-08-10 11:55:44 來源:網(wǎng)絡 閱讀:341 作者:劉軼薈 欄目:網(wǎng)絡安全



 

IOS學習:AVAudioPlayer播放音樂文件及讀取ipod庫中的音樂文件


首先要導入AVFoundation框架及


AVAudioPlayer播放音樂文件及讀取ipod庫中的音樂文件

下面是代碼,代碼中都有注釋:


[cpp] view plaincopy

  1. //  

  2. //  RootViewController.h  

  3. //  SoundDemo  

  4. //  

  5. //  Created by on 13-6-21.  

  6. //  Copyright (c) 2013年 DoubleMan. All rights reserved.  

  7. //  

  8.   

  9. #import <UIKit/UIKit.h>  

  10. #import <AVFoundation/AVFoundation.h>  

  11. #import <MediaPlayer/MediaPlayer.h>  

  12.   

  13. @interface RootViewController : UIViewController <AVAudioPlayerDelegate>  

  14. {  

  15.     AVAudioPlayer *player;  

  16. }  

  17.   

  18. @property (nonatomic, retain) AVAudioPlayer *player;  

  19. @property (nonatomic, retain) UISlider *slider;  

  20. @property (nonatomic, retain) NSTimer *timer;  

  21.   

  22. @end  


[cpp] view plaincopy

  1. //  

  2. //  RootViewController.m  

  3. //  SoundDemo  

  4. //  

  5. //  Created by on 13-6-21.  

  6. //  Copyright (c) 2013年 DoubleMan. All rights reserved.  

  7. //  

  8.   

  9. #import "RootViewController.h"  

  10.   

  11. @interface RootViewController ()  

  12.   

  13. @end  

  14.   

  15. @implementation RootViewController  

  16.   

  17. @synthesize player;  

  18. @synthesize slider;  

  19. @synthesize timer;  

  20.   

  21. - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  

  22. {  

  23.     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  

  24.     if (self) {  

  25.         // Custom initialization  

  26.           

  27.           

  28.     }  

  29.     return self;  

  30. }  

  31.   

  32. - (void)viewDidLoad  

  33. {  

  34.     [super viewDidLoad];  

  35.       

  36.     UIButton *musicPlay = [UIButton buttonWithType:UIButtonTypeRoundedRect];  

  37.     musicPlay.frame = CGRectMake(10, 10, 90, 35);  

  38.     [musicPlay setTitle:@"Play" forState:UIControlStateNormal];  

  39.     [musicPlay addTarget:self action:@selector(playMusic) forControlEvents:UIControlEventTouchUpInside];  

  40.     [self.view addSubview:musicPlay];  

  41.       

  42.     UIButton *pause = [UIButton buttonWithType:UIButtonTypeRoundedRect];  

  43.     pause.frame = CGRectMake(115, 10, 90, 35);  

  44.     [pause setTitle:@"Pause" forState:UIControlStateNormal];  

  45.     [pause addTarget:self action:@selector(pause) forControlEvents:UIControlEventTouchUpInside];  

  46.     [self.view addSubview:pause];  

  47.       

  48.     UIButton *stop = [UIButton buttonWithType:UIButtonTypeRoundedRect];  

  49.     stop.frame = CGRectMake(220, 10, 90, 35);  

  50.     [stop setTitle:@"stop" forState:UIControlStateNormal];  

  51.     [stop addTarget:self action:@selector(stop) forControlEvents:UIControlEventTouchUpInside];  

  52.     [self.view addSubview:stop];  

  53.       

  54.     slider = [[UISlider alloc] initWithFrame:CGRectMake(10, 65, 300, 20)];  

  55.     [slider addTarget:self action:@selector(sliderValueChange:) forControlEvents:UIControlEventValueChanged];  

  56.     [self.view addSubview:slider];  

  57.       

  58.     //   

  59.     NSString *path = [[NSBundle mainBundle] pathForResource:@"找一個相愛的理由-晨熙-艾歌" ofType:@"wav"];  

  60.     NSURL *url = [NSURL fileURLWithPath:path];  

  61.     player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];  

  62.     // 設置循環(huán)次數(shù),-1為一直循環(huán)  

  63.     player.numberOfLoops = -1;  

  64.     // 準備播放  

  65.     [player prepareToPlay];  

  66.     // 設置播放音量  

  67.     player.volume = 50;  

  68.     // 當前播放位置,即從currentTime處開始播放,相關于android里面的seekTo方法  

  69.     player.currentTime = 15;  

  70.     // 設置代理  

  71.     player.delegate = self;  

  72.     int dur = player.duration;  

  73.     slider.maximumValue = dur;  

  74.       

  75.     // 一秒一次更新播放進度  

  76.     timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(updateSlider) userInfo:nil repeats:YES];  

  77.       

  78.     // 從ipod庫中讀出音樂文件  

  79. //    MPMediaQuery *everything = [[MPMediaQuery alloc] init];  

  80. //    // 讀取條件  

  81. //    MPMediaPropertyPredicate *albumNamePredicate =  

  82. //    [MPMediaPropertyPredicate predicateWithValue:[NSNumber numberWithInt:MPMediaTypeMusic ] forProperty: MPMediaItemPropertyMediaType];  

  83. //    [everything addFilterPredicate:albumNamePredicate];  

  84. //      

  85. //    NSLog(@"Logging items from a generic query...");  

  86. //    NSArray *itemsFromGenericQuery = [everything items];  

  87. //    for (MPMediaItem *song in itemsFromGenericQuery) {  

  88. //        NSString *songTitle = [song valueForProperty: MPMediaItemPropertyTitle];  

  89. //        NSLog (@"%@", songTitle);  

  90. //    }  

  91. //      

  92. //    [everything release];  

  93. }  

  94.   

  95. // 更新播放進度  

  96. - (void)updateSlider {  

  97.     slider.value = player.currentTime;  

  98. }  

  99.   

  100. // 進度滑塊變化時,跳轉到進度播放  

  101. - (void)sliderValueChange:(UISlider *)mSlider {  

  102.     player.currentTime = mSlider.value;  

  103.     NSLog(@"value: %.0f", mSlider.value);  

  104. }  

  105.   

  106. // 停止  

  107. - (void)stop {  

  108.     player.currentTime = 0;  

  109.     [player stop];  

  110. }  

  111.   

  112. // 暫停  

  113. - (void)pause {  

  114.     [player pause];  

  115.     NSLog(@"pause");  

  116. }  

  117.   

  118. // 開始播放  

  119. - (void)playMusic {  

  120.     NSLog(@"start play");  

  121.     [player play];  

  122. }  

  123.   

  124. #pragma mark - AVAudioPlayerDelegate  

  125. - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag {  

  126.     // 播放完成時調用   只有當播放結束時才會調用,循環(huán)播放時不會調  

  127.     [timer invalidate];  

  128.     NSLog(@"audioPlayerDidFinishPlaying");  

  129. }  

  130.   

  131. /* if an error occurs while decoding it will be reported to the delegate. */  

  132. - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error {  

  133.     // 解碼出錯時調用  

  134. }  

  135.   

  136. - (void)didReceiveMemoryWarning  

  137. {  

  138.     [super didReceiveMemoryWarning];  

  139.     // Dispose of any resources that can be recreated.  

  140. }  

  141.   

  142. - (void)dealloc  

  143. {  

  144.     [player stop];  

  145.     [player release];  

  146.     [slider release];  

  147.     [timer release];  

  148.     [super dealloc];  

  149. }  

  150.   

  151. @end  




  • 上一篇IOS學習:用UIWindow自定義AlertView(最基本代碼)

  • 下一篇IOS開發(fā)學習:MKMapView自定義CalloutView

  • 2


向AI問一下細節(jié)

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

AI